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
@@ -213,6 +213,8 @@ Functions</h2></td></tr>
213
213
  <tr class="memitem:a484bbbc9713fc4be173943e6bc177fb5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">removeUnusedFuncsAndAnnotationsAndGlobalVariables</a> (<a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>&lt; <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> * &gt; removedFuncList)</td></tr>
214
214
  <tr class="memdesc:a484bbbc9713fc4be173943e6bc177fb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete unused functions, annotations and global variables in extapi.bc. <a href="namespaceSVF_1_1LLVMUtil.html#a484bbbc9713fc4be173943e6bc177fb5">More...</a><br /></td></tr>
215
215
  <tr class="separator:a484bbbc9713fc4be173943e6bc177fb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
216
+ <tr class="memitem:af4c9c5d445107b1816a4be93852ba612"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#af4c9c5d445107b1816a4be93852ba612">restoreFuncName</a> (<a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> funcName)</td></tr>
217
+ <tr class="separator:af4c9c5d445107b1816a4be93852ba612"><td class="memSeparator" colspan="2">&#160;</td></tr>
216
218
  <tr class="memitem:ab8511d0e24da255dd518457568326c70"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">getFunction</a> (const <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &amp;<a class="el" href="cJSON_8cpp.html#acc128f98d9ceca227038c771308eff39">name</a>)</td></tr>
217
219
  <tr class="memdesc:ab8511d0e24da255dd518457568326c70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the corresponding Function based on its name. <a href="namespaceSVF_1_1LLVMUtil.html#ab8511d0e24da255dd518457568326c70">More...</a><br /></td></tr>
218
220
  <tr class="separator:ab8511d0e24da255dd518457568326c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -361,16 +363,16 @@ Functions</h2></td></tr>
361
363
  </table>
362
364
  </div><div class="memdoc">
363
365
 
364
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00879">879</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
365
- <div class="fragment"><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;{</div>
366
- <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>
367
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
368
- <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>
369
- <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>
370
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">else</span></div>
371
- <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>
372
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
373
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;}</div>
366
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00906">906</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
367
+ <div class="fragment"><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;{</div>
368
+ <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>
369
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
370
+ <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>
371
+ <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>
372
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">else</span></div>
373
+ <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>
374
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
375
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;}</div>
374
376
  </div><!-- fragment -->
375
377
  </div>
376
378
  </div>
@@ -390,16 +392,16 @@ Functions</h2></td></tr>
390
392
  </table>
391
393
  </div><div class="memdoc">
392
394
 
393
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00868">868</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
394
- <div class="fragment"><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div>
395
- <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>
396
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
397
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (val)</div>
398
- <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>
399
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">else</span></div>
400
- <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>
401
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
402
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;}</div>
395
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00895">895</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
396
+ <div class="fragment"><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;{</div>
397
+ <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>
398
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
399
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">if</span> (val)</div>
400
+ <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>
401
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">else</span></div>
402
+ <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>
403
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
404
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;}</div>
403
405
  </div><!-- fragment -->
404
406
  </div>
405
407
  </div>
@@ -419,16 +421,16 @@ Functions</h2></td></tr>
419
421
  </table>
420
422
  </div><div class="memdoc">
421
423
 
422
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00890">890</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
423
- <div class="fragment"><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;{</div>
424
- <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>
425
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
426
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span> (val)</div>
427
- <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>
428
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">else</span></div>
429
- <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>
430
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
431
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;}</div>
424
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00917">917</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
425
+ <div class="fragment"><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;{</div>
426
+ <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>
427
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
428
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (val)</div>
429
+ <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>
430
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">else</span></div>
431
+ <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>
432
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
433
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;}</div>
432
434
  </div><!-- fragment -->
433
435
  </div>
434
436
  </div>
@@ -503,13 +505,13 @@ Functions</h2></td></tr>
503
505
  <p>Get num of BB's predecessors. </p>
504
506
  <p>Get the num of BB's predecessors </p>
505
507
 
