svf-tools 1.0.890 → 1.0.892

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 (343) hide show
  1. package/SVF-doxygen/html/AbstractExecution_8cpp_source.html +451 -450
  2. package/SVF-doxygen/html/AbstractExecution_8h_source.html +11 -11
  3. package/SVF-doxygen/html/AccessPath_8cpp_source.html +150 -147
  4. package/SVF-doxygen/html/AccessPath_8h_source.html +6 -6
  5. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +426 -425
  7. package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +2 -2
  8. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/CppUtil_8cpp_source.html +4 -4
  11. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  12. package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/DDAClient_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/ICFGSimplification_8cpp_source.html +43 -44
  16. package/SVF-doxygen/html/ICFGWTO_8h_source.html +4 -4
  17. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +556 -556
  19. package/SVF-doxygen/html/LLVMModule_8h_source.html +15 -15
  20. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +552 -525
  21. package/SVF-doxygen/html/LLVMUtil_8h.html +2 -0
  22. package/SVF-doxygen/html/LLVMUtil_8h_source.html +55 -52
  23. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/ObjTypeInference_8cpp.html +1 -1
  29. package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
  30. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +828 -827
  32. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +20 -20
  33. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +7 -7
  34. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +1 -1
  35. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/SVFStatements_8h_source.html +1 -1
  38. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  40. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +9 -9
  43. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/WTO_8h.html +1 -0
  45. package/SVF-doxygen/html/WTO_8h_source.html +812 -811
  46. package/SVF-doxygen/html/ae_8cpp.html +46 -47
  47. package/SVF-doxygen/html/ae_8cpp_source.html +46 -47
  48. package/SVF-doxygen/html/classSVF_1_1AEAPI.html +432 -431
  49. package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +22 -22
  50. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +136 -133
  51. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  52. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  53. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  54. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  55. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  56. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  57. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  58. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  59. package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI.html +82 -81
  60. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +1 -1
  61. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  62. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  64. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  65. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  66. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  67. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  68. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  71. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  72. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +2 -2
  75. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  76. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  77. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +43 -44
  79. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  82. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +538 -538
  85. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  86. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  87. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  88. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  89. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
  90. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1MemObj.html +1 -1
  92. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  93. package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
  94. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  96. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  97. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
  98. package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
  99. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  100. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  101. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +792 -791
  102. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +8 -8
  103. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  104. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  105. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  106. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  107. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +8 -8
  108. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  109. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  110. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  111. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  112. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  113. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  114. package/SVF-doxygen/html/classSVF_1_1WTO.html +253 -253
  115. package/SVF-doxygen/html/classSVF_1_1WTOComponent.html +21 -21
  116. package/SVF-doxygen/html/classSVF_1_1WTOComponentVisitor.html +3 -3
  117. package/SVF-doxygen/html/classSVF_1_1WTOCycle.html +61 -61
  118. package/SVF-doxygen/html/classSVF_1_1WTOCycleDepth.html +115 -115
  119. package/SVF-doxygen/html/classSVF_1_1WTONode.html +31 -31
  120. package/SVF-doxygen/html/classSVF_1_1WTO_1_1WTOCycleDepthBuilder.html +31 -31
  121. package/SVF-doxygen/html/globals_vars.html +3 -3
  122. package/SVF-doxygen/html/globals_z.html +3 -3
  123. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +529 -483
  124. package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +2 -2
  125. package/SVF-doxygen/html/namespacemembers_func_r.html +3 -0
  126. package/SVF-doxygen/html/namespacemembers_r.html +3 -0
  127. package/SVF-doxygen/html/search/all_11.js +54 -53
  128. package/SVF-doxygen/html/search/all_12.js +570 -570
  129. package/SVF-doxygen/html/search/all_13.js +207 -207
  130. package/SVF-doxygen/html/search/all_14.js +70 -70
  131. package/SVF-doxygen/html/search/all_15.js +176 -176
  132. package/SVF-doxygen/html/search/all_16.js +77 -77
  133. package/SVF-doxygen/html/search/all_17.js +1 -1
  134. package/SVF-doxygen/html/search/all_18.js +1 -1
  135. package/SVF-doxygen/html/search/all_19.js +26 -26
  136. package/SVF-doxygen/html/search/all_1a.js +180 -180
  137. package/SVF-doxygen/html/search/classes_0.js +29 -29
  138. package/SVF-doxygen/html/search/classes_1.js +12 -12
  139. package/SVF-doxygen/html/search/classes_10.js +74 -74
  140. package/SVF-doxygen/html/search/classes_11.js +14 -14
  141. package/SVF-doxygen/html/search/classes_12.js +2 -2
  142. package/SVF-doxygen/html/search/classes_13.js +10 -10
  143. package/SVF-doxygen/html/search/classes_14.js +19 -19
  144. package/SVF-doxygen/html/search/classes_15.js +1 -1
  145. package/SVF-doxygen/html/search/classes_2.js +73 -73
  146. package/SVF-doxygen/html/search/classes_3.js +35 -35
  147. package/SVF-doxygen/html/search/classes_4.js +8 -8
  148. package/SVF-doxygen/html/search/classes_5.js +28 -28
  149. package/SVF-doxygen/html/search/classes_6.js +98 -98
  150. package/SVF-doxygen/html/search/classes_7.js +38 -38
  151. package/SVF-doxygen/html/search/classes_8.js +59 -59
  152. package/SVF-doxygen/html/search/classes_9.js +1 -1
  153. package/SVF-doxygen/html/search/classes_a.js +12 -12
  154. package/SVF-doxygen/html/search/classes_b.js +29 -29
  155. package/SVF-doxygen/html/search/classes_c.js +6 -6
  156. package/SVF-doxygen/html/search/classes_d.js +19 -19
  157. package/SVF-doxygen/html/search/classes_e.js +36 -36
  158. package/SVF-doxygen/html/search/classes_f.js +25 -25
  159. package/SVF-doxygen/html/search/defines_0.js +3 -3
  160. package/SVF-doxygen/html/search/defines_1.js +3 -3
  161. package/SVF-doxygen/html/search/defines_10.js +2 -2
  162. package/SVF-doxygen/html/search/defines_2.js +30 -30
  163. package/SVF-doxygen/html/search/defines_3.js +20 -20
  164. package/SVF-doxygen/html/search/defines_4.js +3 -3
  165. package/SVF-doxygen/html/search/defines_5.js +4 -4
  166. package/SVF-doxygen/html/search/defines_6.js +2 -2
  167. package/SVF-doxygen/html/search/defines_7.js +5 -5
  168. package/SVF-doxygen/html/search/defines_8.js +11 -11
  169. package/SVF-doxygen/html/search/defines_9.js +9 -9
  170. package/SVF-doxygen/html/search/defines_a.js +2 -2
  171. package/SVF-doxygen/html/search/defines_b.js +1 -1
  172. package/SVF-doxygen/html/search/defines_c.js +4 -4
  173. package/SVF-doxygen/html/search/defines_d.js +2 -2
  174. package/SVF-doxygen/html/search/defines_e.js +8 -8
  175. package/SVF-doxygen/html/search/defines_f.js +4 -4
  176. package/SVF-doxygen/html/search/enums_0.js +4 -4
  177. package/SVF-doxygen/html/search/enums_1.js +2 -2
  178. package/SVF-doxygen/html/search/enums_10.js +1 -1
  179. package/SVF-doxygen/html/search/enums_11.js +1 -1
  180. package/SVF-doxygen/html/search/enums_2.js +8 -8
  181. package/SVF-doxygen/html/search/enums_3.js +1 -1
  182. package/SVF-doxygen/html/search/enums_4.js +4 -4
  183. package/SVF-doxygen/html/search/enums_5.js +1 -1
  184. package/SVF-doxygen/html/search/enums_6.js +2 -2
  185. package/SVF-doxygen/html/search/enums_7.js +2 -2
  186. package/SVF-doxygen/html/search/enums_8.js +4 -4
  187. package/SVF-doxygen/html/search/enums_9.js +1 -1
  188. package/SVF-doxygen/html/search/enums_a.js +1 -1
  189. package/SVF-doxygen/html/search/enums_b.js +7 -7
  190. package/SVF-doxygen/html/search/enums_c.js +1 -1
  191. package/SVF-doxygen/html/search/enums_d.js +4 -4
  192. package/SVF-doxygen/html/search/enums_e.js +2 -2
  193. package/SVF-doxygen/html/search/enums_f.js +4 -4
  194. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  195. package/SVF-doxygen/html/search/enumvalues_1.js +15 -15
  196. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  197. package/SVF-doxygen/html/search/enumvalues_11.js +4 -4
  198. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  199. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  200. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  201. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  202. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  203. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  204. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  205. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  206. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  207. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  208. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  209. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  210. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  211. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  212. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  213. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  214. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  215. package/SVF-doxygen/html/search/enumvalues_f.js +47 -47
  216. package/SVF-doxygen/html/search/files_0.js +16 -16
  217. package/SVF-doxygen/html/search/files_1.js +9 -9
  218. package/SVF-doxygen/html/search/files_10.js +8 -8
  219. package/SVF-doxygen/html/search/files_11.js +8 -8
  220. package/SVF-doxygen/html/search/files_12.js +2 -2
  221. package/SVF-doxygen/html/search/files_2.js +53 -53
  222. package/SVF-doxygen/html/search/files_3.js +14 -14
  223. package/SVF-doxygen/html/search/files_4.js +5 -5
  224. package/SVF-doxygen/html/search/files_5.js +13 -13
  225. package/SVF-doxygen/html/search/files_6.js +10 -10
  226. package/SVF-doxygen/html/search/files_7.js +17 -17
  227. package/SVF-doxygen/html/search/files_8.js +13 -13
  228. package/SVF-doxygen/html/search/files_9.js +18 -18
  229. package/SVF-doxygen/html/search/files_a.js +3 -3
  230. package/SVF-doxygen/html/search/files_b.js +4 -4
  231. package/SVF-doxygen/html/search/files_c.js +20 -20
  232. package/SVF-doxygen/html/search/files_d.js +4 -4
  233. package/SVF-doxygen/html/search/files_e.js +62 -62
  234. package/SVF-doxygen/html/search/files_f.js +8 -8
  235. package/SVF-doxygen/html/search/functions_0.js +13 -13
  236. package/SVF-doxygen/html/search/functions_1.js +369 -369
  237. package/SVF-doxygen/html/search/functions_10.js +140 -140
  238. package/SVF-doxygen/html/search/functions_11.js +140 -139
  239. package/SVF-doxygen/html/search/functions_12.js +299 -299
  240. package/SVF-doxygen/html/search/functions_13.js +73 -73
  241. package/SVF-doxygen/html/search/functions_14.js +41 -41
  242. package/SVF-doxygen/html/search/functions_15.js +72 -72
  243. package/SVF-doxygen/html/search/functions_16.js +38 -38
  244. package/SVF-doxygen/html/search/functions_17.js +3 -3
  245. package/SVF-doxygen/html/search/functions_18.js +180 -180
  246. package/SVF-doxygen/html/search/functions_2.js +95 -95
  247. package/SVF-doxygen/html/search/functions_3.js +261 -261
  248. package/SVF-doxygen/html/search/functions_4.js +84 -84
  249. package/SVF-doxygen/html/search/functions_5.js +57 -57
  250. package/SVF-doxygen/html/search/functions_6.js +65 -65
  251. package/SVF-doxygen/html/search/functions_7.js +863 -863
  252. package/SVF-doxygen/html/search/functions_8.js +162 -162
  253. package/SVF-doxygen/html/search/functions_9.js +439 -439
  254. package/SVF-doxygen/html/search/functions_a.js +30 -30
  255. package/SVF-doxygen/html/search/functions_b.js +2 -2
  256. package/SVF-doxygen/html/search/functions_c.js +25 -25
  257. package/SVF-doxygen/html/search/functions_d.js +82 -82
  258. package/SVF-doxygen/html/search/functions_e.js +36 -36
  259. package/SVF-doxygen/html/search/functions_f.js +58 -58
  260. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  261. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  262. package/SVF-doxygen/html/search/related_0.js +4 -4
  263. package/SVF-doxygen/html/search/related_1.js +2 -2
  264. package/SVF-doxygen/html/search/related_2.js +2 -2
  265. package/SVF-doxygen/html/search/related_3.js +2 -2
  266. package/SVF-doxygen/html/search/related_4.js +2 -2
  267. package/SVF-doxygen/html/search/related_5.js +1 -1
  268. package/SVF-doxygen/html/search/related_6.js +2 -2
  269. package/SVF-doxygen/html/search/related_7.js +5 -5
  270. package/SVF-doxygen/html/search/related_8.js +2 -2
  271. package/SVF-doxygen/html/search/related_9.js +4 -4
  272. package/SVF-doxygen/html/search/related_a.js +19 -19
  273. package/SVF-doxygen/html/search/related_b.js +4 -4
  274. package/SVF-doxygen/html/search/related_c.js +2 -2
  275. package/SVF-doxygen/html/search/related_d.js +12 -12
  276. package/SVF-doxygen/html/search/related_e.js +2 -2
  277. package/SVF-doxygen/html/search/related_f.js +2 -2
  278. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  279. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  280. package/SVF-doxygen/html/search/typedefs_10.js +63 -63
  281. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  282. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  283. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  284. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  285. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  286. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  287. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  288. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  289. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  290. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  291. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  292. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  293. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  294. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  295. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  296. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  297. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  298. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  299. package/SVF-doxygen/html/search/variables_0.js +177 -177
  300. package/SVF-doxygen/html/search/variables_1.js +76 -76
  301. package/SVF-doxygen/html/search/variables_10.js +98 -98
  302. package/SVF-doxygen/html/search/variables_11.js +46 -46
  303. package/SVF-doxygen/html/search/variables_12.js +93 -93
  304. package/SVF-doxygen/html/search/variables_13.js +76 -76
  305. package/SVF-doxygen/html/search/variables_14.js +14 -14
  306. package/SVF-doxygen/html/search/variables_15.js +49 -49
  307. package/SVF-doxygen/html/search/variables_16.js +11 -11
  308. package/SVF-doxygen/html/search/variables_17.js +1 -1
  309. package/SVF-doxygen/html/search/variables_18.js +17 -17
  310. package/SVF-doxygen/html/search/variables_2.js +41 -41
  311. package/SVF-doxygen/html/search/variables_3.js +142 -142
  312. package/SVF-doxygen/html/search/variables_4.js +51 -51
  313. package/SVF-doxygen/html/search/variables_5.js +39 -39
  314. package/SVF-doxygen/html/search/variables_6.js +66 -66
  315. package/SVF-doxygen/html/search/variables_7.js +34 -34
  316. package/SVF-doxygen/html/search/variables_8.js +8 -8
  317. package/SVF-doxygen/html/search/variables_9.js +79 -79
  318. package/SVF-doxygen/html/search/variables_a.js +4 -4
  319. package/SVF-doxygen/html/search/variables_b.js +10 -10
  320. package/SVF-doxygen/html/search/variables_c.js +45 -45
  321. package/SVF-doxygen/html/search/variables_d.js +57 -57
  322. package/SVF-doxygen/html/search/variables_e.js +123 -123
  323. package/SVF-doxygen/html/search/variables_f.js +31 -31
  324. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  325. package/SVF-doxygen/html/structSVF_1_1has__edgetype.html +1 -1
  326. package/SVF-doxygen/html/structSVF_1_1has__edgetype_3_01T_00_01std_1_1void__t_3_01typename_01T_1_1EdgeType_01_4_01_4.html +1 -1
  327. package/SVF-doxygen/html/structSVF_1_1has__nodetype.html +1 -1
  328. package/SVF-doxygen/html/structSVF_1_1has__nodetype_3_01T_00_01std_1_1void__t_3_01typename_01T_1_1NodeType_01_4_01_4.html +1 -1
  329. package/SVF-doxygen/html/svf-ex_8cpp.html +12 -12
  330. package/SVF-doxygen/html/svf-ex_8cpp_source.html +12 -12
  331. package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  332. package/package.json +1 -1
  333. package/svf/include/Graphs/WTO.h +1 -0
  334. package/svf/lib/AE/Svfexe/AbstractExecution.cpp +1 -0
  335. package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +1 -0
  336. package/svf/lib/AE/Svfexe/ICFGSimplification.cpp +1 -2
  337. package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +1 -0
  338. package/svf/lib/MemoryModel/AccessPath.cpp +4 -1
  339. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +2 -0
  340. package/svf-llvm/lib/LLVMModule.cpp +3 -4
  341. package/svf-llvm/lib/LLVMUtil.cpp +29 -2
  342. package/svf-llvm/lib/SVFIRBuilder.cpp +1 -1
  343. package/svf-llvm/tools/AE/ae.cpp +1 -2