506
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00400">400</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
507
- <div class="fragment"><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;{</div>
508
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num = 0;</div>
509
- <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>
510
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; num++;</div>
511
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> num;</div>
512
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div>
508
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00399">399</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
509
+ <div class="fragment"><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;{</div>
510
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num = 0;</div>
511
+ <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>
512
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; num++;</div>
513
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> num;</div>
514
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;}</div>
513
515
  </div><!-- fragment -->
514
516
  </div>
515
517
  </div>
@@ -531,24 +533,24 @@ Functions</h2></td></tr>
531
533
 
532
534
  <p>Get all called funcions in a parent function. </p>
533
535
 
534
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00516">516</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
535
- <div class="fragment"><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div>
536
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
537
- <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>
538
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div>
539
- <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>
540
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
541
- <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>
542
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
543
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
544
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; calledFunctions.push_back(calledFunction);</div>
545
- <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>
546
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
547
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
548
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
549
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div>
550
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
551
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;}</div>
536
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00515">515</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
537
+ <div class="fragment"><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;{</div>
538
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
539
+ <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>
540
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; {</div>
541
+ <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>
542
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div>
543
+ <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>
544
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
545
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div>
546
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; calledFunctions.push_back(calledFunction);</div>
547
+ <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>
548
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
549
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div>
550
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
551
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
552
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
553
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;}</div>
552
554
  </div><!-- fragment -->
553
555
  </div>
554
556
  </div>
@@ -615,28 +617,28 @@ Functions</h2></td></tr>
615
617
  <p>get normal case value</p>
616
618
  <p>For larger number, we preserve case value just -1 now see more: <a href="https://github.com/SVF-tools/SVF/pull/992">https://github.com/SVF-tools/SVF/pull/992</a></p>
617
619
 
618
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00841">841</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
619
- <div class="fragment"><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;{</div>
620
- <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>
621
- <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>
622
- <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>
623
- <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>
624
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
625
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; val = -1;</div>
626
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div>
627
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">else</span></div>
628
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; {</div>
629
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
630
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
631
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; val = caseValue-&gt;getSExtValue();</div>
632
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div>
633
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">else</span></div>
634
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div>
635
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; val = -1;</div>
636
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div>
637
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; }</div>
638
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">return</span> val;</div>
639
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;}</div>
620
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00868">868</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
621
+ <div class="fragment"><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div>
622
+ <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>
623
+ <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>
624
+ <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>
625
+ <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>
626
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; {</div>
627
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; val = -1;</div>
628
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div>
629
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">else</span></div>
630
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; {</div>
631
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
632
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div>
633
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; val = caseValue-&gt;getSExtValue();</div>
634
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; }</div>
635
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">else</span></div>
636
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; {</div>
637
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; val = -1;</div>
638
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; }</div>
639
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
640
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">return</span> val;</div>
641
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;}</div>
640
642
  </div><!-- fragment -->
641
643
  </div>
642
644
  </div>
@@ -724,18 +726,17 @@ Functions</h2></td></tr>
724
726
 
725
727
  <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00364">364</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
726
728
  <div class="fragment"><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;{</div>
727
- <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>
728
- <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>
729
- <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>
730
- <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>
731
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
732
- <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>
733
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; latestUse = it.getUser();</div>
734
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span></div>
735
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
736
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
737
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
738
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;}</div>
729
+ <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>
730
+ <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>
731
+ <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>
732
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
733
+ <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>
734
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; latestUse = it.getUser();</div>
735
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></div>
736
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
737
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
738
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
739
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div>
739
740
  </div><!-- fragment -->
740
741
  </div>
741
742
  </div>
@@ -757,10 +758,10 @@ Functions</h2></td></tr>
757
758
 
758
759
  <p>Get the corresponding Function based on its name. </p>
759
760
 
760
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00613">613</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
761
- <div class="fragment"><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;{</div>
762
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
763
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;}</div>
761
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00640">640</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
762
+ <div class="fragment"><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;{</div>
763
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
764
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;}</div>
764
765
  </div><!-- fragment -->
765
766
  </div>
766
767
  </div>
@@ -845,15 +846,15 @@ Functions</h2></td></tr>
845
846
 
846
847
  <p>find the unique defined global across multiple modules </p>
847
848
 
848
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00618">618</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
849
- <div class="fragment"><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;{</div>
850
- <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>
851
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {</div>
852
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
853
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
854
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div>
855
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> val;</div>
856
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;}</div>
849
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00645">645</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
850
+ <div class="fragment"><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;{</div>
851
+ <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>
852
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div>
853
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
854
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
855
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div>
856
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">return</span> val;</div>
857
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;}</div>
857
858
  </div><!-- fragment -->
858
859
  </div>
859
860
  </div>
@@ -952,30 +953,30 @@ Functions</h2></td></tr>
952
953
 
953
954
  <p>Get the next instructions following control flow. </p>
954
955
 
955
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00772">772</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
956
- <div class="fragment"><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;{</div>
957
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
958
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div>
959
- <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>
960
- <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>
961
- <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>
962
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">else</span></div>
963
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; instList.push_back(nextInst);</div>
964
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div>
965
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">else</span></div>
966
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div>
967
- <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>
968
- <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>
969
- <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>
970
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div>
971
- <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>
972
- <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>
973
- <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>
974
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">else</span></div>
975
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; instList.push_back(nextInst);</div>
976
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div>
977
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
978
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;}</div>
956
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00799">799</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
957
+ <div class="fragment"><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;{</div>
958
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
959
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div>
960
+ <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>
961
+ <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>
962
+ <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>
963
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">else</span></div>
964
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; instList.push_back(nextInst);</div>
965
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div>
966
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">else</span></div>
967
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {</div>
968
+ <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>
969
+ <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>
970
+ <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>
971
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
972
+ <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>
973
+ <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>
974
+ <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>
975
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span></div>
976
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; instList.push_back(nextInst);</div>
977
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
978
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
979
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;}</div>
979
980
  </div><!-- fragment -->
980
981
  </div>
981
982
  </div>
@@ -1055,19 +1056,19 @@ Functions</h2></td></tr>
1055
1056
  <p>Return size of this object based on LLVM value. </p>
1056
1057
  <p>Return size of this Object </p>
1057
1058
 
1058
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00383">383</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1059
- <div class="fragment"><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;{</div>
1060
- <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>
1061
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> numOfFields = 1;</div>
1062
- <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>
1063
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
1064
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">if</span>(Options::ModelArrays())</div>
1065
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(ety)-&gt;getTypeInfo()-&gt;getNumOfFlattenElements();</div>
1066
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">else</span></div>
1067
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(ety)-&gt;getTypeInfo()-&gt;getNumOfFlattenFields();</div>
1068
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
1069
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
1070
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;}</div>
1059
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00382">382</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1060
+ <div class="fragment"><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;{</div>
1061
+ <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>
1062
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> numOfFields = 1;</div>
1063
+ <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>
1064
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div>
1065
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span>(Options::ModelArrays())</div>
1066
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(ety)-&gt;getTypeInfo()-&gt;getNumOfFlattenElements();</div>
1067
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">else</span></div>
1068
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(ety)-&gt;getTypeInfo()-&gt;getNumOfFlattenFields();</div>
1069
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
1070
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
1071
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;}</div>
1071
1072
  </div><!-- fragment -->
1072
1073
  </div>
1073
1074
  </div>
@@ -1099,30 +1100,30 @@ Functions</h2></td></tr>
1099
1100
 
1100
1101
  <p>Get the previous instructions following control flow. </p>
1101
1102
 
1102
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00799">799</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1103
- <div class="fragment"><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;{</div>
1104
- <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>
1105
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div>
1106
- <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>
1107
- <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>
1108
- <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>
1109
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">else</span></div>
1110
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; instList.push_back(prevInst);</div>
1111
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div>
1112
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">else</span></div>
1113
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {</div>
1114
- <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>
1115
- <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>
1116
- <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>
1117
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div>
1118
- <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>
1119
- <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>
1120
- <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>
1121
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span></div>
1122
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; instList.push_back(prevInst);</div>
1123
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
1124
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
1125
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;}</div>
1103
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00826">826</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1104
+ <div class="fragment"><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;{</div>
1105
+ <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>
1106
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div>
1107
+ <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>
1108
+ <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>
1109
+ <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>
1110
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">else</span></div>
1111
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; instList.push_back(prevInst);</div>
1112
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div>
1113
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">else</span></div>
1114
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div>
1115
+ <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>
1116
+ <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>
1117
+ <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>
1118
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
1119
+ <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>
1120
+ <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>
1121
+ <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>
1122
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">else</span></div>
1123
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; instList.push_back(prevInst);</div>
1124
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div>
1125
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div>
1126
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;}</div>
1126
1127
  </div><!-- fragment -->
1127
1128
  </div>
1128
1129
  </div>
@@ -1272,105 +1273,105 @@ Functions</h2></td></tr>
1272
1273
  </div><div class="memdoc">
1273
1274
  <p>Get the meta data (line number and file name) info of a LLVM value </p>
1274
1275
 
1275
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00651">651</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1276
- <div class="fragment"><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div>
1277
- <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>
1278
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; </div>
1279
- <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>
1280
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; std::stringstream rawstr(str);</div>
1281
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1282
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; </div>
1283
- <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>
1284
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div>
1285
- <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>
1286
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
1287
- <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>
1288
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
1289
- <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>
1290
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; {</div>
1291
- <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>
1292
- <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>
1293
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">break</span>;</div>
1294
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div>
1295
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
1296
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div>
1297
- <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>
1298
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
1299
- <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>
1300
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1301
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1302
- <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>
1303
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1304
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1305
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div>
1306
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1307
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1308
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {</div>
1309
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1310
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1311
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1312
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div>
1313
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div>
1314
- <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>
1315
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div>
1316
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div>
1317
- <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>
1318
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div>
1319
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1320
- <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>
1321
- <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>
1322
- <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>
1323
- <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>
1324
- <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>
1325
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">else</span></div>
1326
- <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>
1327
- <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>
1328
- <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>
1329
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div>
1330
- <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>
1331
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div>
1332
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1333
- <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>
1334
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1335
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
1336
- <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>
1337
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
1338
- <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>
1339
- <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>
1340
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
1341
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1342
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; </div>
1343
- <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>
1344
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
1345
- <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>
1346
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
1347
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; </div>
1348
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
1349
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div>
1350
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
1351
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div>
1352
- <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>
1353
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div>
1354
- <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>
1355
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
1356
- <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>
1357
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div>
1358
- <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>
1359
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div>
1360
- <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>
1361
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div>
1362
- <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>
1363
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div>
1364
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">else</span></div>
1365
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div>
1366
- <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>
1367
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div>
1368
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1276
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00678">678</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1277
+ <div class="fragment"><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;{</div>
1278
+ <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>
1279
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; </div>
1280
+ <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>
1281
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; std::stringstream rawstr(str);</div>
1282
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1283
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; </div>
1284
+ <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>
1285
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div>
1286
+ <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>
1287
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div>
1288
+ <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>
1289
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div>
1290
+ <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>
1291
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div>
1292
+ <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>
1293
+ <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>
1294
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">break</span>;</div>
1295
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
1296
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div>
1297
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
1298
+ <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>
1299
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
1300
+ <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>
1301
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1302
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1303
+ <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>
1304
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1305
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1306
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div>
1307
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1308
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1309
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
1310
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1311
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1312
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1313
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div>
1314
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
1315
+ <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>
1316
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div>
1317
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
1318
+ <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>
1319
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div>
1320
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1321
+ <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>
1322
+ <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>
1323
+ <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>
1324
+ <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>
1325
+ <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>
1326
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">else</span></div>
1327
+ <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>
1328
+ <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>
1329
+ <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>
1330
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; }</div>
1331
+ <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>
1332
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div>
1333
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1334
+ <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>
1335
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1336
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {</div>
1337
+ <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>
1338
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div>
1339
+ <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>
1340
+ <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>
1341
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div>
1342
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1369
1343
  <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; </div>
1370
- <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>
1371
- <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>
1372
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1373
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;}</div>
1344
+ <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>
1345
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; {</div>
1346
+ <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>
1347
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
1348
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; </div>
1349
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div>
1350
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; }</div>
1351
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div>
1352
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div>
1353
+ <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>
1354
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div>
1355
+ <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>
1356
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; }</div>
1357
+ <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>
1358
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; {</div>
1359
+ <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>
1360
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div>
1361
+ <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>
1362
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div>
1363
+ <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>
1364
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div>
1365
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">else</span></div>
1366
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div>
1367
+ <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>
1368
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
1369
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1370
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; </div>
1371
+ <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>
1372
+ <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>
1373
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1374
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;}</div>
1374
1375
  </div><!-- fragment -->
1375
1376
  </div>
1376
1377
  </div>
@@ -1391,21 +1392,21 @@ Functions</h2></td></tr>
1391
1392
  </div><div class="memdoc">
1392
1393
  <p>Get source code line number of a function according to debug info </p>
1393
1394
 
1394
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00755">755</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1395
- <div class="fragment"><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;{</div>
1396
- <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>
1397
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; std::stringstream rawstr(str);</div>
1398
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">/*</span></div>
1399
- <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>
1400
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1401
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="comment"> */</span></div>
1402
- <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>
1403
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div>
1404
- <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>
1405
- <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>
1406
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div>
1407
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1408
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;}</div>
1395
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00782">782</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1396
+ <div class="fragment"><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;{</div>
1397
+ <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>
1398
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; std::stringstream rawstr(str);</div>
1399
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="comment">/*</span></div>
1400
+ <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>
1401
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1402
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="comment"> */</span></div>
1403
+ <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>
1404
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; {</div>
1405
+ <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>
1406
+ <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>
1407
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
1408
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1409
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;}</div>
1409
1410
  </div><!-- fragment -->
1410
1411
  </div>
1411
1412
  </div>
@@ -1441,15 +1442,15 @@ Functions</h2></td></tr>
1441
1442
  <p>switch i32 %0, label sw.default [ i32 0, label sw.bb i32 1, label sw.bb1 i32 2, label sw.bb1 i32 3, label sw.bb1 i32 4, label sw.bb3 i32 6, label sw.bb3 i32 7, label sw.bb3 ]</p>
1442
1443
  <p>We can get every case basic block and related case value: [ {sw.default, -1}, {sw.bb, 0}, {sw.bb1, 1}, {sw.bb1, 2}, {sw.bb1, 3}, {sw.bb3, 4}, {sw.bb3, 6}, {sw.bb3, 7}, ] Note: default case value is nullptr </p>
1443
1444
 
1444
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00831">831</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1445
- <div class="fragment"><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;{</div>
1446
- <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>
1447
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
1448
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; </div>
1449
- <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>
1450
- <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>
1451
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
1452
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;}</div>
1445
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00858">858</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1446
+ <div class="fragment"><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;{</div>
1447
+ <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>
1448
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
1449
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; </div>
1450
+ <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>
1451
+ <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>
1452
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
1453
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;}</div>
1453
1454
  </div><!-- fragment -->
1454
1455
  </div>
1455
1456
  </div>
@@ -1480,15 +1481,15 @@ Functions</h2></td></tr>
1480
1481
  </div><div class="memdoc">
1481
1482
  <p>if this struct type does not have any element, i.e., opaque</p>
1482
1483
 
1483
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00637">637</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1484
- <div class="fragment"><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div>
1485
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; </div>
1486
- <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>(LLVMModuleSet::getLLVMModuleSet()-&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>
1487
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1488
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> 0;</div>
1489
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">else</span></div>
1490
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1491
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div>
1484
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00664">664</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1485
+ <div class="fragment"><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;{</div>
1486
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; </div>
1487
+ <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>(LLVMModuleSet::getLLVMModuleSet()-&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>
1488
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1489
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> 0;</div>
1490
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">else</span></div>
1491
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1492
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;}</div>
1492
1493
  </div><!-- fragment -->
1493
1494
  </div>
1494
1495
  </div>
@@ -1510,14 +1511,14 @@ Functions</h2></td></tr>
1510
1511
 
1511
1512
  <p>Helper method to get the size of the type from target data layout. </p>
1512
1513
 
1513
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00628">628</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1514
- <div class="fragment"><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;{</div>
1515
- <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>
1516
- <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>
1517
- <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>(LLVMModuleSet::getLLVMModuleSet()-&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>
1518
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">else</span></div>
1519
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">return</span> 0;</div>
1520
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;}</div>
1514
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00655">655</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1515
+ <div class="fragment"><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;{</div>
1516
+ <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>
1517
+ <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>
1518
+ <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>(LLVMModuleSet::getLLVMModuleSet()-&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>
1519
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">else</span></div>
1520
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> 0;</div>
1521
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div>
1521
1522
  </div><!-- fragment -->
1522
1523
  </div>
1523
1524
  </div>
@@ -1782,10 +1783,10 @@ Functions</h2></td></tr>
1782
1783
 
1783
1784
  <p>Check whether this value points-to a constant object. </p>
1784
1785
 
1785
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00825">825</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1786
- <div class="fragment"><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;{</div>
1787
- <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>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
1788
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;}</div>
1786
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00852">852</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1787
+ <div class="fragment"><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;{</div>
1788
+ <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>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
1789
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;}</div>
1789
1790
  </div><!-- fragment -->
1790
1791
  </div>
1791
1792
  </div>
@@ -1864,11 +1865,11 @@ Functions</h2></td></tr>
1864
1865
 
1865
1866
  <p>Return true if the value refers to constant data, e.g., i32 0. </p>
1866
1867
 
1867
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00340">340</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1868
- <div class="fragment"><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;{</div>
1869
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVFUtil::isa</a>&lt;<a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>, <a class="code" href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">ConstantAggregate</a>,</div>
1870
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">MetadataAsValue</a>, <a class="code" href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">BlockAddress</a>&gt;(val);</div>
1871
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;}</div>
1868
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00342">342</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1869
+ <div class="fragment"><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;{</div>
1870
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVFUtil::isa</a>&lt;<a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>, <a class="code" href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">ConstantAggregate</a>,</div>
1871
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">MetadataAsValue</a>, <a class="code" href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">BlockAddress</a>&gt;(val);</div>
1872
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;}</div>
1872
1873
  </div><!-- fragment -->
1873
1874
  </div>
1874
1875
  </div>
@@ -2028,23 +2029,23 @@ Functions</h2></td></tr>
2028
2029
 
2029
2030
  <p>Check whether a file is an LLVM IR file. </p>
2030
2031
 
2031
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00413">413</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2032
- <div class="fragment"><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;{</div>
2033
- <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>
2034
- <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>
2035
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; </div>
2036
- <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>
2037
- <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>
2038
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; </div>
2039
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// Check if the parsing succeeded</span></div>
2040
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (!module)</div>
2041
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
2042
- <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>
2043
- <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>
2044
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
2045
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; </div>
2046
- <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>
2047
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div>
2032
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00412">412</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2033
+ <div class="fragment"><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;{</div>
2034
+ <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>
2035
+ <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>
2036
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; </div>
2037
+ <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>
2038
+ <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>
2039
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; </div>
2040
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// Check if the parsing succeeded</span></div>
2041
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (!module)</div>
2042
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div>
2043
+ <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>
2044
+ <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>
2045
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
2046
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; </div>
2047
+ <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>
2048
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;}</div>
2048
2049
  </div><!-- fragment -->
2049
2050
  </div>
2050
2051
  </div>
@@ -2434,20 +2435,20 @@ Functions</h2></td></tr>
2434
2435
  </table>
2435
2436
  </div><div class="memdoc">
2436
2437
 
2437
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00535">535</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2438
- <div class="fragment"><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;{</div>
2439
- <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>
2440
- <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>
2441
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2442
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">else</span></div>
2443
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
2444
- <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>
2445
- <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>
2446
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
2447
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2448
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
2449
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2450
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;}</div>
2438
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00534">534</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2439
+ <div class="fragment"><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;{</div>
2440
+ <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>
2441
+ <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>
2442
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2443
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span></div>
2444
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
2445
+ <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>
2446
+ <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>
2447
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
2448
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2449
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
2450
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2451
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;}</div>
2451
2452
  </div><!-- fragment -->
2452
2453
  </div>
2453
2454
  </div>
@@ -2498,31 +2499,31 @@ Functions</h2></td></tr>
2498
2499
  <p>Parse argument for multi-module analysis. </p>
2499
2500
  <p>Get the names of all modules into a vector And process arguments </p>
2500
2501
 
2501
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00434">434</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2502
- <div class="fragment"><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;{</div>
2503
- <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>
2504
- <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>
2505
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div>
2506
- <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>
2507
- <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>
2508
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div>
2509
- <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>
2510
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; == moduleNameVec.end())</div>
2511
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; moduleNameVec.push_back(argument);</div>
2512
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
2513
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div>
2514
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; arg_value[arg_num] = argv[i];</div>
2515
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; arg_num++;</div>
2516
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
2517
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
2518
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
2519
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span></div>
2520
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
2521
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; arg_value[arg_num] = argv[i];</div>
2522
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; arg_num++;</div>
2523
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
2524
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
2525
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;}</div>
2502
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00433">433</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2503
+ <div class="fragment"><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;{</div>
2504
+ <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>
2505
+ <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>
2506
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div>
2507
+ <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>
2508
+ <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>
2509
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
2510
+ <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>
2511
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; == moduleNameVec.end())</div>
2512
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; moduleNameVec.push_back(argument);</div>
2513
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
2514
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
2515
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; arg_value[arg_num] = argv[i];</div>
2516
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; arg_num++;</div>
2517
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
2518
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
2519
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
2520
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">else</span></div>
2521
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div>
2522
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; arg_value[arg_num] = argv[i];</div>
2523
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; arg_num++;</div>
2524
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
2525
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
2526
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div>
2526
2527
  </div><!-- fragment -->
2527
2528
  </div>
2528
2529
  </div>
@@ -2542,59 +2543,59 @@ Functions</h2></td></tr>
2542
2543
  </table>
2543
2544
  </div><div class="memdoc">
2544
2545
 
2545
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00461">461</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2546
- <div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div>
2547
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
2548
- <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>
2549
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; </div>
2550
- <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>
2551
- <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>
2552
- <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>
2553
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span>;</div>
2554
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
2555
- <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>
2556
- <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>
2557
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span>;</div>
2558
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
2559
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
2560
- <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>
2561
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div>
2562
- <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>
2563
- <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>
2564
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">continue</span>;</div>
2565
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
2566
- <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>
2567
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
2568
- <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>
2569
- <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>
2570
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div>
2571
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast)</div>
2572
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div>
2573
- <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>
2574
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
2575
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
2576
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; </div>
2577
- <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>
2578
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (!annotatedFunc)</div>
2579
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
2580
- <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>
2581
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div>
2582
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; </div>
2583
- <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>
2584
- <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>
2585
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
2586
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; newAnnotations.push_back(structAn);</div>
2587
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
2588
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
2589
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
2590
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
2591
- <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>
2592
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; </div>
2593
- <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>
2594
- <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>
2595
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
2596
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; glob-&gt;setInitializer(newCA);</div>
2597
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div>
2546
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00460">460</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2547
+ <div class="fragment"><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;{</div>
2548
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
2549
+ <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>
2550
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
2551
+ <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>
2552
+ <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>
2553
+ <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>
2554
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span>;</div>
2555
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; </div>
2556
+ <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>
2557
+ <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>
2558
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span>;</div>
2559
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
2560
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
2561
+ <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>
2562
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; {</div>
2563
+ <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>
2564
+ <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>
2565
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">continue</span>;</div>
2566
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
2567
+ <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>
2568
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
2569
+ <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>
2570
+ <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>
2571
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div>
2572
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (expr-&gt;getOpcode() == Instruction::BitCast)</div>
2573
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
2574
+ <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>
2575
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
2576
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
2577
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; </div>
2578
+ <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>
2579
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (!annotatedFunc)</div>
2580
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div>
2581
+ <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>
2582
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
2583
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
2584
+ <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>
2585
+ <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>
2586
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div>
2587
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; newAnnotations.push_back(structAn);</div>
2588
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
2589
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
2590
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
2591
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
2592
+ <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>
2593
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; </div>
2594
+ <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>
2595
+ <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>
2596
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; </div>
2597
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; glob-&gt;setInitializer(newCA);</div>
2598
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div>
2598
2599
  </div><!-- fragment -->
2599
2600
  </div>
2600
2601
  </div>
@@ -2619,45 +2620,45 @@ Functions</h2></td></tr>
2619
2620
  <p>Delete unused functions The functions to be deleted from extapi.bc can be categorized into two types. The first type includes functions do not contain any invocation statements, The second type includes functions whose contain invocation statements. It is necessary to delete functions of the second type first before deleting those of the first type; Otherwise, errors may occur when calling eraseFromParent().</p>
2620
2621
  <p>Check whether a function is called by other functions</p>
2621
2622
 
2622
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00565">565</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2623
- <div class="fragment"><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;{</div>
2624
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
2625
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span>;</div>
2626
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; </div>
2627
- <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>
2628
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != ExtAPI::getExtAPI()-&gt;getExtBcPath())</div>
2629
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span>;</div>
2630
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; </div>
2631
- <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>
2632
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
2633
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
2634
- <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>
2635
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div>
2636
- <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>
2637
- <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>
2638
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div>
2639
- <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>
2640
- <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>
2641
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2642
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
2643
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2644
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; };</div>
2645
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; </div>
2646
- <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>
2647
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div>
2648
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
2649
- <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>
2650
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; funcsToKeep.push_back(func);</div>
2651
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">else</span></div>
2652
- <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>
2653
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; func-&gt;eraseFromParent();</div>
2654
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div>
2655
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="comment">// Delete first kind functions</span></div>
2656
- <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>
2657
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; func-&gt;eraseFromParent();</div>
2658
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// Delete unused global variables</span></div>
2659
- <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>
2660
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;}</div>
2623
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00564">564</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2624
+ <div class="fragment"><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;{</div>
2625
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
2626
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span>;</div>
2627
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
2628
+ <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>
2629
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != ExtAPI::getExtAPI()-&gt;getExtBcPath())</div>
2630
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span>;</div>
2631
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
2632
+ <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>
2633
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; </div>
2634
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
2635
+ <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>
2636
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
2637
+ <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>
2638
+ <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>
2639
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div>
2640
+ <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>
2641
+ <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>
2642
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2643
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
2644
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2645
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; };</div>
2646
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; </div>
2647
+ <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>
2648
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div>
2649
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
2650
+ <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>
2651
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; funcsToKeep.push_back(func);</div>
2652
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">else</span></div>
2653
+ <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>
2654
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; func-&gt;eraseFromParent();</div>
2655
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div>
2656
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// Delete first kind functions</span></div>
2657
+ <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>
2658
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; func-&gt;eraseFromParent();</div>
2659
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="comment">// Delete unused global variables</span></div>
2660
+ <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>
2661
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div>
2661
2662
  </div><!-- fragment -->
2662
2663
  </div>
2663
2664
  </div>
@@ -2677,19 +2678,65 @@ Functions</h2></td></tr>
2677
2678
  </table>
2678
2679
  </div><div class="memdoc">
2679
2680
 
2680
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00550">550</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2681
- <div class="fragment"><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;{</div>
2682
- <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>
2683
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
2684
- <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>
2685
- <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>
2686
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// Record unused global variables</span></div>
2687
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; unusedGlobals.push_back(&amp;global);</div>
2688
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; </div>
2689
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// Delete unused global variables</span></div>
2690
- <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>
2691
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; global-&gt;eraseFromParent();</div>
2692
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;}</div>
2681
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00549">549</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2682
+ <div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;{</div>
2683
+ <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>
2684
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
2685
+ <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>
2686
+ <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>
2687
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// Record unused global variables</span></div>
2688
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; unusedGlobals.push_back(&amp;global);</div>
2689
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; </div>
2690
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// Delete unused global variables</span></div>
2691
+ <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>
2692
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; global-&gt;eraseFromParent();</div>
2693
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div>
2694
+ </div><!-- fragment -->
2695
+ </div>
2696
+ </div>
2697
+ <a id="af4c9c5d445107b1816a4be93852ba612"></a>
2698
+ <h2 class="memtitle"><span class="permalink"><a href="#af4c9c5d445107b1816a4be93852ba612">&#9670;&nbsp;</a></span>restoreFuncName()</h2>
2699
+
2700
+ <div class="memitem">
2701
+ <div class="memproto">
2702
+ <table class="memname">
2703
+ <tr>
2704
+ <td class="memname"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::LLVMUtil::restoreFuncName </td>
2705
+ <td>(</td>
2706
+ <td class="paramtype"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>&#160;</td>
2707
+ <td class="paramname"><em>funcName</em></td><td>)</td>
2708
+ <td></td>
2709
+ </tr>
2710
+ </table>
2711
+ </div><div class="memdoc">
2712
+
2713
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00612">612</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2714
+ <div class="fragment"><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;{</div>
2715
+ <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>
2716
+ <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>
2717
+ <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>
2718
+ <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>
2719
+ <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>
2720
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; </div>
2721
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> (!hasDot &amp;&amp; !hasSpecialPrefix)</div>
2722
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> funcName;</div>
2723
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div>
2724
+ <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>
2725
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span> (hasSpecialPrefix)</div>
2726
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div>
2727
+ <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>
2728
+ <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>
2729
+ <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>
2730
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; funcName = funcName.substr(prefix1.length());</div>
2731
+ <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>
2732
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; funcName = funcName.substr(prefix2.length());</div>
2733
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div>
2734
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="comment">// Replace &#39;.&#39; with &#39;_&#39;</span></div>
2735
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (hasDot)</div>
2736
+ <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>
2737
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; </div>
2738
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> funcName;</div>
2739
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;}</div>
2693
2740
  </div><!-- fragment -->
2694
2741
  </div>
2695
2742
  </div>
@@ -2824,8 +2871,8 @@ Functions</h2></td></tr>
2824
2871
  </div>
2825
2872
  </div><!-- contents -->
2826
2873
  <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>
2827
- <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>
2828
- <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>
2874
+ <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>
2875
+ <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>
2829
2876
  <div class="ttc" id="anamespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00271">CppUtil.cpp:271</a></div></div>
2830
2877
  <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>
2831
2878
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aeaa116fd9718c8b31f30d3fe62bb6403"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aeaa116fd9718c8b31f30d3fe62bb6403">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Value *val)</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#l00050">LLVMUtil.h:50</a></div></div>
@@ -2834,19 +2881,18 @@ Functions</h2></td></tr>
2834
2881
  <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>
2835
2882
  <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>
2836
2883
  <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>
2837
- <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>
2838
2884
  <div class="ttc" id="anamespaceSVF_html_a03db82b8a7914367024723dba4d6ca3c"><div class="ttname"><a href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">SVF::DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
2839
2885
  <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>
2840
2886
  <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>
2841
2887
  <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>
2842
- <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>
2888
+ <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>
2843
2889
  <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>
2844
- <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>
2890
+ <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>
2845
2891
  <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>
2846
2892
  <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>
2847
2893
  <div class="ttc" id="anamespaceSVF_html_a7cbe1c6567039e72958fd70e423d3597"><div class="ttname"><a href="namespaceSVF.html#a7cbe1c6567039e72958fd70e423d3597">SVF::ConstantAggregate</a></div><div class="ttdeci">llvm::ConstantAggregate ConstantAggregate</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00116">BasicTypes.h:116</a></div></div>
2848
2894
  <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>
2849
- <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>
2895
+ <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>
2850
2896
  <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>
2851
2897
  <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>
2852
2898
  <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>
@@ -2863,11 +2909,11 @@ Functions</h2></td></tr>
2863
2909
  <div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00156">SVFType.h:156</a></div></div>
2864
2910
  <div class="ttc" id="aclassSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00046">SVFType.h:46</a></div></div>
2865
2911
  <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>
2866
- <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>
2912
+ <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>
2867
2913
  <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>
2868
2914
  <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>
2869
2915
  <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>
2870
- <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>
2916
+ <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>
2871
2917
  <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>
2872
2918
  <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>
2873
2919
  <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>
@@ -2884,11 +2930,11 @@ Functions</h2></td></tr>
2884
2930
  <div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
2885
2931
  <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>
2886
2932
  <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>
2887
- <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>
2933
+ <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>
2888
2934
  <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>
2889
- <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>
2935
+ <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>
2890
2936
  <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>
2891
- <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>
2937
+ <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>
2892
2938
  <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>
2893
2939
  <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>
2894
2940
  <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>