@@ -403,558 +403,585 @@ $(function() {
403
403
  <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> */</span></div>
404
404
  <div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8"> 364</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">LLVMUtil::getFirstUseViaCastInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
405
405
  <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;{</div>
406
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(val-&gt;getType());</div>
407
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
408
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
409
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it : val-&gt;uses())</div>
410
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
411
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(it.getUser()))</div>
412
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; latestUse = it.getUser();</div>
413
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span></div>
414
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
415
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
416
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
417
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;}</div>
418
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; </div>
419
- <div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8"> 383</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">LLVMUtil::getNumOfElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety)</div>
420
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;{</div>
421
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
422
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div>
423
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
424
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
425
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
426
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
427
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">else</span></div>
428
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
429
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
430
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
431
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;}</div>
432
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; </div>
433
- <div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987"> 400</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">LLVMUtil::getBBPredecessorNum</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB)</div>
434
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;{</div>
435
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
436
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
437
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; num++;</div>
438
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> num;</div>
439
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div>
440
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; </div>
441
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment">/*</span></div>
442
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment"> * Reference functions:</span></div>
443
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment"> * llvm::parseIRFile (lib/IRReader/IRReader.cpp)</span></div>
444
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> * llvm::parseIR (lib/IRReader/IRReader.cpp)</span></div>
445
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"> */</span></div>
446
- <div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41"> 413</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;filename)</div>
447
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;{</div>
448
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">llvm::LLVMContext</a> context;</div>
449
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">llvm::SMDiagnostic</a> err;</div>
450
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; </div>
451
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// Parse the input LLVM IR file into a module</span></div>
452
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; std::unique_ptr&lt;llvm::Module&gt; module = llvm::parseIRFile(filename, err, context);</div>
453
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; </div>
454
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// Check if the parsing succeeded</span></div>
455
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (!module)</div>
456
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
457
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; err.print(<span class="stringliteral">&quot;isIRFile&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
458
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Not an LLVM IR file</span></div>
459
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
460
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; </div>
461
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// It is an LLVM IR file</span></div>
462
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div>
406
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; assert(SVFUtil::isa&lt;PointerType&gt;(val-&gt;getType()) &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
407
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
408
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it : val-&gt;uses())</div>
409
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
410
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(it.getUser()))</div>
411
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; latestUse = it.getUser();</div>
412
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></div>
413
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
414
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
415
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
416
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div>
417
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
418
+ <div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8"> 382</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">LLVMUtil::getNumOfElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety)</div>
419
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;{</div>
420
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
421
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div>
422
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
423
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div>
424
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
425
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">getNumOfFlattenElements</a>();</div>
426
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">else</span></div>
427
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(ety)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>()-&gt;<a class="code" href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">getNumOfFlattenFields</a>();</div>
428
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
429
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
430
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;}</div>
431
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; </div>
432
+ <div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987"> 399</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">LLVMUtil::getBBPredecessorNum</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB)</div>
433
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;{</div>
434
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
435
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
436
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; num++;</div>
437
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> num;</div>
438
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;}</div>
439
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
440
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment">/*</span></div>
441
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment"> * Reference functions:</span></div>
442
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment"> * llvm::parseIRFile (lib/IRReader/IRReader.cpp)</span></div>
443
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment"> * llvm::parseIR (lib/IRReader/IRReader.cpp)</span></div>
444
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> */</span></div>
445
+ <div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41"> 412</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;filename)</div>
446
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;{</div>
447
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceSVF.html#affba423b674a0aba723e33101826e297">llvm::LLVMContext</a> context;</div>
448
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="namespaceSVF.html#a86863d104a3930b3a806935d92ddbf30">llvm::SMDiagnostic</a> err;</div>
449
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; </div>
450
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// Parse the input LLVM IR file into a module</span></div>
451
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; std::unique_ptr&lt;llvm::Module&gt; module = llvm::parseIRFile(filename, err, context);</div>
452
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; </div>
453
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// Check if the parsing succeeded</span></div>
454
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (!module)</div>
455
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div>
456
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; err.print(<span class="stringliteral">&quot;isIRFile&quot;</span>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">llvm::errs</a>());</div>
457
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Not an LLVM IR file</span></div>
458
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
459
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; </div>
460
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// It is an LLVM IR file</span></div>
461
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;}</div>
462
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; </div>
463
463
  <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; </div>
464
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; </div>
465
- <div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732"> 434</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keywordtype">int</span> &amp;arg_num, <span class="keywordtype">char</span> **arg_value,</div>
466
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; std::vector&lt;std::string&gt; &amp;moduleNameVec)</div>
467
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;{</div>
468
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
469
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
470
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div>
471
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
472
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
473
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div>
474
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
475
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; == moduleNameVec.end())</div>
476
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; moduleNameVec.push_back(argument);</div>
477
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
478
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div>
479
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; arg_value[arg_num] = argv[i];</div>
480
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; arg_num++;</div>
481
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
482
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
483
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
484
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span></div>
485
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
486
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; arg_value[arg_num] = argv[i];</div>
487
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; arg_num++;</div>
488
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
489
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
490
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;}</div>
491
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; </div>
492
- <div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9"> 461</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a>&amp; removedFuncList)</div>
493
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div>
494
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
495
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
496
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; </div>
497
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = (*removedFuncList.begin())-&gt;getParent();</div>
498
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
499
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
500
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span>;</div>
501
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
502
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
503
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
504
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span>;</div>
505
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
506
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
507
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
508
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div>
509
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
510
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
511
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">continue</span>;</div>
512
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
513
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = <span class="keyword">nullptr</span>;</div>
514
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
515
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// Non-opague pointer, try to cast to ConstantExpr and check for BitCast</span></div>
516
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0)))</div>
517
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div>
518
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast)</div>
519
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div>
520
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
521
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
522
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
523
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; </div>
524
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">// Opague pointer, If the above method didn&#39;t work, try casting directly to Function</span></div>
525
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (!annotatedFunc)</div>
526
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
527
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(structAn-&gt;getOperand(0));</div>
528
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div>
529
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
530
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// Process the annotated function if it&#39;s not in the removed list</span></div>
531
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (annotatedFunc &amp;&amp; std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) == removedFuncList.end())</div>
532
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
533
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; newAnnotations.push_back(structAn);</div>
534
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
535
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
536
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
537
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
538
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
539
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; </div>
540
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
541
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
542
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
543
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; glob-&gt;setInitializer(newCA);</div>
544
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div>
545
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; </div>
546
- <div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466"> 516</a></span>&#160;std::vector&lt;const Function *&gt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
547
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div>
548
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
549
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
550
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div>
551
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;I))</div>
552
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
553
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
554
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
555
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
556
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; calledFunctions.push_back(calledFunction);</div>
557
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
558
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
559
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
560
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
561
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div>
562
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
563
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;}</div>
564
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; </div>
565
- <div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e"> 535</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">LLVMUtil::isUnusedGlobalVariable</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global)</div>
566
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;{</div>
567
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// Check if it is an empty global annotations</span></div>
568
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">&quot;llvm.global.annotations&quot;</span> &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(global.getInitializer()))</div>
569
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
570
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">else</span></div>
571
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
572
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="comment">// Check if any global strings has at least one effective user</span></div>
573
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : global.uses())</div>
574
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
575
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
576
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
577
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
578
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;}</div>
579
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; </div>
580
- <div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2"> 550</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">LLVMUtil::removeUnusedGlobalVariables</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module)</div>
581
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;{</div>
582
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; assert(module &amp;&amp; <span class="stringliteral">&quot;Null module pointer!&quot;</span>);</div>
583
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
584
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : module-&gt;globals())</div>
585
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
586
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// Record unused global variables</span></div>
587
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; unusedGlobals.push_back(&amp;global);</div>
588
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; </div>
589
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// Delete unused global variables</span></div>
590
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
591
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; global-&gt;eraseFromParent();</div>
592
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;}</div>
593
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div>
594
- <div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5"> 565</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a> removedFuncList)</div>
595
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;{</div>
596
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
597
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span>;</div>
598
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; </div>
599
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = (*removedFuncList.begin())-&gt;getParent();</div>
600
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
601
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span>;</div>
602
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; </div>
603
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
604
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
605
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
606
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">auto</span> isCalledFunction = [](<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
607
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div>
608
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> &amp;&amp; <span class="stringliteral">&quot;Null function pointer!&quot;</span>);</div>
609
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;uses())</div>
610
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div>
611
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
612
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
613
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
614
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
615
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
616
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; };</div>
617
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; </div>
618
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
619
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div>
620
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
621
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
622
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; funcsToKeep.push_back(func);</div>
623
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">else</span></div>
624
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
625
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; func-&gt;eraseFromParent();</div>
626
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div>
627
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="comment">// Delete first kind functions</span></div>
628
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
629
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; func-&gt;eraseFromParent();</div>
630
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// Delete unused global variables</span></div>
631
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
632
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;}</div>
633
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; </div>
634
- <div class="line"><a name="l00613"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70"> 613</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">LLVMUtil::getFunction</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div>
635
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;{</div>
636
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
637
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;}</div>
638
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; </div>
639
- <div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4"> 618</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">LLVMUtil::getGlobalRep</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
640
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;{</div>
641
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
642
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {</div>
643
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;hasGlobalRep(gvar))</div>
644
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">getGlobalRep</a>(gvar);</div>
645
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div>
646
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> val;</div>
647
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;}</div>
648
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; </div>
649
- <div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d"> 628</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
650
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;{</div>
651
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
652
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
653
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">&gt;</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
654
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">else</span></div>
655
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">return</span> 0;</div>
656
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;}</div>
464
+ <div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732"> 433</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keywordtype">int</span> &amp;arg_num, <span class="keywordtype">char</span> **arg_value,</div>
465
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; std::vector&lt;std::string&gt; &amp;moduleNameVec)</div>
466
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;{</div>
467
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
468
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
469
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
470
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
471
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
472
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
473
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
474
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; == moduleNameVec.end())</div>
475
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; moduleNameVec.push_back(argument);</div>
476
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
477
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
478
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; arg_value[arg_num] = argv[i];</div>
479
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; arg_num++;</div>
480
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
481
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
482
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
483
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">else</span></div>
484
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div>
485
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; arg_value[arg_num] = argv[i];</div>
486
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; arg_num++;</div>
487
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
488
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
489
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div>
490
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; </div>
491
+ <div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9"> 460</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a>&amp; removedFuncList)</div>
492
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div>
493
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
494
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
495
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
496
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = (*removedFuncList.begin())-&gt;getParent();</div>
497
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* glob = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
498
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
499
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span>;</div>
500
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; </div>
501
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
502
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
503
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span>;</div>
504
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
505
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
506
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
507
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; {</div>
508
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
509
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
510
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">continue</span>;</div>
511
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
512
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = <span class="keyword">nullptr</span>;</div>
513
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
514
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// Non-opague pointer, try to cast to ConstantExpr and check for BitCast</span></div>
515
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0)))</div>
516
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div>
517
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast)</div>
518
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
519
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
520
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
521
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
522
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; </div>
523
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="comment">// Opague pointer, If the above method didn&#39;t work, try casting directly to Function</span></div>
524
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (!annotatedFunc)</div>
525
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div>
526
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(structAn-&gt;getOperand(0));</div>
527
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
528
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
529
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// Process the annotated function if it&#39;s not in the removed list</span></div>
530
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (annotatedFunc &amp;&amp; std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) == removedFuncList.end())</div>
531
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div>
532
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; newAnnotations.push_back(structAn);</div>
533
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
534
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
535
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
536
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
537
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
538
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; </div>
539
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
540
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
541
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; </div>
542
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; glob-&gt;setInitializer(newCA);</div>
543
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div>
544
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; </div>
545
+ <div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466"> 515</a></span>&#160;std::vector&lt;const Function *&gt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">LLVMUtil::getCalledFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
546
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;{</div>
547
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
548
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> &amp;I : instructions(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
549
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div>
550
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callInst = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;I))</div>
551
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div>
552
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
553
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
554
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div>
555
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; calledFunctions.push_back(calledFunction);</div>
556
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
557
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
558
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div>
559
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
560
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
561
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
562
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;}</div>
563
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; </div>
564
+ <div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e"> 534</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">LLVMUtil::isUnusedGlobalVariable</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global)</div>
565
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;{</div>
566
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// Check if it is an empty global annotations</span></div>
567
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span> (global.getName() == <span class="stringliteral">&quot;llvm.global.annotations&quot;</span> &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(global.getInitializer()))</div>
568
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
569
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span></div>
570
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
571
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// Check if any global strings has at least one effective user</span></div>
572
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : global.uses())</div>
573
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
574
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
575
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
576
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
577
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;}</div>
578
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; </div>
579
+ <div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2"> 549</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">LLVMUtil::removeUnusedGlobalVariables</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module)</div>
580
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;{</div>
581
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; assert(module &amp;&amp; <span class="stringliteral">&quot;Null module pointer!&quot;</span>);</div>
582
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
583
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : module-&gt;globals())</div>
584
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
585
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// Record unused global variables</span></div>
586
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; unusedGlobals.push_back(&amp;global);</div>
587
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; </div>
588
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// Delete unused global variables</span></div>
589
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
590
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; global-&gt;eraseFromParent();</div>
591
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div>
592
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; </div>
593
+ <div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5"> 564</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;Function*&gt;</a> removedFuncList)</div>
594
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;{</div>
595
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
596
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span>;</div>
597
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
598
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = (*removedFuncList.begin())-&gt;getParent();</div>
599
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != <a class="code" href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">ExtAPI::getExtAPI</a>()-&gt;<a class="code" href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">getExtBcPath</a>())</div>
600
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span>;</div>
601
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
602
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
603
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; </div>
604
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
605
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keyword">auto</span> isCalledFunction = [](<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
606
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
607
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; assert(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a> &amp;&amp; <span class="stringliteral">&quot;Null function pointer!&quot;</span>);</div>
608
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;uses())</div>
609
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div>
610
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
611
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
612
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
613
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
614
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
615
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; };</div>
616
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; </div>
617
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
618
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div>
619
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
620
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
621
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; funcsToKeep.push_back(func);</div>
622
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">else</span></div>
623
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
624
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; func-&gt;eraseFromParent();</div>
625
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div>
626
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Delete first kind functions</span></div>
627
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
628
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; func-&gt;eraseFromParent();</div>
629
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="comment">// Delete unused global variables</span></div>
630
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
631
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div>
632
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; </div>
633
+ <div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612"> 612</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">LLVMUtil::restoreFuncName</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName)</div>
634
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;{</div>
635
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; assert(!funcName.empty() &amp;&amp; <span class="stringliteral">&quot;Empty function name&quot;</span>);</div>
636
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">// Some function names change due to mangling, such as &quot;fopen&quot; to &quot;\01_fopen&quot; on macOS.</span></div>
637
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// Since C function names cannot include &#39;.&#39;, change the function name from llvm.memcpy.p0i8.p0i8.i64 to llvm_memcpy_p0i8_p0i8_i64.&quot;</span></div>
638
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordtype">bool</span> hasSpecialPrefix = funcName[0] == <span class="charliteral">&#39;\01&#39;</span>;</div>
639
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordtype">bool</span> hasDot = funcName.find(<span class="charliteral">&#39;.&#39;</span>) != std::string::npos;</div>
640
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; </div>
641
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> (!hasDot &amp;&amp; !hasSpecialPrefix)</div>
642
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> funcName;</div>
643
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div>
644
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">// Remove prefix &quot;\01_&quot; or &quot;\01&quot;</span></div>
645
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span> (hasSpecialPrefix)</div>
646
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div>
647
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix1 = <span class="stringliteral">&quot;\01_&quot;</span>;</div>
648
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> prefix2 = <span class="stringliteral">&quot;\01&quot;</span>;</div>
649
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (funcName.substr(0, prefix1.length()) == prefix1)</div>
650
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; funcName = funcName.substr(prefix1.length());</div>
651
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (funcName.substr(0, prefix2.length()) == prefix2)</div>
652
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; funcName = funcName.substr(prefix2.length());</div>
653
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div>
654
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="comment">// Replace &#39;.&#39; with &#39;_&#39;</span></div>
655
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (hasDot)</div>
656
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; std::replace(funcName.begin(), funcName.end(), <span class="charliteral">&#39;.&#39;</span>, <span class="charliteral">&#39;_&#39;</span>);</div>
657
657
  <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; </div>
658
- <div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6"> 637</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</div>
659
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div>
658
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> funcName;</div>
659
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;}</div>
660
660
  <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; </div>
661
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getStructLayout( <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">&gt;</span>(sty) );</div>
662
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
663
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> 0;</div>
664
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">else</span></div>
665
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
666
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div>
667
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; </div>
668
- <div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8"> 651</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val )</div>
669
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div>
670
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div>
661
+ <div class="line"><a name="l00640"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70"> 640</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">LLVMUtil::getFunction</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div>
662
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;{</div>
663
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
664
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;}</div>
665
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; </div>
666
+ <div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4"> 645</a></span>&#160;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">LLVMUtil::getGlobalRep</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
667
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;{</div>
668
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
669
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div>
670
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;hasGlobalRep(gvar))</div>
671
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">getGlobalRep</a>(gvar);</div>
672
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div>
673
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">return</span> val;</div>
674
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;}</div>
671
675
  <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; </div>
672
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
673
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; std::stringstream rawstr(str);</div>
674
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
675
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; </div>
676
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(val))</div>
677
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div>
678
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
679
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
680
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">&gt;</span>(inst)))</div>
681
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
682
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
683
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; {</div>
684
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
685
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DIVar-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
686
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">break</span>;</div>
687
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div>
688
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
689
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div>
690
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
691
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
692
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
693
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
694
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
695
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
696
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
697
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
698
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div>
699
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
700
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
701
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {</div>
702
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; Line = inlineLoc-&gt;getLine();</div>
703
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
704
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
705
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div>
706
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div>
707
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot;, \&quot;cl\&quot;: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; File &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
708
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div>
709
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div>
710
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
711
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div>
712
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
713
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
714
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
715
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
716
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
717
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
718
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">else</span></div>
719
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
720
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div>
721
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
722
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div>
723
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
724
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div>
725
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
726
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div>
727
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
728
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
729
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
730
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
731
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
732
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
733
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
734
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
735
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; </div>
736
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
737
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
738
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DGV-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
739
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
740
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; </div>
741
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
742
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div>
743
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
744
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div>
745
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(val))</div>
746
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div>
747
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
748
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
749
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
750
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div>
751
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;basic block\&quot;: &quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;, \&quot;location\&quot;: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div>
752
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div>
753
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
754
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div>
755
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
756
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div>
757
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">else</span></div>
758
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div>
759
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
760
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div>
761
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
676
+ <div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d"> 655</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
677
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;{</div>
678
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
679
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
680
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getTypeStoreSize(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">&gt;</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
681
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">else</span></div>
682
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> 0;</div>
683
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div>
684
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; </div>
685
+ <div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6"> 664</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</div>
686
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;{</div>
687
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; </div>
688
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getStructLayout( <span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">&gt;</span>(sty) );</div>
689
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
690
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> 0;</div>
691
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">else</span></div>
692
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
693
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;}</div>
694
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; </div>
695
+ <div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8"> 678</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val )</div>
696
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;{</div>
697
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div>
698
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; </div>
699
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
700
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; std::stringstream rawstr(str);</div>
701
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
702
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; </div>
703
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(val))</div>
704
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div>
705
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
706
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div>
707
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast&lt;</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">&gt;</span>(inst)))</div>
708
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div>
709
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
710
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div>
711
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
712
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DIVar-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
713
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">break</span>;</div>
714
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
715
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div>
716
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
717
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
718
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
719
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
720
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
721
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
722
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
723
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
724
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
725
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div>
726
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
727
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
728
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
729
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; Line = inlineLoc-&gt;getLine();</div>
730
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
731
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
732
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div>
733
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
734
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot;, \&quot;cl\&quot;: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; File &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
735
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div>
736
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
737
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
738
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div>
739
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
740
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
741
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
742
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
743
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
744
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
745
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">else</span></div>
746
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
747
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div>
748
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
749
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; }</div>
750
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
751
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div>
752
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
753
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div>
754
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
755
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {</div>
756
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
757
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div>
758
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
759
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
760
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div>
761
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
762
762
  <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
763
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
764
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
765
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
766
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;}</div>
763
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
764
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; {</div>
765
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;fl\&quot;: \&quot;&quot;</span> &lt;&lt; DGV-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
766
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
767
767
  <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; </div>
768
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; </div>
769
- <div class="line"><a name="l00755"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c"> 755</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">LLVMUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
770
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;{</div>
771
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
772
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; std::stringstream rawstr(str);</div>
773
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">/*</span></div>
774
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
775
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="comment"> * looks like the relevant</span></div>
776
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="comment"> */</span></div>
777
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getSubprogram())</div>
768
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div>
769
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; }</div>
770
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div>
771
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div>
772
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(val))</div>
773
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div>
774
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
775
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div>
776
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
777
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; {</div>
778
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;basic block\&quot;: &quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;, \&quot;location\&quot;: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div>
779
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div>
780
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
778
781
  <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div>
779
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
780
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;file\&quot;: \&quot;&quot;</span> &lt;&lt; SP-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
781
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div>
782
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
783
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;}</div>
784
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; </div>
785
- <div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a7fa1f910598426330f08da19e9efdfa3"> 772</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const Instruction*&gt;&amp; instList)</div>
786
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;{</div>
787
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
788
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div>
789
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
790
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
791
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
792
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">else</span></div>
793
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; instList.push_back(nextInst);</div>
794
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div>
795
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">else</span></div>
796
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div>
797
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
798
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
799
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
800
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div>
801
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
802
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
803
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
804
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">else</span></div>
805
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; instList.push_back(nextInst);</div>
806
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div>
782
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
783
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div>
784
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">else</span></div>
785
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div>
786
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
787
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
788
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
789
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; </div>
790
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
791
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
792
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
793
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;}</div>
794
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; </div>
795
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; </div>
796
+ <div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c"> 782</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">LLVMUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
797
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;{</div>
798
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
799
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; std::stringstream rawstr(str);</div>
800
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="comment">/*</span></div>
801
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
802
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="comment"> * looks like the relevant</span></div>
803
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="comment"> */</span></div>
804
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getSubprogram())</div>
805
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; {</div>
806
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
807
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\&quot;ln\&quot;: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot;, \&quot;file\&quot;: \&quot;&quot;</span> &lt;&lt; SP-&gt;getFilename().str() &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div>
807
808
  <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
808
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;}</div>
809
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; </div>
809
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
810
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;}</div>
810
811
  <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; </div>
811
- <div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08876cc07f9b9dbe84f87aea09e9824f"> 799</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const Instruction*&gt;&amp; instList)</div>
812
+ <div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a7fa1f910598426330f08da19e9efdfa3"> 799</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const Instruction*&gt;&amp; instList)</div>
812
813
  <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;{</div>
813
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
814
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
814
815
  <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div>
815
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
816
- <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
817
- <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
816
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
817
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
818
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
818
819
  <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">else</span></div>
819
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; instList.push_back(prevInst);</div>
820
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; instList.push_back(nextInst);</div>
820
821
  <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div>
821
822
  <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">else</span></div>
822
823
  <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {</div>
823
824
  <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
824
825
  <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
825
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
826
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
826
827
  <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
827
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
828
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
829
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
828
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
829
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
830
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
830
831
  <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span></div>
831
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; instList.push_back(prevInst);</div>
832
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; instList.push_back(nextInst);</div>
832
833
  <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
833
834
  <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
834
835
  <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;}</div>
835
836
  <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; </div>
836
- <div class="line"><a name="l00825"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c"> 825</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val)</div>
837
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;{</div>
838
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMValue(val));</div>
839
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;}</div>
840
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; </div>
841
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; </div>
842
- <div class="line"><a name="l00831"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f"> 831</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>
843
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;{</div>
844
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
845
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
846
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; </div>
847
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
848
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
849
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
850
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;}</div>
851
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; </div>
852
- <div class="line"><a name="l00841"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220"> 841</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>
853
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;{</div>
854
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
855
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
856
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
857
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
858
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
859
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; val = -1;</div>
860
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div>
861
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">else</span></div>
862
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; {</div>
863
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
864
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
865
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; val = caseValue-&gt;getSExtValue();</div>
866
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div>
867
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">else</span></div>
868
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div>
869
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; val = -1;</div>
870
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div>
871
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; }</div>
872
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">return</span> val;</div>
837
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; </div>
838
+ <div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08876cc07f9b9dbe84f87aea09e9824f"> 826</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector&lt;const Instruction*&gt;&amp; instList)</div>
839
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;{</div>
840
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
841
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div>
842
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
843
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
844
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
845
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">else</span></div>
846
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; instList.push_back(prevInst);</div>
847
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div>
848
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">else</span></div>
849
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div>
850
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
851
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
852
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
853
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
854
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
855
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
856
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
857
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">else</span></div>
858
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; instList.push_back(prevInst);</div>
859
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div>
860
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div>
861
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;}</div>
862
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; </div>
863
+ <div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c"> 852</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val)</div>
864
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;{</div>
865
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getLLVMValue(val));</div>
866
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;}</div>
867
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; </div>
868
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; </div>
869
+ <div class="line"><a name="l00858"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f"> 858</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>
870
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;{</div>
871
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
872
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
873
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; </div>
874
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
875
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
876
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
873
877
  <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;}</div>
874
878
  <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; </div>
875
- <div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159"> 868</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>
879
+ <div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220"> 868</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>
876
880
  <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div>
877
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
878
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
879
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (val)</div>
880
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
881
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">else</span></div>
882
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
883
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
884
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;}</div>
885
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; </div>
886
- <div class="line"><a name="l00879"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9"> 879</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>
887
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;{</div>
888
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
889
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
890
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
891
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</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>
892
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">else</span></div>
893
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm type is null&quot;</span>;</div>
894
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
895
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;}</div>
896
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; </div>
897
- <div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350"> 890</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">LLVMUtil::dumpValueAndDbgInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div>
898
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;{</div>
899
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
900
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
901
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span> (val)</div>
902
- <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">dumpValue</a>(val) &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(val);</div>
903
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">else</span></div>
904
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
905
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
906
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;}</div>
907
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; </div>
908
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
909
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;{</div>
910
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; </div>
911
- <div class="line"><a name="l00904"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3"> 904</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>
912
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;<span class="keyword"></span>{</div>
913
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
914
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
915
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</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>
916
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div>
917
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</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>
918
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div>
919
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</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>
920
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; {</div>
921
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BasicBlock: &quot;</span> &lt;&lt; bb-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
922
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div>
923
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">else</span></div>
924
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; {</div>
925
- <div class="line"><a name="l00918"></a><span class="lineno"> 918</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>
926
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">if</span> (llvmVal)</div>
927
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *llvmVal &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
928
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">else</span></div>
929
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; No llvmVal found&quot;</span>;</div>
930
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div>
931
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; rawstr &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
881
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
882
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
883
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
884
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
885
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; {</div>
886
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; val = -1;</div>
887
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div>
888
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">else</span></div>
889
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; {</div>
890
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
891
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div>
892
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; val = caseValue-&gt;getSExtValue();</div>
893
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; }</div>
894
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">else</span></div>
895
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; {</div>
896
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; val = -1;</div>
897
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; }</div>
898
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
899
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">return</span> val;</div>
900
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;}</div>
901
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; </div>
902
+ <div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159"> 895</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>
903
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;{</div>
904
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
905
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
906
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">if</span> (val)</div>
907
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
908
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">else</span></div>
909
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
910
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
911
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;}</div>
912
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; </div>
913
+ <div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9"> 906</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>
914
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;{</div>
915
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
916
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
917
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
918
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</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>
919
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">else</span></div>
920
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm type is null&quot;</span>;</div>
921
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
922
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;}</div>
923
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; </div>
924
+ <div class="line"><a name="l00917"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350"> 917</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">LLVMUtil::dumpValueAndDbgInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</div>
925
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;{</div>
926
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
927
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
928
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (val)</div>
929
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">dumpValue</a>(val) &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(val);</div>
930
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">else</span></div>
931
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
932
932
  <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
933
933
  <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;}</div>
934
934
  <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; </div>
935
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;} <span class="comment">// namespace SVF</span></div>
935
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
936
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;{</div>
937
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; </div>
938
+ <div class="line"><a name="l00931"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3"> 931</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>
939
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;<span class="keyword"></span>{</div>
940
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
941
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
942
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</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>
943
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; {</div>
944
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</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>
945
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; }</div>
946
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <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>
947
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div>
948
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</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>
949
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div>
950
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">else</span></div>
951
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; {</div>
952
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="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>
953
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">if</span> (llvmVal)</div>
954
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *llvmVal &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
955
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">else</span></div>
956
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; No llvmVal found&quot;</span>;</div>
957
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
958
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; rawstr &lt;&lt; this-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
959
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
960
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;}</div>
961
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; </div>
962
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;} <span class="comment">// namespace SVF</span></div>
936
963
  </div><!-- fragment --></div><!-- contents -->
937
964
  <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#l00133">BasicTypes.h:133</a></div></div>
938
- <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#l00651">LLVMUtil.cpp:651</a></div></div>
939
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a484bbbc9713fc4be173943e6bc177fb5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(Set&lt; Function * &gt; removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00565">LLVMUtil.cpp:565</a></div></div>
965
+ <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#l00678">LLVMUtil.cpp:678</a></div></div>
966
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a484bbbc9713fc4be173943e6bc177fb5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">SVF::LLVMUtil::removeUnusedFuncsAndAnnotationsAndGlobalVariables</a></div><div class="ttdeci">void removeUnusedFuncsAndAnnotationsAndGlobalVariables(Set&lt; Function * &gt; removedFuncList)</div><div class="ttdoc">Delete unused functions, annotations and global variables in extapi.bc.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00564">LLVMUtil.cpp:564</a></div></div>
940
967
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00278">LLVMUtil.cpp:278</a></div></div>
941
- <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#l00868">LLVMUtil.cpp:868</a></div></div>
968
+ <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#l00895">LLVMUtil.cpp:895</a></div></div>
942
969
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abc9c437b7da5cfe3d988dadfcbd0635f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">SVF::LLVMUtil::viewCFG</a></div><div class="ttdeci">void viewCFG(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00259">LLVMUtil.cpp:259</a></div></div>
943
970
  <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#l00185">BasicTypes.h:185</a></div></div>
944
971
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00105">LLVMModule.h:105</a></div></div>
945
972
  <div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
973
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af4c9c5d445107b1816a4be93852ba612"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">SVF::LLVMUtil::restoreFuncName</a></div><div class="ttdeci">std::string restoreFuncName(std::string funcName)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00612">LLVMUtil.cpp:612</a></div></div>
946
974
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aca11801ed6ef6ff8d2a1e85bc0fc5794"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">SVF::LLVMUtil::isObject</a></div><div class="ttdeci">bool isObject(const Value *ref)</div><div class="ttdoc">Return true if this value refers to a object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00069">LLVMUtil.cpp:69</a></div></div>
947
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a86c0a0cb4ada72bd4f42c77558e6a350"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">SVF::LLVMUtil::dumpValueAndDbgInfo</a></div><div class="ttdeci">std::string dumpValueAndDbgInfo(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00890">LLVMUtil.cpp:890</a></div></div>
975
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a86c0a0cb4ada72bd4f42c77558e6a350"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a86c0a0cb4ada72bd4f42c77558e6a350">SVF::LLVMUtil::dumpValueAndDbgInfo</a></div><div class="ttdeci">std::string dumpValueAndDbgInfo(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00917">LLVMUtil.cpp:917</a></div></div>
948
976
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaf9b679407f12b93afc53c157d37b444"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">SVF::LLVMModuleSet::getLLVMValue</a></div><div class="ttdeci">const Value * getLLVMValue(const SVFValue *value) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00198">LLVMModule.h:198</a></div></div>
949
977
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a16d14e6712866d1d710c386c72d67181"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">SVF::LLVMModuleSet::FunctionSetType</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00050">LLVMModule.h:50</a></div></div>
950
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00434">LLVMUtil.cpp:434</a></div></div>
978
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00433">LLVMUtil.cpp:433</a></div></div>
951
979
  <div class="ttc" id="aLLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
952
980
  <div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00092">GeneralType.h:92</a></div></div>
953
981
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a6e670254385050b9a5e612f881b07b9c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a6e670254385050b9a5e612f881b07b9c">SVF::LLVMModuleSet::getDefinition</a></div><div class="ttdeci">const Function * getDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00283">LLVMModule.h:283</a></div></div>
954
982
  <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#l00085">BasicTypes.h:85</a></div></div>
955
- <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#l00831">LLVMUtil.cpp:831</a></div></div>
983
+ <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#l00858">LLVMUtil.cpp:858</a></div></div>
956
984
  <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#l00066">BasicTypes.h:66</a></div></div>
957
- <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#l00095">BasicTypes.h:95</a></div></div>
958
985
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a21636200f17c62034720c4287aa818b5"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a21636200f17c62034720c4287aa818b5">SVF::LLVMUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const Function * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00039">LLVMUtil.cpp:39</a></div></div>
959
986
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00247">LLVMUtil.cpp:247</a></div></div>
960
987
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a026ae778570145a4719bd475f8f66d85"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a026ae778570145a4719bd475f8f66d85">SVF::LLVMUtil::getProgFunction</a></div><div class="ttdeci">const Function * getProgFunction(const std::string &amp;funName)</div><div class="ttdoc">Get program entry function from module.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00049">LLVMUtil.cpp:49</a></div></div>
@@ -962,30 +989,30 @@ $(function() {
962
989
  <div class="ttc" id="aclassSVF_1_1StInfo_html_a518c82138fcadc6634980566c1c0f762"><div class="ttname"><a href="classSVF_1_1StInfo.html#a518c82138fcadc6634980566c1c0f762">SVF::StInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements() const</div><div class="ttdoc">Return number of elements after flattening (including array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00139">SVFType.h:139</a></div></div>
963
990
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00169">LLVMUtil.cpp:169</a></div></div>
964
991
  <div class="ttc" id="anamespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
965
- <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01359">LLVMModule.cpp:1359</a></div></div>
966
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00825">LLVMUtil.cpp:825</a></div></div>
992
+ <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01358">LLVMModule.cpp:1358</a></div></div>
993
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00852">LLVMUtil.cpp:852</a></div></div>
967
994
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00205">LLVMModule.h:205</a></div></div>
968
995
  <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#l00104">BasicTypes.h:104</a></div></div>
969
- <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#l00550">LLVMUtil.cpp:550</a></div></div>
996
+ <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#l00549">LLVMUtil.cpp:549</a></div></div>
970
997
  <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#l00081">BasicTypes.h:81</a></div></div>
971
998
  <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>
972
999
  <div class="ttc" id="aclassSVF_1_1StInfo_html_ae5fad367673315da57a604e64b5889f0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ae5fad367673315da57a604e64b5889f0">SVF::StInfo::getNumOfFlattenFields</a></div><div class="ttdeci">u32_t getNumOfFlattenFields() const</div><div class="ttdoc">Return the number of fields after flattening (ignoring array elements)</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00145">SVFType.h:145</a></div></div>
973
1000
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00133">LLVMUtil.cpp:133</a></div></div>
974
1001
  <div class="ttc" id="acJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
975
- <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#l00516">LLVMUtil.cpp:516</a></div></div>
1002
+ <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#l00515">LLVMUtil.cpp:515</a></div></div>
976
1003
  <div class="ttc" id="anamespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00253">BasicTypes.h:253</a></div></div>
977
1004
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa4a604e47daaaf95babc7aca68991000"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa4a604e47daaaf95babc7aca68991000">SVF::LLVMModuleSet::getDeclaration</a></div><div class="ttdeci">const FunctionSetType &amp; getDeclaration(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00304">LLVMModule.h:304</a></div></div>
978
1005
  <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#l00084">BasicTypes.h:84</a></div></div>
979
1006
  <div class="ttc" id="anamespaceSVF_html_affba423b674a0aba723e33101826e297"><div class="ttname"><a href="namespaceSVF.html#affba423b674a0aba723e33101826e297">SVF::LLVMContext</a></div><div class="ttdeci">llvm::LLVMContext LLVMContext</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
980
1007
  <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#l00145">BasicTypes.h:145</a></div></div>
981
- <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#l00841">LLVMUtil.cpp:841</a></div></div>
1008
+ <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#l00868">LLVMUtil.cpp:868</a></div></div>
982
1009
  <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#l00122">BasicTypes.h:122</a></div></div>
983
1010
  <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#l00082">BasicTypes.h:82</a></div></div>
984
1011
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00212">LLVMModule.h:212</a></div></div>
985
1012
  <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#l00129">BasicTypes.h:129</a></div></div>
986
- <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#l00879">LLVMUtil.cpp:879</a></div></div>
1013
+ <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#l00906">LLVMUtil.cpp:906</a></div></div>
987
1014
  <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#l00094">BasicTypes.h:94</a></div></div>
988
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab8511d0e24da255dd518457568326c70"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">SVF::LLVMUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(const std::string &amp;name)</div><div class="ttdoc">Get the corresponding Function based on its name.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00613">LLVMUtil.cpp:613</a></div></div>
1015
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab8511d0e24da255dd518457568326c70"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">SVF::LLVMUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(const std::string &amp;name)</div><div class="ttdoc">Get the corresponding Function based on its name.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00640">LLVMUtil.cpp:640</a></div></div>
989
1016
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00527">SVFValue.h:527</a></div></div>
990
1017
  <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>
991
1018
  <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>
@@ -993,17 +1020,17 @@ $(function() {
993
1020
  <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#l00082">LLVMUtil.h:82</a></div></div>
994
1021
  <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>
995
1022
  <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#l00086">BasicTypes.h:86</a></div></div>
996
- <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#l00340">LLVMUtil.h:340</a></div></div>
1023
+ <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#l00342">LLVMUtil.h:342</a></div></div>
997
1024
  <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#l00093">BasicTypes.h:93</a></div></div>
998
1025
  <div class="ttc" id="anamespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00105">BasicTypes.h:105</a></div></div>
999
1026
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
1000
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &amp;filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00413">LLVMUtil.cpp:413</a></div></div>
1027
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &amp;filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00412">LLVMUtil.cpp:412</a></div></div>
1001
1028
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a32558da64f03452c502ec57d1e106427"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">SVF::LLVMModuleSet::hasDefinition</a></div><div class="ttdeci">bool hasDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00276">LLVMModule.h:276</a></div></div>
1002
1029
  <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#l00111">BasicTypes.h:111</a></div></div>
1003
1030
  <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>
1004
1031
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00282">LLVMUtil.h:282</a></div></div>
1005
1032
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00194">LLVMUtil.h:194</a></div></div>
1006
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a973ee05189ca5bbe832be00f2be9baa4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00618">LLVMUtil.cpp:618</a></div></div>
1033
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a973ee05189ca5bbe832be00f2be9baa4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a973ee05189ca5bbe832be00f2be9baa4">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00645">LLVMUtil.cpp:645</a></div></div>
1007
1034
  <div class="ttc" id="anamespaceSVF_html_a962e9a9044a46fc4bd2367384f6e0827"><div class="ttname"><a href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">SVF::CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
1008
1035
  <div class="ttc" id="aclassSVF_1_1ExtAPI_html_a58a764c27354d5f9b70995d30de65f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a58a764c27354d5f9b70995d30de65f1d">SVF::ExtAPI::getExtAPI</a></div><div class="ttdeci">static ExtAPI * getExtAPI()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00042">ExtAPI.cpp:42</a></div></div>
1009
1036
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00230">SVFType.h:230</a></div></div>
@@ -1017,20 +1044,20 @@ $(function() {
1017
1044
  <div class="ttc" id="aLLVMModule_8h_html"><div class="ttname"><a href="LLVMModule_8h.html">LLVMModule.h</a></div></div>
1018
1045
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abb4b5ed04ec70a2e7fca8198132370cf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">SVF::LLVMUtil::basicBlockHasRetInst</a></div><div class="ttdeci">bool basicBlockHasRetInst(const BasicBlock *bb)</div><div class="ttdoc">Return true if the function has a return instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00119">LLVMUtil.cpp:119</a></div></div>
1019
1046
  <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#l00275">BasicTypes.h:275</a></div></div>
1020
- <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#l00535">LLVMUtil.cpp:535</a></div></div>
1047
+ <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#l00534">LLVMUtil.cpp:534</a></div></div>
1021
1048
  <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#l00141">BasicTypes.h:141</a></div></div>
1022
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2acb79d8c24884ee2dcbba37d98021d9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(Set&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00461">LLVMUtil.cpp:461</a></div></div>
1023
- <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#l00904">LLVMUtil.cpp:904</a></div></div>
1049
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2acb79d8c24884ee2dcbba37d98021d9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2acb79d8c24884ee2dcbba37d98021d9">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(Set&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00460">LLVMUtil.cpp:460</a></div></div>
1050
+ <div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00931">LLVMUtil.cpp:931</a></div></div>
1024
1051
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
1025
1052
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00219">LLVMModule.h:219</a></div></div>
1026
- <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#l00755">LLVMUtil.cpp:755</a></div></div>
1053
+ <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#l00782">LLVMUtil.cpp:782</a></div></div>
1027
1054
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector&lt; const SVFBasicBlock * &gt; &amp;bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00084">LLVMUtil.cpp:84</a></div></div>
1028
1055
  <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#l00119">BasicTypes.h:119</a></div></div>
1029
1056
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2abbe4ed46b2031a981d93b3ba9d3fbd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">SVF::LLVMUtil::viewCFGOnly</a></div><div class="ttdeci">void viewCFGOnly(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00267">LLVMUtil.cpp:267</a></div></div>
1030
1057
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00331">LLVMUtil.cpp:331</a></div></div>
1031
1058
  <div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
1032
1059
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00217">LLVMUtil.cpp:217</a></div></div>
1033
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00400">LLVMUtil.cpp:400</a></div></div>
1060
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00399">LLVMUtil.cpp:399</a></div></div>
1034
1061
  <div class="ttc" id="anamespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata and debug information.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
1035
1062
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00045">LLVMUtil.h:45</a></div></div>
1036
1063
  <div class="ttc" id="aclassSVF_1_1ExtAPI_html_a26bc352dbfd1b2fe34106a73f1f6d50c"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a26bc352dbfd1b2fe34106a73f1f6d50c">SVF::ExtAPI::getExtBcPath</a></div><div class="ttdeci">std::string getExtBcPath()</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8cpp_source.html#l00127">ExtAPI.cpp:127</a></div></div>
@@ -1039,14 +1066,14 @@ $(function() {
1039
1066
  <div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00049">GeneralType.h:49</a></div></div>
1040
1067
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00231">LLVMUtil.cpp:231</a></div></div>
1041
1068
  <div class="ttc" id="aSymbolTableInfo_8h_html"><div class="ttname"><a href="SymbolTableInfo_8h.html">SymbolTableInfo.h</a></div></div>
1042
- <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#l00628">LLVMUtil.cpp:628</a></div></div>
1069
+ <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#l00655">LLVMUtil.cpp:655</a></div></div>
1043
1070
  <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>
1044
1071
  <div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00046">GeneralType.h:46</a></div></div>
1045
1072
  <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>
1046
1073
  <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#l00144">BasicTypes.h:144</a></div></div>
1047
1074
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a757bf149437cce22163c764ea9993e12"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">SVF::LLVMModuleSet::getGlobalRep</a></div><div class="ttdeci">GlobalVariable * getGlobalRep(const GlobalVariable *val) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00322">LLVMModule.h:322</a></div></div>
1048
1075
  <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#l00184">BasicTypes.h:184</a></div></div>
1049
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5b55fce942ab6d7995541f3fe0503f8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">SVF::LLVMUtil::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00383">LLVMUtil.cpp:383</a></div></div>
1076
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5b55fce942ab6d7995541f3fe0503f8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5b55fce942ab6d7995541f3fe0503f8">SVF::LLVMUtil::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00382">LLVMUtil.cpp:382</a></div></div>
1050
1077
  <!-- start footer part -->
1051
1078
  <hr class="footer"/><address class="footer"><small>
1052
1079
  Generated by &#160;<a href="http://www.doxygen.org/index.html">