svf-tools 1.0.828 → 1.0.830

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 (398) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +225 -224
  2. package/SVF-doxygen/html/AccessPath_8h_source.html +11 -11
  3. package/SVF-doxygen/html/AndersenSFR_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/BasicTypes_8h.html +2 -0
  6. package/SVF-doxygen/html/BasicTypes_8h_source.html +123 -121
  7. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +11 -11
  10. package/SVF-doxygen/html/ConsG_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/ConsG_8h_source.html +1 -1
  12. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/ContextDDA_8h_source.html +1 -1
  14. package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
  15. package/SVF-doxygen/html/DCHG_8cpp_source.html +12 -12
  16. package/SVF-doxygen/html/DCHG_8h_source.html +5 -5
  17. package/SVF-doxygen/html/DDAClient_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/DDAStat_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/DDAVFSolver_8h_source.html +4 -4
  20. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/FlowDDA_8h_source.html +1 -1
  22. package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/IRGraph_8h_source.html +2 -2
  26. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +145 -144
  27. package/SVF-doxygen/html/LLVMModule_8h_source.html +3 -3
  28. package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +1135 -1037
  29. package/SVF-doxygen/html/LLVMUtil_8h.html +8 -5
  30. package/SVF-doxygen/html/LLVMUtil_8h_source.html +418 -415
  31. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/MemRegion_8cpp_source.html +3 -3
  35. package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  37. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +363 -362
  38. package/SVF-doxygen/html/PointerAnalysis_8h_source.html +13 -13
  39. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +7 -7
  40. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +11 -10
  41. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +927 -924
  42. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +35 -34
  43. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +2 -2
  44. package/SVF-doxygen/html/SVFIR_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/SVFIR_8h_source.html +1 -1
  46. package/SVF-doxygen/html/SVFStat_8cpp_source.html +12 -12
  47. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/SVFStatements_8h_source.html +2 -2
  49. package/SVF-doxygen/html/SVFType_8cpp_source.html +38 -37
  50. package/SVF-doxygen/html/SVFType_8h_source.html +5 -5
  51. package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  53. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/SVFVariables_8h_source.html +1 -1
  55. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/Steensgaard_8cpp_source.html +1 -1
  57. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +651 -640
  58. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +18 -18
  59. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +339 -338
  60. package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +33 -33
  61. package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/classSVF_1_1AccessPath-members.html +3 -3
  64. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +236 -235
  65. package/SVF-doxygen/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  66. package/SVF-doxygen/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  67. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  68. package/SVF-doxygen/html/classSVF_1_1AliasDDAClient.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +1 -1
  71. package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +4 -4
  72. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  73. package/SVF-doxygen/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  75. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +3 -3
  76. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +11 -11
  77. package/SVF-doxygen/html/classSVF_1_1CallCFGEdge.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  79. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1CmpVFGNode.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +2 -2
  82. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1CxtStmt.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1CxtThread.html +1 -1
  85. package/SVF-doxygen/html/classSVF_1_1CxtThreadStmt.html +1 -1
  86. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +12 -12
  87. package/SVF-doxygen/html/classSVF_1_1DDAStat.html +1 -1
  88. package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
  89. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  90. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +2 -2
  92. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +1 -1
  93. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  94. package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +1 -1
  96. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +2 -2
  97. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +3 -3
  98. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  99. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  100. package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
  101. package/SVF-doxygen/html/classSVF_1_1IRGraph.html +2 -2
  102. package/SVF-doxygen/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  103. package/SVF-doxygen/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  104. package/SVF-doxygen/html/classSVF_1_1IntraCFGEdge.html +1 -1
  105. package/SVF-doxygen/html/classSVF_1_1IntraICFGNode.html +1 -1
  106. package/SVF-doxygen/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  107. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +141 -140
  108. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
  109. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  110. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  111. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  112. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +3 -3
  113. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
  114. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  115. package/SVF-doxygen/html/classSVF_1_1MemObj.html +121 -121
  116. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
  117. package/SVF-doxygen/html/classSVF_1_1ObjTypeInfo.html +29 -30
  118. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +2 -2
  119. package/SVF-doxygen/html/classSVF_1_1PHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  121. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +342 -341
  122. package/SVF-doxygen/html/classSVF_1_1RetCFGEdge.html +1 -1
  123. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  124. package/SVF-doxygen/html/classSVF_1_1SVFArrayType.html +4 -4
  125. package/SVF-doxygen/html/classSVF_1_1SVFFunctionType.html +4 -4
  126. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +1 -1
  127. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +6 -6
  128. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +11 -10
  129. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +868 -864
  130. package/SVF-doxygen/html/classSVF_1_1SVFIntegerType.html +7 -7
  131. package/SVF-doxygen/html/classSVF_1_1SVFOtherType.html +4 -4
  132. package/SVF-doxygen/html/classSVF_1_1SVFPointerType.html +3 -2
  133. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +12 -12
  134. package/SVF-doxygen/html/classSVF_1_1SVFStructType.html +4 -4
  135. package/SVF-doxygen/html/classSVF_1_1SVFValue.html +23 -23
  136. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  137. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  138. package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +1 -1
  139. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  140. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder-members.html +1 -1
  141. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +642 -629
  142. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +125 -124
  143. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  144. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  145. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  146. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
  147. package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +2 -2
  148. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  149. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  150. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  151. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  152. package/SVF-doxygen/html/functions_a.html +1 -1
  153. package/SVF-doxygen/html/functions_func.html +1 -1
  154. package/SVF-doxygen/html/functions_func_g.html +10 -10
  155. package/SVF-doxygen/html/functions_func_p.html +1 -1
  156. package/SVF-doxygen/html/functions_g.html +6 -6
  157. package/SVF-doxygen/html/functions_r.html +2 -2
  158. package/SVF-doxygen/html/functions_s.html +5 -5
  159. package/SVF-doxygen/html/functions_t.html +7 -7
  160. package/SVF-doxygen/html/functions_v.html +3 -1
  161. package/SVF-doxygen/html/functions_w.html +8 -8
  162. package/SVF-doxygen/html/menudata.js +0 -1
  163. package/SVF-doxygen/html/namespaceSVF.html +43 -25
  164. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1280 -1152
  165. package/SVF-doxygen/html/namespacemembers_d.html +7 -1
  166. package/SVF-doxygen/html/namespacemembers_func_d.html +7 -1
  167. package/SVF-doxygen/html/namespacemembers_func_g.html +7 -4
  168. package/SVF-doxygen/html/namespacemembers_g.html +11 -5
  169. package/SVF-doxygen/html/namespacemembers_l.html +0 -3
  170. package/SVF-doxygen/html/namespacemembers_type_g.html +3 -0
  171. package/SVF-doxygen/html/search/all_1.js +1 -1
  172. package/SVF-doxygen/html/search/all_10.js +324 -324
  173. package/SVF-doxygen/html/search/all_11.js +223 -223
  174. package/SVF-doxygen/html/search/all_12.js +553 -553
  175. package/SVF-doxygen/html/search/all_13.js +192 -192
  176. package/SVF-doxygen/html/search/all_14.js +67 -67
  177. package/SVF-doxygen/html/search/all_15.js +167 -167
  178. package/SVF-doxygen/html/search/all_16.js +63 -63
  179. package/SVF-doxygen/html/search/all_17.js +1 -1
  180. package/SVF-doxygen/html/search/all_18.js +1 -1
  181. package/SVF-doxygen/html/search/all_19.js +11 -11
  182. package/SVF-doxygen/html/search/all_1a.js +172 -172
  183. package/SVF-doxygen/html/search/all_4.js +8 -6
  184. package/SVF-doxygen/html/search/all_5.js +119 -119
  185. package/SVF-doxygen/html/search/all_6.js +226 -226
  186. package/SVF-doxygen/html/search/all_7.js +1048 -1046
  187. package/SVF-doxygen/html/search/all_8.js +198 -198
  188. package/SVF-doxygen/html/search/all_9.js +607 -607
  189. package/SVF-doxygen/html/search/all_a.js +46 -46
  190. package/SVF-doxygen/html/search/all_b.js +26 -26
  191. package/SVF-doxygen/html/search/all_c.js +115 -116
  192. package/SVF-doxygen/html/search/all_d.js +198 -198
  193. package/SVF-doxygen/html/search/all_e.js +207 -207
  194. package/SVF-doxygen/html/search/all_f.js +116 -116
  195. package/SVF-doxygen/html/search/classes_0.js +26 -26
  196. package/SVF-doxygen/html/search/classes_1.js +9 -9
  197. package/SVF-doxygen/html/search/classes_10.js +73 -73
  198. package/SVF-doxygen/html/search/classes_11.js +15 -15
  199. package/SVF-doxygen/html/search/classes_12.js +2 -2
  200. package/SVF-doxygen/html/search/classes_13.js +10 -10
  201. package/SVF-doxygen/html/search/classes_14.js +14 -14
  202. package/SVF-doxygen/html/search/classes_15.js +1 -1
  203. package/SVF-doxygen/html/search/classes_2.js +80 -80
  204. package/SVF-doxygen/html/search/classes_3.js +37 -37
  205. package/SVF-doxygen/html/search/classes_4.js +9 -9
  206. package/SVF-doxygen/html/search/classes_5.js +28 -28
  207. package/SVF-doxygen/html/search/classes_6.js +104 -104
  208. package/SVF-doxygen/html/search/classes_7.js +34 -34
  209. package/SVF-doxygen/html/search/classes_8.js +56 -56
  210. package/SVF-doxygen/html/search/classes_9.js +1 -1
  211. package/SVF-doxygen/html/search/classes_a.js +12 -12
  212. package/SVF-doxygen/html/search/classes_b.js +29 -29
  213. package/SVF-doxygen/html/search/classes_c.js +6 -6
  214. package/SVF-doxygen/html/search/classes_d.js +18 -18
  215. package/SVF-doxygen/html/search/classes_e.js +36 -36
  216. package/SVF-doxygen/html/search/classes_f.js +25 -25
  217. package/SVF-doxygen/html/search/defines_0.js +3 -3
  218. package/SVF-doxygen/html/search/defines_1.js +2 -2
  219. package/SVF-doxygen/html/search/defines_2.js +30 -30
  220. package/SVF-doxygen/html/search/defines_3.js +21 -21
  221. package/SVF-doxygen/html/search/defines_4.js +2 -2
  222. package/SVF-doxygen/html/search/defines_5.js +4 -4
  223. package/SVF-doxygen/html/search/defines_6.js +2 -2
  224. package/SVF-doxygen/html/search/defines_7.js +5 -5
  225. package/SVF-doxygen/html/search/defines_8.js +11 -11
  226. package/SVF-doxygen/html/search/defines_9.js +9 -9
  227. package/SVF-doxygen/html/search/defines_a.js +2 -2
  228. package/SVF-doxygen/html/search/defines_b.js +1 -1
  229. package/SVF-doxygen/html/search/defines_c.js +3 -3
  230. package/SVF-doxygen/html/search/defines_d.js +2 -2
  231. package/SVF-doxygen/html/search/defines_e.js +7 -7
  232. package/SVF-doxygen/html/search/defines_f.js +3 -3
  233. package/SVF-doxygen/html/search/enums_0.js +3 -3
  234. package/SVF-doxygen/html/search/enums_1.js +2 -2
  235. package/SVF-doxygen/html/search/enums_10.js +1 -1
  236. package/SVF-doxygen/html/search/enums_11.js +1 -1
  237. package/SVF-doxygen/html/search/enums_2.js +8 -8
  238. package/SVF-doxygen/html/search/enums_3.js +1 -1
  239. package/SVF-doxygen/html/search/enums_4.js +3 -3
  240. package/SVF-doxygen/html/search/enums_5.js +1 -1
  241. package/SVF-doxygen/html/search/enums_6.js +2 -2
  242. package/SVF-doxygen/html/search/enums_7.js +2 -2
  243. package/SVF-doxygen/html/search/enums_8.js +4 -4
  244. package/SVF-doxygen/html/search/enums_9.js +1 -1
  245. package/SVF-doxygen/html/search/enums_a.js +1 -1
  246. package/SVF-doxygen/html/search/enums_b.js +7 -7
  247. package/SVF-doxygen/html/search/enums_c.js +1 -1
  248. package/SVF-doxygen/html/search/enums_d.js +4 -4
  249. package/SVF-doxygen/html/search/enums_e.js +2 -2
  250. package/SVF-doxygen/html/search/enums_f.js +4 -4
  251. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  252. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  253. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  254. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  255. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  256. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  257. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  258. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  259. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  260. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  261. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  262. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  263. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  264. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  265. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  266. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  267. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  268. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  269. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  270. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  271. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  272. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  273. package/SVF-doxygen/html/search/files_0.js +13 -13
  274. package/SVF-doxygen/html/search/files_1.js +7 -7
  275. package/SVF-doxygen/html/search/files_10.js +8 -8
  276. package/SVF-doxygen/html/search/files_11.js +8 -8
  277. package/SVF-doxygen/html/search/files_12.js +2 -2
  278. package/SVF-doxygen/html/search/files_2.js +55 -55
  279. package/SVF-doxygen/html/search/files_3.js +14 -14
  280. package/SVF-doxygen/html/search/files_4.js +5 -5
  281. package/SVF-doxygen/html/search/files_5.js +13 -13
  282. package/SVF-doxygen/html/search/files_6.js +9 -9
  283. package/SVF-doxygen/html/search/files_7.js +14 -14
  284. package/SVF-doxygen/html/search/files_8.js +13 -13
  285. package/SVF-doxygen/html/search/files_9.js +18 -18
  286. package/SVF-doxygen/html/search/files_a.js +3 -3
  287. package/SVF-doxygen/html/search/files_b.js +2 -2
  288. package/SVF-doxygen/html/search/files_c.js +20 -20
  289. package/SVF-doxygen/html/search/files_d.js +4 -4
  290. package/SVF-doxygen/html/search/files_e.js +62 -62
  291. package/SVF-doxygen/html/search/files_f.js +8 -8
  292. package/SVF-doxygen/html/search/functions_0.js +13 -13
  293. package/SVF-doxygen/html/search/functions_1.js +360 -360
  294. package/SVF-doxygen/html/search/functions_10.js +140 -140
  295. package/SVF-doxygen/html/search/functions_11.js +139 -139
  296. package/SVF-doxygen/html/search/functions_12.js +288 -288
  297. package/SVF-doxygen/html/search/functions_13.js +59 -59
  298. package/SVF-doxygen/html/search/functions_14.js +39 -39
  299. package/SVF-doxygen/html/search/functions_15.js +71 -71
  300. package/SVF-doxygen/html/search/functions_16.js +32 -32
  301. package/SVF-doxygen/html/search/functions_17.js +3 -3
  302. package/SVF-doxygen/html/search/functions_18.js +172 -172
  303. package/SVF-doxygen/html/search/functions_2.js +89 -89
  304. package/SVF-doxygen/html/search/functions_3.js +258 -258
  305. package/SVF-doxygen/html/search/functions_4.js +78 -76
  306. package/SVF-doxygen/html/search/functions_5.js +53 -53
  307. package/SVF-doxygen/html/search/functions_6.js +60 -60
  308. package/SVF-doxygen/html/search/functions_7.js +857 -856
  309. package/SVF-doxygen/html/search/functions_8.js +149 -149
  310. package/SVF-doxygen/html/search/functions_9.js +423 -423
  311. package/SVF-doxygen/html/search/functions_a.js +30 -30
  312. package/SVF-doxygen/html/search/functions_b.js +2 -2
  313. package/SVF-doxygen/html/search/functions_c.js +25 -26
  314. package/SVF-doxygen/html/search/functions_d.js +79 -79
  315. package/SVF-doxygen/html/search/functions_e.js +35 -35
  316. package/SVF-doxygen/html/search/functions_f.js +56 -56
  317. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  318. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  319. package/SVF-doxygen/html/search/related_0.js +2 -2
  320. package/SVF-doxygen/html/search/related_1.js +2 -2
  321. package/SVF-doxygen/html/search/related_2.js +2 -2
  322. package/SVF-doxygen/html/search/related_3.js +2 -2
  323. package/SVF-doxygen/html/search/related_4.js +2 -2
  324. package/SVF-doxygen/html/search/related_5.js +1 -1
  325. package/SVF-doxygen/html/search/related_6.js +2 -2
  326. package/SVF-doxygen/html/search/related_7.js +4 -4
  327. package/SVF-doxygen/html/search/related_8.js +2 -2
  328. package/SVF-doxygen/html/search/related_9.js +4 -4
  329. package/SVF-doxygen/html/search/related_a.js +19 -19
  330. package/SVF-doxygen/html/search/related_b.js +4 -4
  331. package/SVF-doxygen/html/search/related_c.js +2 -2
  332. package/SVF-doxygen/html/search/related_d.js +12 -12
  333. package/SVF-doxygen/html/search/related_e.js +2 -2
  334. package/SVF-doxygen/html/search/related_f.js +2 -2
  335. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  336. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  337. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  338. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  339. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  340. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  341. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  342. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  343. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  344. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  345. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  346. package/SVF-doxygen/html/search/typedefs_6.js +56 -55
  347. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  348. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  349. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  350. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  351. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  352. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  353. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  354. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  355. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  356. package/SVF-doxygen/html/search/variables_0.js +151 -151
  357. package/SVF-doxygen/html/search/variables_1.js +75 -75
  358. package/SVF-doxygen/html/search/variables_10.js +97 -97
  359. package/SVF-doxygen/html/search/variables_11.js +44 -44
  360. package/SVF-doxygen/html/search/variables_12.js +92 -92
  361. package/SVF-doxygen/html/search/variables_13.js +76 -76
  362. package/SVF-doxygen/html/search/variables_14.js +14 -14
  363. package/SVF-doxygen/html/search/variables_15.js +48 -48
  364. package/SVF-doxygen/html/search/variables_16.js +9 -9
  365. package/SVF-doxygen/html/search/variables_17.js +1 -1
  366. package/SVF-doxygen/html/search/variables_18.js +2 -2
  367. package/SVF-doxygen/html/search/variables_2.js +38 -38
  368. package/SVF-doxygen/html/search/variables_3.js +142 -142
  369. package/SVF-doxygen/html/search/variables_4.js +55 -55
  370. package/SVF-doxygen/html/search/variables_5.js +37 -37
  371. package/SVF-doxygen/html/search/variables_6.js +66 -66
  372. package/SVF-doxygen/html/search/variables_7.js +34 -34
  373. package/SVF-doxygen/html/search/variables_8.js +7 -7
  374. package/SVF-doxygen/html/search/variables_9.js +78 -78
  375. package/SVF-doxygen/html/search/variables_a.js +4 -4
  376. package/SVF-doxygen/html/search/variables_b.js +10 -10
  377. package/SVF-doxygen/html/search/variables_c.js +45 -45
  378. package/SVF-doxygen/html/search/variables_d.js +56 -56
  379. package/SVF-doxygen/html/search/variables_e.js +123 -123
  380. package/SVF-doxygen/html/search/variables_f.js +30 -30
  381. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  382. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  383. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  384. package/package.json +1 -1
  385. package/svf/include/MemoryModel/AccessPath.h +2 -2
  386. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +2 -2
  387. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +4 -4
  388. package/svf/lib/MemoryModel/AccessPath.cpp +6 -5
  389. package/svf/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  390. package/svf/lib/SVFIR/SVFType.cpp +1 -0
  391. package/svf/lib/SVFIR/SymbolTableInfo.cpp +2 -1
  392. package/svf-llvm/include/SVF-LLVM/BasicTypes.h +1 -0
  393. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +11 -8
  394. package/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +1 -1
  395. package/svf-llvm/lib/LLVMModule.cpp +1 -0
  396. package/svf-llvm/lib/LLVMUtil.cpp +112 -18
  397. package/svf-llvm/lib/SVFIRBuilder.cpp +3 -1
  398. package/svf-llvm/lib/SymbolTableBuilder.cpp +21 -9
@@ -105,6 +105,8 @@ Functions</h2></td></tr>
105
105
  <tr class="separator:a847fb0c433b5d3611151636ca4bc5bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
106
106
  <tr class="memitem:abba4111230f6009bbf50518ee36a9870"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a> (const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *pty)</td></tr>
107
107
  <tr class="separator:abba4111230f6009bbf50518ee36a9870"><td class="memSeparator" colspan="2">&#160;</td></tr>
108
+ <tr class="memitem:a4b5d4c7ca2c580ace7305bfed58ffce8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a4b5d4c7ca2c580ace7305bfed58ffce8">getPointeeType</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value)</td></tr>
109
+ <tr class="separator:a4b5d4c7ca2c580ace7305bfed58ffce8"><td class="memSeparator" colspan="2">&#160;</td></tr>
108
110
  <tr class="memitem:a6c5f2f951463494af2e7b0d3267f2772"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a6c5f2f951463494af2e7b0d3267f2772">getRefTypeOfHeapAllocOrStatic</a> (const <a class="el" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *cs)</td></tr>
109
111
  <tr class="memdesc:a6c5f2f951463494af2e7b0d3267f2772"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the reference type of heap/static object from an allocation site. <a href="namespaceSVF_1_1LLVMUtil.html#a6c5f2f951463494af2e7b0d3267f2772">More...</a><br /></td></tr>
110
112
  <tr class="separator:a6c5f2f951463494af2e7b0d3267f2772"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -265,8 +267,8 @@ Functions</h2></td></tr>
265
267
  <tr class="separator:a3a23aa54459a068e16c96e5b5eb72f77"><td class="memSeparator" colspan="2">&#160;</td></tr>
266
268
  <tr class="memitem:a718c8ec79f36cef5df2f4530541f2770"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">getVCallIdx</a> (const <a class="el" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *cs)</td></tr>
267
269
  <tr class="separator:a718c8ec79f36cef5df2f4530541f2770"><td class="memSeparator" colspan="2">&#160;</td></tr>
268
- <tr class="memitem:a416bcb6da0650f546cb7d83e6be850b6"><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#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ty)</td></tr>
269
- <tr class="separator:a416bcb6da0650f546cb7d83e6be850b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
270
+ <tr class="memitem:a207fe02ded216fd0412fc894e13bee6e"><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#a207fe02ded216fd0412fc894e13bee6e">getClassNameFromType</a> (const <a class="el" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *ty)</td></tr>
271
+ <tr class="separator:a207fe02ded216fd0412fc894e13bee6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
270
272
  <tr class="memitem:aa841a295ec803b6a1f2bd248f63f863f"><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#aa841a295ec803b6a1f2bd248f63f863f">getClassNameOfThisPtr</a> (const <a class="el" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *cs)</td></tr>
271
273
  <tr class="separator:aa841a295ec803b6a1f2bd248f63f863f"><td class="memSeparator" colspan="2">&#160;</td></tr>
272
274
  <tr class="memitem:a41e64f3318e2bf368eebe9a104ef6ad9"><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#a41e64f3318e2bf368eebe9a104ef6ad9">getFunNameOfVCallSite</a> (const <a class="el" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *cs)</td></tr>
@@ -275,9 +277,10 @@ Functions</h2></td></tr>
275
277
  <tr class="separator:a898e9c2ed163b618f2e86bc251131d8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
276
278
  <tr class="memitem:a8873eb1cce9496f9699eab22c4a6d3ce"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">isSameThisPtrInConstructor</a> (const <a class="el" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a> *thisPtr1, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *thisPtr2)</td></tr>
277
279
  <tr class="separator:a8873eb1cce9496f9699eab22c4a6d3ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
278
- <tr class="memitem:a7b8b93fec1dc8c63c0a5837a85b99129"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
279
- <tr class="memitem:a7b8b93fec1dc8c63c0a5837a85b99129"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">llvmToString</a> (const T &amp;val)</td></tr>
280
- <tr class="separator:a7b8b93fec1dc8c63c0a5837a85b99129"><td class="memSeparator" colspan="2">&#160;</td></tr>
280
+ <tr class="memitem:afa2f8c8ab19c75547c26ede53b9f6159"><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#afa2f8c8ab19c75547c26ede53b9f6159">dumpValue</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
281
+ <tr class="separator:afa2f8c8ab19c75547c26ede53b9f6159"><td class="memSeparator" colspan="2">&#160;</td></tr>
282
+ <tr class="memitem:a6e8682537cf5bed808df439bd7e1add9"><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#a6e8682537cf5bed808df439bd7e1add9">dumpType</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="el" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</td></tr>
283
+ <tr class="separator:a6e8682537cf5bed808df439bd7e1add9"><td class="memSeparator" colspan="2">&#160;</td></tr>
281
284
  <tr class="memitem:a9001722dd27bf487351725c3d7b65f2f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a9001722dd27bf487351725c3d7b65f2f">getSuccBBandCondValPairVec</a> (const <a class="el" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &amp;switchInst, <a class="el" href="namespaceSVF.html#a8de26e1810ea0c3b1e8ad62f1c8a864d">SuccBBAndCondValPairVec</a> &amp;vec)</td></tr>
282
285
  <tr class="separator:a9001722dd27bf487351725c3d7b65f2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
283
286
  <tr class="memitem:a33e8378ae1a911169394e545a4ba2220"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceSVF_1_1LLVMUtil.html#a33e8378ae1a911169394e545a4ba2220">getCaseValue</a> (const <a class="el" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> &amp;switchInst, <a class="el" href="namespaceSVF.html#a255efa5be786996cbdd0c1f3d98b8400">SuccBBAndCondValPair</a> &amp;succBB2CondVal)</td></tr>
@@ -310,11 +313,11 @@ Functions</h2></td></tr>
310
313
 
311
314
  <p>whether this is an argument in dead function </p>
312
315
 
313
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00172">172</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
314
- <div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;{</div>
315
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div>
316
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
317
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;}</div>
316
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00177">177</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
317
+ <div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div>
318
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div>
319
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
320
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;}</div>
318
321
  </div><!-- fragment -->
319
322
  </div>
320
323
  </div>
@@ -344,12 +347,12 @@ Functions</h2></td></tr>
344
347
 
345
348
  <p>Return true if this is an argument of a program entry function (e.g. main) </p>
346
349
 
347
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00180">180</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
348
- <div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;{</div>
349
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val) &amp;&amp;</div>
350
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(</div>
351
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
352
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
350
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00185">185</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
351
+ <div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;{</div>
352
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val) &amp;&amp;</div>
353
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(</div>
354
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
355
+ <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;}</div>
353
356
  </div><!-- fragment -->
354
357
  </div>
355
358
  </div>
@@ -385,6 +388,64 @@ Functions</h2></td></tr>
385
388
  </div><!-- fragment -->
386
389
  </div>
387
390
  </div>
391
+ <a id="a6e8682537cf5bed808df439bd7e1add9"></a>
392
+ <h2 class="memtitle"><span class="permalink"><a href="#a6e8682537cf5bed808df439bd7e1add9">&#9670;&nbsp;</a></span>dumpType()</h2>
393
+
394
+ <div class="memitem">
395
+ <div class="memproto">
396
+ <table class="memname">
397
+ <tr>
398
+ <td class="memname"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::LLVMUtil::dumpType </td>
399
+ <td>(</td>
400
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
401
+ <td class="paramname"><em>type</em></td><td>)</td>
402
+ <td></td>
403
+ </tr>
404
+ </table>
405
+ </div><div class="memdoc">
406
+
407
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01370">1370</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
408
+ <div class="fragment"><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;{</div>
409
+ <div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
410
+ <div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
411
+ <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
412
+ <div class="line"><a name="l01375"></a><span class="lineno"> 1375</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>
413
+ <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="keywordflow">else</span></div>
414
+ <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm type is null&quot;</span>;</div>
415
+ <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
416
+ <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;}</div>
417
+ </div><!-- fragment -->
418
+ </div>
419
+ </div>
420
+ <a id="afa2f8c8ab19c75547c26ede53b9f6159"></a>
421
+ <h2 class="memtitle"><span class="permalink"><a href="#afa2f8c8ab19c75547c26ede53b9f6159">&#9670;&nbsp;</a></span>dumpValue()</h2>
422
+
423
+ <div class="memitem">
424
+ <div class="memproto">
425
+ <table class="memname">
426
+ <tr>
427
+ <td class="memname"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::LLVMUtil::dumpValue </td>
428
+ <td>(</td>
429
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
430
+ <td class="paramname"><em>val</em></td><td>)</td>
431
+ <td></td>
432
+ </tr>
433
+ </table>
434
+ </div><div class="memdoc">
435
+
436
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01359">1359</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
437
+ <div class="fragment"><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;{</div>
438
+ <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
439
+ <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; llvm::raw_string_ostream rawstr(str);</div>
440
+ <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keywordflow">if</span> (val)</div>
441
+ <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
442
+ <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="keywordflow">else</span></div>
443
+ <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; llvm Value is null&quot;</span>;</div>
444
+ <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
445
+ <div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;}</div>
446
+ </div><!-- fragment -->
447
+ </div>
448
+ </div>
388
449
  <a id="a651b6a1cf3665277d2241220bb145aed"></a>
389
450
  <h2 class="memtitle"><span class="permalink"><a href="#a651b6a1cf3665277d2241220bb145aed">&#9670;&nbsp;</a></span>functionDoesNotRet()</h2>
390
451
 
@@ -456,13 +517,13 @@ Functions</h2></td></tr>
456
517
  <p>Get num of BB's predecessors. </p>
457
518
  <p>Get the num of BB's predecessors </p>
458
519
 
459
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00406">406</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
460
- <div class="fragment"><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;{</div>
461
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
462
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</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>
463
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; num++;</div>
464
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> num;</div>
465
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div>
520
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00473">473</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
521
+ <div class="fragment"><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;{</div>
522
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
523
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</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>
524
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; num++;</div>
525
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">return</span> num;</div>
526
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;}</div>
466
527
  </div><!-- fragment -->
467
528
  </div>
468
529
  </div>
@@ -484,24 +545,24 @@ Functions</h2></td></tr>
484
545
 
485
546
  <p>Get all called funcions in a parent function. </p>
486
547
 
487
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00566">566</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
488
- <div class="fragment"><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div>
489
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
490
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</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>
491
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div>
492
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</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>
493
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; {</div>
494
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
495
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
496
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div>
497
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; calledFunctions.push_back(calledFunction);</div>
498
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
499
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
500
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div>
501
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; }</div>
502
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; }</div>
503
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
504
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;}</div>
548
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00633">633</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
549
+ <div class="fragment"><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;{</div>
550
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; std::vector&lt;const Function *&gt; calledFunctions;</div>
551
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</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>
552
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div>
553
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</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>
554
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div>
555
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *calledFunction = callInst-&gt;getCalledFunction();</div>
556
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">if</span> (calledFunction)</div>
557
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div>
558
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; calledFunctions.push_back(calledFunction);</div>
559
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; std::vector&lt;const Function *&gt; nestedCalledFunctions = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">getCalledFunctions</a>(calledFunction);</div>
560
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; calledFunctions.insert(calledFunctions.end(), nestedCalledFunctions.begin(), nestedCalledFunctions.end());</div>
561
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div>
562
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div>
563
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
564
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> calledFunctions;</div>
565
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;}</div>
505
566
  </div><!-- fragment -->
506
567
  </div>
507
568
  </div>
@@ -568,33 +629,33 @@ Functions</h2></td></tr>
568
629
  <p>get normal case value</p>
569
630
  <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>
570
631
 
571
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01261">1261</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
572
- <div class="fragment"><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;{</div>
573
- <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
574
- <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
575
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
576
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
577
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; {</div>
578
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; val = -1;</div>
579
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; }</div>
580
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">else</span></div>
581
- <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; {</div>
582
- <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
583
- <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; {</div>
584
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; val = caseValue-&gt;getSExtValue();</div>
585
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; }</div>
586
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">else</span></div>
587
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; {</div>
588
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; val = -1;</div>
589
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; }</div>
590
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; }</div>
591
- <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordflow">return</span> val;</div>
592
- <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;}</div>
632
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01332">1332</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
633
+ <div class="fragment"><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;{</div>
634
+ <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succBB = succBB2CondVal.first;</div>
635
+ <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* caseValue = succBB2CondVal.second;</div>
636
+ <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> val;</div>
637
+ <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">if</span> (caseValue == <span class="keyword">nullptr</span> || succBB == switchInst.getDefaultDest())</div>
638
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; {</div>
639
+ <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; val = -1;</div>
640
+ <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; }</div>
641
+ <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <span class="keywordflow">else</span></div>
642
+ <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; {</div>
643
+ <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keywordflow">if</span> (caseValue-&gt;getBitWidth() &lt;= 64)</div>
644
+ <div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; {</div>
645
+ <div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; val = caseValue-&gt;getSExtValue();</div>
646
+ <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; }</div>
647
+ <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <span class="keywordflow">else</span></div>
648
+ <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; {</div>
649
+ <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; val = -1;</div>
650
+ <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; }</div>
651
+ <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; }</div>
652
+ <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; <span class="keywordflow">return</span> val;</div>
653
+ <div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;}</div>
593
654
  </div><!-- fragment -->
594
655
  </div>
595
656
  </div>
596
- <a id="a416bcb6da0650f546cb7d83e6be850b6"></a>
597
- <h2 class="memtitle"><span class="permalink"><a href="#a416bcb6da0650f546cb7d83e6be850b6">&#9670;&nbsp;</a></span>getClassNameFromType()</h2>
657
+ <a id="a207fe02ded216fd0412fc894e13bee6e"></a>
658
+ <h2 class="memtitle"><span class="permalink"><a href="#a207fe02ded216fd0412fc894e13bee6e">&#9670;&nbsp;</a></span>getClassNameFromType()</h2>
598
659
 
599
660
  <div class="memitem">
600
661
  <div class="memproto">
@@ -602,36 +663,30 @@ Functions</h2></td></tr>
602
663
  <tr>
603
664
  <td class="memname"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::LLVMUtil::getClassNameFromType </td>
604
665
  <td>(</td>
605
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
666
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *&#160;</td>
606
667
  <td class="paramname"><em>ty</em></td><td>)</td>
607
668
  <td></td>
608
669
  </tr>
609
670
  </table>
610
671
  </div><div class="memdoc">
611
672
 
612
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01166">1166</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
613
- <div class="fragment"><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;{</div>
614
- <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
615
- <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrType = SVFUtil::dyn_cast&lt;PointerType&gt;(ty))</div>
616
- <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; {</div>
617
- <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
618
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(elemType) &amp;&amp;</div>
619
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; !((SVFUtil::cast&lt;StructType&gt;(elemType))-&gt;isLiteral()))</div>
620
- <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; {</div>
621
- <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = elemType-&gt;getStructName().str();</div>
622
- <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
623
- <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; {</div>
624
- <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
625
- <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; }</div>
626
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) ==</div>
627
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; 0)</div>
628
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; {</div>
629
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
630
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; }</div>
631
- <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; }</div>
632
- <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; }</div>
633
- <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">return</span> className;</div>
634
- <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;}</div>
673
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01240">1240</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
674
+ <div class="fragment"><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;{</div>
675
+ <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
676
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">if</span> (!((SVFUtil::cast&lt;StructType&gt;(ty))-&gt;isLiteral()))</div>
677
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; {</div>
678
+ <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = ty-&gt;getStructName().str();</div>
679
+ <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
680
+ <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; {</div>
681
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
682
+ <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; }</div>
683
+ <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) == 0)</div>
684
+ <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; {</div>
685
+ <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
686
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; }</div>
687
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; }</div>
688
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">return</span> className;</div>
689
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;}</div>
635
690
  </div><!-- fragment -->
636
691
  </div>
637
692
  </div>
@@ -651,32 +706,35 @@ Functions</h2></td></tr>
651
706
  </table>
652
707
  </div><div class="memdoc">
653
708
 
654
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01190">1190</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
655
- <div class="fragment"><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;{</div>
656
- <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName;</div>
657
- <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallPtrType&quot;</span>))</div>
658
- <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; {</div>
659
- <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
660
- <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; thisPtrClassName = mdstr-&gt;getString().str();</div>
661
- <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; }</div>
662
- <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
663
- <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; {</div>
664
- <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
665
- <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr-&gt;getType());</div>
666
- <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; }</div>
667
- <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; </div>
668
- <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">&quot;0123456789&quot;</span>);</div>
669
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">if</span> (found != std::string::npos)</div>
670
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; {</div>
671
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &amp;&amp;</div>
672
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; thisPtrClassName[found] == <span class="charliteral">&#39;.&#39;</span>)</div>
673
- <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; {</div>
674
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
675
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; }</div>
676
- <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div>
677
- <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; </div>
678
- <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <span class="keywordflow">return</span> thisPtrClassName;</div>
679
- <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;}</div>
709
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01258">1258</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
710
+ <div class="fragment"><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;{</div>
711
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName = <span class="stringliteral">&quot;&quot;</span>;</div>
712
+ <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallPtrType&quot;</span>))</div>
713
+ <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; {</div>
714
+ <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
715
+ <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; thisPtrClassName = mdstr-&gt;getString().str();</div>
716
+ <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; }</div>
717
+ <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
718
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; {</div>
719
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
720
+ <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast&lt;PointerType&gt;(thisPtr-&gt;getType()))</div>
721
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="comment">// TODO: getPtrElementType need type inference</span></div>
722
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast&lt;StructType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(ptrTy)))</div>
723
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">getClassNameFromType</a>(st);</div>
724
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div>
725
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; </div>
726
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">&quot;0123456789&quot;</span>);</div>
727
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">if</span> (found != std::string::npos)</div>
728
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; {</div>
729
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &amp;&amp;</div>
730
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; thisPtrClassName[found] == <span class="charliteral">&#39;.&#39;</span>)</div>
731
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; {</div>
732
+ <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
733
+ <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; }</div>
734
+ <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; }</div>
735
+ <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; </div>
736
+ <div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordflow">return</span> thisPtrClassName;</div>
737
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;}</div>
680
738
  </div><!-- fragment -->
681
739
  </div>
682
740
  </div>
@@ -696,14 +754,14 @@ Functions</h2></td></tr>
696
754
  </table>
697
755
  </div><div class="memdoc">
698
756
 
699
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01058">1058</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
700
- <div class="fragment"><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;{</div>
701
- <div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &amp;&amp;</div>
702
- <div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="stringliteral">&quot;not a constructor?&quot;</span>);</div>
703
- <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; assert(fun-&gt;arg_size() &gt;= 1 &amp;&amp; <span class="stringliteral">&quot;argument size &gt;= 1?&quot;</span>);</div>
704
- <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &amp;*(fun-&gt;arg_begin());</div>
705
- <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">return</span> thisPtr;</div>
706
- <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;}</div>
757
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01132">1132</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
758
+ <div class="fragment"><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;{</div>
759
+ <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &amp;&amp;</div>
760
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="stringliteral">&quot;not a constructor?&quot;</span>);</div>
761
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; assert(fun-&gt;arg_size() &gt;= 1 &amp;&amp; <span class="stringliteral">&quot;argument size &gt;= 1?&quot;</span>);</div>
762
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &amp;*(fun-&gt;arg_begin());</div>
763
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">return</span> thisPtr;</div>
764
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;}</div>
707
765
  </div><!-- fragment -->
708
766
  </div>
709
767
  </div>
@@ -731,13 +789,13 @@ Functions</h2></td></tr>
731
789
  </table>
732
790
  </div><div class="memdoc">
733
791
 
734
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00332">332</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
735
- <div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;{</div>
736
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> *dl = <span class="keyword">nullptr</span>;</div>
737
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (dl == <span class="keyword">nullptr</span>)</div>
738
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; dl = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>(mod);</div>
739
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> dl;</div>
740
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</div>
792
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00337">337</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
793
+ <div class="fragment"><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;{</div>
794
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> *dl = <span class="keyword">nullptr</span>;</div>
795
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span> (dl == <span class="keyword">nullptr</span>)</div>
796
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; dl = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a>(mod);</div>
797
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> dl;</div>
798
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div>
741
799
  </div><!-- fragment -->
742
800
  </div>
743
801
  </div>
@@ -797,27 +855,28 @@ Functions</h2></td></tr>
797
855
  <p>Return the bitcast instruction right next to val, otherwise return nullptr </p>
798
856
  <p>If type is void* (i8*) and val is immediately used at a bitcast instruction</p>
799
857
 
800
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00349">349</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
801
- <div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;{</div>
802
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</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>
803
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</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>
804
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast&lt;IntegerType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)))</div>
805
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div>
806
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (IT-&gt;getBitWidth() == 8)</div>
807
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div>
808
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
809
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it : val-&gt;uses())</div>
810
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
811
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(it.getUser()))</div>
812
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; latestUse = it.getUser();</div>
813
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div>
814
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
815
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
816
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
817
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div>
818
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div>
819
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
820
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;}</div>
858
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00414">414</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
859
+ <div class="fragment"><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;{</div>
860
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</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>
861
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</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>
862
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="comment">// TODO: getPtrElementType to be removed</span></div>
863
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast&lt;IntegerType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)))</div>
864
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div>
865
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (IT-&gt;getBitWidth() == 8)</div>
866
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
867
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *latestUse = <span class="keyword">nullptr</span>;</div>
868
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it : val-&gt;uses())</div>
869
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div>
870
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(it.getUser()))</div>
871
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; latestUse = it.getUser();</div>
872
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">else</span></div>
873
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; latestUse = <span class="keyword">nullptr</span>;</div>
874
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div>
875
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> latestUse;</div>
876
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div>
877
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
878
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
879
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div>
821
880
  </div><!-- fragment -->
822
881
  </div>
823
882
  </div>
@@ -837,46 +896,46 @@ Functions</h2></td></tr>
837
896
  </table>
838
897
  </div><div class="memdoc">
839
898
 
840
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00463">463</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
841
- <div class="fragment"><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;{</div>
842
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; std::vector&lt;std::string&gt; annotations;</div>
843
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// Get annotation variable</span></div>
844
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *glob = fun-&gt;getParent()-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
845
- <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>
846
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span> annotations;</div>
847
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; </div>
848
- <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>
849
- <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>
850
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> annotations;</div>
851
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
852
- <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>
853
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; {</div>
854
- <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>
855
- <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>
856
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">continue</span>;</div>
857
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
858
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0));</div>
859
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr-&gt;getOpcode() != Instruction::BitCast || expr-&gt;getOperand(0) != fun)</div>
860
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">continue</span>;</div>
861
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; </div>
862
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(1));</div>
863
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (note-&gt;getOpcode() != Instruction::GetElementPtr)</div>
864
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">continue</span>;</div>
865
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; </div>
866
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *annotateStr = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(note-&gt;getOperand(0));</div>
867
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">if</span> (annotateStr == <span class="keyword">nullptr</span> || !annotateStr-&gt;hasInitializer())</div>
868
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">continue</span>;</div>
869
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; </div>
870
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a> *data = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(annotateStr-&gt;getInitializer());</div>
871
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (data-&gt;isString())</div>
872
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
873
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation = data-&gt;getAsString().str();</div>
874
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span> (!annotation.empty())</div>
875
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; annotations.push_back(annotation);</div>
876
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div>
877
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div>
878
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> annotations;</div>
879
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;}</div>
899
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00530">530</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
900
+ <div class="fragment"><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;{</div>
901
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; std::vector&lt;std::string&gt; annotations;</div>
902
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// Get annotation variable</span></div>
903
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *glob = fun-&gt;getParent()-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
904
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
905
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">return</span> annotations;</div>
906
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; </div>
907
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
908
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
909
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> annotations;</div>
910
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; </div>
911
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
912
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div>
913
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
914
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
915
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">continue</span>;</div>
916
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; </div>
917
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0));</div>
918
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr-&gt;getOpcode() != Instruction::BitCast || expr-&gt;getOperand(0) != fun)</div>
919
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">continue</span>;</div>
920
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; </div>
921
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *note = SVFUtil::cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(1));</div>
922
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">if</span> (note-&gt;getOpcode() != Instruction::GetElementPtr)</div>
923
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">continue</span>;</div>
924
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; </div>
925
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *annotateStr = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(note-&gt;getOperand(0));</div>
926
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span> (annotateStr == <span class="keyword">nullptr</span> || !annotateStr-&gt;hasInitializer())</div>
927
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">continue</span>;</div>
928
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; </div>
929
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a> *data = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(annotateStr-&gt;getInitializer());</div>
930
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">if</span> (data-&gt;isString())</div>
931
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {</div>
932
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation = data-&gt;getAsString().str();</div>
933
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">if</span> (!annotation.empty())</div>
934
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; annotations.push_back(annotation);</div>
935
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div>
936
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div>
937
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> annotations;</div>
938
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;}</div>
880
939
  </div><!-- fragment -->
881
940
  </div>
882
941
  </div>
@@ -906,10 +965,10 @@ Functions</h2></td></tr>
906
965
 
907
966
  <p>Get the corresponding Function based on its name. </p>
908
967
 
909
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00408">408</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
910
- <div class="fragment"><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div>
911
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
912
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div>
968
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00414">414</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
969
+ <div class="fragment"><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;{</div>
970
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFFunction(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
971
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div>
913
972
  </div><!-- fragment -->
914
973
  </div>
915
974
  </div>
@@ -929,16 +988,16 @@ Functions</h2></td></tr>
929
988
  </table>
930
989
  </div><div class="memdoc">
931
990
 
932
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01217">1217</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
933
- <div class="fragment"><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;{</div>
934
- <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
935
- <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallFunName&quot;</span>))</div>
936
- <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; {</div>
937
- <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
938
- <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; funName = mdstr-&gt;getString().str();</div>
939
- <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div>
940
- <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">return</span> funName;</div>
941
- <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;}</div>
991
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01288">1288</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
992
+ <div class="fragment"><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;{</div>
993
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
994
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst-&gt;getMetadata(<span class="stringliteral">&quot;VCallFunName&quot;</span>))</div>
995
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; {</div>
996
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0).get());</div>
997
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; funName = mdstr-&gt;getString().str();</div>
998
+ <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; }</div>
999
+ <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">return</span> funName;</div>
1000
+ <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;}</div>
942
1001
  </div><!-- fragment -->
943
1002
  </div>
944
1003
  </div>
@@ -1031,15 +1090,15 @@ Functions</h2></td></tr>
1031
1090
 
1032
1091
  <p>find the unique defined global across multiple modules </p>
1033
1092
 
1034
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00421">421</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1035
- <div class="fragment"><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;{</div>
1036
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</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>
1037
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div>
1038
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
1039
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
1040
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
1041
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> val;</div>
1042
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div>
1093
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00427">427</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1094
+ <div class="fragment"><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;{</div>
1095
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</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>
1096
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div>
1097
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (LLVMModuleSet::getLLVMModuleSet()-&gt;hasGlobalRep(gvar))</div>
1098
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; val = LLVMModuleSet::getLLVMModuleSet()-&gt;getGlobalRep(gvar);</div>
1099
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div>
1100
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> val;</div>
1101
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;}</div>
1043
1102
  </div><!-- fragment -->
1044
1103
  </div>
1045
1104
  </div>
@@ -1138,30 +1197,30 @@ Functions</h2></td></tr>
1138
1197
 
1139
1198
  <p>Get the next instructions following control flow. </p>
1140
1199
 
1141
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00807">807</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1142
- <div class="fragment"><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;{</div>
1143
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
1144
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {</div>
1145
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
1146
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1147
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1148
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">else</span></div>
1149
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; instList.push_back(nextInst);</div>
1150
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div>
1151
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">else</span></div>
1152
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div>
1153
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1154
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1155
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</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>
1156
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div>
1157
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
1158
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1159
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1160
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">else</span></div>
1161
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; instList.push_back(nextInst);</div>
1162
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div>
1163
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</div>
1164
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;}</div>
1200
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00874">874</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1201
+ <div class="fragment"><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;{</div>
1202
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
1203
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; {</div>
1204
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
1205
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1206
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1207
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">else</span></div>
1208
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; instList.push_back(nextInst);</div>
1209
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; }</div>
1210
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">else</span></div>
1211
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div>
1212
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1213
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1214
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</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>
1215
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; {</div>
1216
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
1217
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1218
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1219
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">else</span></div>
1220
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; instList.push_back(nextInst);</div>
1221
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; }</div>
1222
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div>
1223
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;}</div>
1165
1224
  </div><!-- fragment -->
1166
1225
  </div>
1167
1226
  </div>
@@ -1193,32 +1252,114 @@ Functions</h2></td></tr>
1193
1252
 
1194
1253
  <p>Get the next instructions following control flow. </p>
1195
1254
 
1196
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00287">287</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1197
- <div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;{</div>
1198
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
1199
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div>
1200
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
1201
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(nextInst);</div>
1202
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1203
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1204
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">else</span></div>
1205
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; instList.push_back(svfNextInst);</div>
1206
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
1207
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span></div>
1208
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div>
1209
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
1210
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1211
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</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>
1212
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div>
1213
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
1214
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(nextInst);</div>
1215
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1216
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1217
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div>
1218
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; instList.push_back(svfNextInst);</div>
1219
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
1220
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
1221
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;}</div>
1255
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00352">352</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1256
+ <div class="fragment"><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;{</div>
1257
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (!curInst-&gt;isTerminator())</div>
1258
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div>
1259
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst-&gt;getNextNode();</div>
1260
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(nextInst);</div>
1261
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1262
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1263
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">else</span></div>
1264
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; instList.push_back(svfNextInst);</div>
1265
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div>
1266
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div>
1267
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div>
1268
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
1269
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1270
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</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>
1271
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div>
1272
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &amp;((*it)-&gt;front());</div>
1273
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(nextInst);</div>
1274
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
1275
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
1276
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></div>
1277
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; instList.push_back(svfNextInst);</div>
1278
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
1279
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
1280
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div>
1281
+ </div><!-- fragment -->
1282
+ </div>
1283
+ </div>
1284
+ <a id="a4b5d4c7ca2c580ace7305bfed58ffce8"></a>
1285
+ <h2 class="memtitle"><span class="permalink"><a href="#a4b5d4c7ca2c580ace7305bfed58ffce8">&#9670;&nbsp;</a></span>getPointeeType()</h2>
1286
+
1287
+ <div class="memitem">
1288
+ <div class="memproto">
1289
+ <table class="memname">
1290
+ <tr>
1291
+ <td class="memname"><a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SVF::LLVMUtil::getPointeeType </td>
1292
+ <td>(</td>
1293
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
1294
+ <td class="paramname"><em>value</em></td><td>)</td>
1295
+ <td></td>
1296
+ </tr>
1297
+ </table>
1298
+ </div><div class="memdoc">
1299
+ <p>Infer type based on llvm value, this is for the migration to opaque pointer please refer to: <a href="https://llvm.org/docs/OpaquePointers.html#migration-instructions">https://llvm.org/docs/OpaquePointers.html#migration-instructions</a> </p>
1300
+
1301
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00246">246</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1302
+ <div class="fragment"><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div>
1303
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; assert(value &amp;&amp; <span class="stringliteral">&quot;value cannot be nullptr!&quot;</span>);</div>
1304
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a> *loadInst = SVFUtil::dyn_cast&lt;LoadInst&gt;(value))</div>
1305
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
1306
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="comment">// get the pointee type of rhs based on lhs</span></div>
1307
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// e.g., for `%lhs = load i64, ptr %rhs`, we return i64</span></div>
1308
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> loadInst-&gt;getType();</div>
1309
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
1310
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *storeInst = SVFUtil::dyn_cast&lt;StoreInst&gt;(value))</div>
1311
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div>
1312
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// get the pointee type of op1 based on op0</span></div>
1313
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// e.g., for `store i64 %op0, ptr %op1`, we return i64</span></div>
1314
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> storeInst-&gt;getValueOperand()-&gt;getType();</div>
1315
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
1316
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a> *gepInst = SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(value))</div>
1317
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
1318
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// get the source element type of a gep instruction</span></div>
1319
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// e.g., for `gep %struct.foo, ptr %base, i64 0`, we return struct.foo</span></div>
1320
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> gepInst-&gt;getSourceElementType();</div>
1321
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div>
1322
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a893c345ff98bb2808ae905cf9f3671c5">GEPOperator</a>* gepOperator = SVFUtil::dyn_cast&lt;GEPOperator&gt;(value))</div>
1323
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div>
1324
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="comment">// get the source element type of a gep instruction</span></div>
1325
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// e.g., for `gep %struct.foo, ptr %base, i64 0`, we return struct.foo</span></div>
1326
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> gepOperator-&gt;getSourceElementType();</div>
1327
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div>
1328
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *callInst = SVFUtil::dyn_cast&lt;CallInst&gt;(value))</div>
1329
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
1330
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="comment">// get the pointee type of return value</span></div>
1331
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// e.g., for `%call = call ptr @_Znwm(i64 noundef 8)`, we return i64</span></div>
1332
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> callInst-&gt;getFunctionType();</div>
1333
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
1334
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a> *callBase = SVFUtil::dyn_cast&lt;CallBase&gt;(value))</div>
1335
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div>
1336
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="comment">// get the pointee type of return value</span></div>
1337
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">// e.g., for `%call = call ptr @_Znwm(i64 noundef 8)`, we return i64</span></div>
1338
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> callBase-&gt;getFunctionType();</div>
1339
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div>
1340
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">AllocaInst</a> *allocaInst = SVFUtil::dyn_cast&lt;AllocaInst&gt;(value))</div>
1341
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
1342
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">// get the type of the allocated memory</span></div>
1343
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// e.g., for `%retval = alloca i64, align 4`, we return i64</span></div>
1344
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> allocaInst-&gt;getAllocatedType();</div>
1345
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div>
1346
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</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> *globalVar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(value))</div>
1347
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
1348
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// get the pointee type of the global pointer</span></div>
1349
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> globalVar-&gt;getValueType();</div>
1350
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
1351
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</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;(value))</div>
1352
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div>
1353
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// get the pointee type of return value</span></div>
1354
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// e.g., for `%call = call ptr @_Znwm(i64 noundef 8)`, we return i64</span></div>
1355
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> func-&gt;getFunctionType();</div>
1356
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
1357
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span></div>
1358
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div>
1359
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">LLVMUtil::dumpValue</a>(value) + <span class="stringliteral">&quot;Unknown llvm Type, cannot get Ptr Element Type&quot;</span>).c_str());</div>
1360
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; abort();</div>
1361
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
1362
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div>
1222
1363
  </div><!-- fragment -->
1223
1364
  </div>
1224
1365
  </div>
@@ -1250,30 +1391,30 @@ Functions</h2></td></tr>
1250
1391
 
1251
1392
  <p>Get the previous instructions following control flow. </p>
1252
1393
 
1253
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00834">834</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1254
- <div class="fragment"><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;{</div>
1255
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1256
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div>
1257
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1258
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1259
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1260
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">else</span></div>
1261
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; instList.push_back(prevInst);</div>
1262
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; }</div>
1263
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">else</span></div>
1264
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; {</div>
1265
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1266
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1267
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</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>
1268
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; {</div>
1269
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1270
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1271
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1272
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordflow">else</span></div>
1273
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; instList.push_back(prevInst);</div>
1274
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div>
1275
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div>
1276
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;}</div>
1394
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00901">901</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1395
+ <div class="fragment"><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;{</div>
1396
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1397
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; {</div>
1398
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1399
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1400
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1401
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">else</span></div>
1402
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; instList.push_back(prevInst);</div>
1403
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; }</div>
1404
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">else</span></div>
1405
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; {</div>
1406
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst-&gt;getParent();</div>
1407
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1408
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</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>
1409
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; {</div>
1410
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1411
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1412
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1413
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">else</span></div>
1414
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; instList.push_back(prevInst);</div>
1415
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; }</div>
1416
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div>
1417
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;}</div>
1277
1418
  </div><!-- fragment -->
1278
1419
  </div>
1279
1420
  </div>
@@ -1305,33 +1446,33 @@ Functions</h2></td></tr>
1305
1446
 
1306
1447
  <p>Get the previous instructions following control flow. </p>
1307
1448
 
1308
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00316">316</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1309
- <div class="fragment"><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;{</div>
1310
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
1311
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1312
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
1313
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1314
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(prevInst);</div>
1315
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1316
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1317
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">else</span></div>
1318
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; instList.push_back(svfPrevInst);</div>
1319
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div>
1320
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span></div>
1321
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
1322
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
1323
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1324
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</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>
1325
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
1326
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1327
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(prevInst);</div>
1328
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1329
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1330
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span></div>
1331
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; instList.push_back(svfPrevInst);</div>
1332
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div>
1333
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
1334
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;}</div>
1449
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00381">381</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1450
+ <div class="fragment"><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;{</div>
1451
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; </div>
1452
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (curInst != &amp;(curInst-&gt;getParent()-&gt;front()))</div>
1453
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div>
1454
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst-&gt;getPrevNode();</div>
1455
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(prevInst);</div>
1456
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1457
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1458
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">else</span></div>
1459
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; instList.push_back(svfPrevInst);</div>
1460
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
1461
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">else</span></div>
1462
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div>
1463
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst-&gt;getParent();</div>
1464
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">// Visit all successors of BB in the CFG</span></div>
1465
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</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>
1466
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div>
1467
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &amp;((*it)-&gt;back());</div>
1468
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(prevInst);</div>
1469
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
1470
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
1471
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">else</span></div>
1472
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; instList.push_back(svfPrevInst);</div>
1473
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
1474
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div>
1475
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;}</div>
1335
1476
  </div><!-- fragment -->
1336
1477
  </div>
1337
1478
  </div>
@@ -1438,29 +1579,30 @@ Functions</h2></td></tr>
1438
1579
 
1439
1580
  <p>Get the reference type of heap/static object from an allocation site. </p>
1440
1581
 
1441
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00131">131</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1442
- <div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div>
1443
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refType = <span class="keyword">nullptr</span>;</div>
1444
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">const</span> SVFInstruction* svfcall = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cs);</div>
1445
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; CallSite svfcs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfcall);</div>
1446
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// Case 1: heap object held by *argument, we should get its element type.</span></div>
1447
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfcs))</div>
1448
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div>
1449
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">int</span> argPos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(svfcs);</div>
1450
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs-&gt;getArgOperand(argPos);</div>
1451
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *argType = SVFUtil::dyn_cast&lt;PointerType&gt;(arg-&gt;getType()))</div>
1452
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; refType = SVFUtil::dyn_cast&lt;PointerType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(argType));</div>
1453
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
1454
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// Case 2: heap object held by return value.</span></div>
1455
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div>
1456
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
1457
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfcs)</div>
1458
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; &amp;&amp; <span class="stringliteral">&quot;Must be heap alloc via ret, or static allocation site&quot;</span>);</div>
1459
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; refType = SVFUtil::dyn_cast&lt;PointerType&gt;(cs-&gt;getType());</div>
1460
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
1461
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; assert(refType &amp;&amp; <span class="stringliteral">&quot;Allocated object must be held by a pointer-typed value.&quot;</span>);</div>
1462
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> refType;</div>
1463
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div>
1582
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00135">135</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1583
+ <div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div>
1584
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refType = <span class="keyword">nullptr</span>;</div>
1585
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> SVFInstruction* svfcall = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(cs);</div>
1586
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; CallSite svfcs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfcall);</div>
1587
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Case 1: heap object held by *argument, we should get its element type.</span></div>
1588
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfcs))</div>
1589
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div>
1590
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">int</span> argPos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(svfcs);</div>
1591
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs-&gt;getArgOperand(argPos);</div>
1592
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *argType = SVFUtil::dyn_cast&lt;PointerType&gt;(arg-&gt;getType()))</div>
1593
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// TODO: getPtrElementType need type inference</span></div>
1594
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; refType = SVFUtil::dyn_cast&lt;PointerType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(argType));</div>
1595
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
1596
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// Case 2: heap object held by return value.</span></div>
1597
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">else</span></div>
1598
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div>
1599
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; assert(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfcs)</div>
1600
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; &amp;&amp; <span class="stringliteral">&quot;Must be heap alloc via ret, or static allocation site&quot;</span>);</div>
1601
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; refType = SVFUtil::dyn_cast&lt;PointerType&gt;(cs-&gt;getType());</div>
1602
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
1603
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; assert(refType &amp;&amp; <span class="stringliteral">&quot;Allocated object must be held by a pointer-typed value.&quot;</span>);</div>
1604
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> refType;</div>
1605
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div>
1464
1606
  </div><!-- fragment -->
1465
1607
  </div>
1466
1608
  </div>
@@ -1488,11 +1630,11 @@ Functions</h2></td></tr>
1488
1630
  </table>
1489
1631
  </div><div class="memdoc">
1490
1632
 
1491
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00155">155</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1492
- <div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div>
1493
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">getLLVMCallSite</a>(inst);</div>
1494
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">getRefTypeOfHeapAllocOrStatic</a>(cs);</div>
1495
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;}</div>
1633
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00160">160</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
1634
+ <div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div>
1635
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">getLLVMCallSite</a>(inst);</div>
1636
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">getRefTypeOfHeapAllocOrStatic</a>(cs);</div>
1637
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;}</div>
1496
1638
  </div><!-- fragment -->
1497
1639
  </div>
1498
1640
  </div>
@@ -1513,105 +1655,105 @@ Functions</h2></td></tr>
1513
1655
  </div><div class="memdoc">
1514
1656
  <p>Get the meta data (line number and file name) info of a LLVM value </p>
1515
1657
 
1516
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00686">686</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1517
- <div class="fragment"><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;{</div>
1518
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</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>
1519
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; </div>
1520
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1521
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; std::stringstream rawstr(str);</div>
1522
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1523
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; </div>
1524
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</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>
1525
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div>
1526
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
1527
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div>
1528
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</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>
1529
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div>
1530
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
1531
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
1532
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
1533
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</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>
1534
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">break</span>;</div>
1535
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div>
1536
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; }</div>
1537
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div>
1538
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</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>
1539
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div>
1540
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
1541
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1542
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1543
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
1544
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1545
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1546
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
1547
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1548
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1549
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; {</div>
1550
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1551
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1552
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1553
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; }</div>
1554
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
1555
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</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>
1556
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
1557
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div>
1558
- <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#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div>
1559
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div>
1560
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1561
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
1562
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
1563
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
1564
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
1565
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
1566
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">else</span></div>
1567
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
1568
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</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>
1569
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
1570
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; }</div>
1571
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</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>
1572
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; {</div>
1573
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1574
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</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>
1575
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1576
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div>
1577
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
1578
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div>
1579
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
1580
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
1581
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; {</div>
1582
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1583
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; </div>
1584
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
1585
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; {</div>
1586
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</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>
1587
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; }</div>
1588
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; </div>
1589
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
1590
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div>
1591
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div>
1592
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; }</div>
1593
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</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>
1594
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div>
1595
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
1596
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div>
1597
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div>
1598
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div>
1599
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</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>
1600
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
1601
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</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>
1602
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; {</div>
1603
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
1604
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; }</div>
1605
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">else</span></div>
1606
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div>
1607
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
1608
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; }</div>
1609
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1610
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; </div>
1611
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
1612
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
1613
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1614
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;}</div>
1658
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00753">753</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1659
+ <div class="fragment"><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;{</div>
1660
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</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>
1661
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; </div>
1662
+ <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>
1663
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; std::stringstream rawstr(str);</div>
1664
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div>
1665
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; </div>
1666
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</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>
1667
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div>
1668
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div>
1669
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div>
1670
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</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>
1671
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div>
1672
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</div>
1673
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div>
1674
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div>
1675
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</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>
1676
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">break</span>;</div>
1677
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div>
1678
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; }</div>
1679
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; }</div>
1680
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.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>
1681
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div>
1682
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
1683
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div>
1684
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div>
1685
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div>
1686
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
1687
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
1688
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; {</div>
1689
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div>
1690
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div>
1691
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; {</div>
1692
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; Line = inlineLoc-&gt;getLine();</div>
1693
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; Column = inlineLoc-&gt;getColumn();</div>
1694
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; File = inlineLoc-&gt;getFilename().str();</div>
1695
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div>
1696
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; }</div>
1697
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</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>
1698
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div>
1699
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
1700
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</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>
1701
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
1702
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div>
1703
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div>
1704
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div>
1705
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div>
1706
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div>
1707
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div>
1708
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">else</span></div>
1709
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div>
1710
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</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>
1711
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument-&gt;getParent());</div>
1712
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; }</div>
1713
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</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>
1714
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {</div>
1715
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div>
1716
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</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>
1717
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</div>
1718
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div>
1719
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div>
1720
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; {</div>
1721
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div>
1722
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</div>
1723
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div>
1724
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div>
1725
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; </div>
1726
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div>
1727
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div>
1728
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</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>
1729
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; }</div>
1730
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; </div>
1731
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
1732
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div>
1733
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div>
1734
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</div>
1735
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</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>
1736
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div>
1737
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
1738
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div>
1739
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</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>
1740
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; {</div>
1741
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</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>
1742
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div>
1743
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</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>
1744
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; {</div>
1745
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div>
1746
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; }</div>
1747
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">else</span></div>
1748
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div>
1749
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;N/A&quot;</span>;</div>
1750
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div>
1751
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div>
1752
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; </div>
1753
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div>
1754
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div>
1755
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1756
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;}</div>
1615
1757
  </div><!-- fragment -->
1616
1758
  </div>
1617
1759
  </div>
@@ -1632,21 +1774,21 @@ Functions</h2></td></tr>
1632
1774
  </div><div class="memdoc">
1633
1775
  <p>Get source code line number of a function according to debug info </p>
1634
1776
 
1635
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00790">790</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1636
- <div class="fragment"><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;{</div>
1637
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1638
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; std::stringstream rawstr(str);</div>
1639
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="comment">/*</span></div>
1640
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
1641
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1642
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="comment"> */</span></div>
1643
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</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>
1644
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; {</div>
1645
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
1646
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</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>
1647
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div>
1648
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1649
- <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;}</div>
1777
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00857">857</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1778
+ <div class="fragment"><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;{</div>
1779
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1780
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; std::stringstream rawstr(str);</div>
1781
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">/*</span></div>
1782
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
1783
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;<span class="comment"> * looks like the relevant</span></div>
1784
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;<span class="comment"> */</span></div>
1785
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</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>
1786
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; {</div>
1787
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
1788
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</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>
1789
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; }</div>
1790
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1791
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;}</div>
1650
1792
  </div><!-- fragment -->
1651
1793
  </div>
1652
1794
  </div>
@@ -1682,15 +1824,15 @@ Functions</h2></td></tr>
1682
1824
  <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>
1683
1825
  <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>
1684
1826
 
1685
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01251">1251</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1686
- <div class="fragment"><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;{</div>
1687
- <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
1688
- <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
1689
- <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; </div>
1690
- <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
1691
- <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
1692
- <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
1693
- <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;}</div>
1827
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01322">1322</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1828
+ <div class="fragment"><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;{</div>
1829
+ <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="comment">// get default successor basic block and default case value (nullptr)</span></div>
1830
+ <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; vec.push_back({switchInst.getDefaultDest(), <span class="keyword">nullptr</span>});</div>
1831
+ <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; </div>
1832
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="comment">// get normal case value and it&#39;s successor basic block</span></div>
1833
+ <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cs : switchInst.cases())</div>
1834
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; vec.push_back({cs.getCaseSuccessor(), cs.getCaseValue()});</div>
1835
+ <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;}</div>
1694
1836
  </div><!-- fragment -->
1695
1837
  </div>
1696
1838
  </div>
@@ -1710,27 +1852,27 @@ Functions</h2></td></tr>
1710
1852
  </table>
1711
1853
  </div><div class="memdoc">
1712
1854
 
1713
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00986">986</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1714
- <div class="fragment"><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;{</div>
1715
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
1716
- <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; </div>
1717
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
1718
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div>
1719
- <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inst : bb)</div>
1720
- <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; {</div>
1721
- <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;inst))</div>
1722
- <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; {</div>
1723
- <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="comment">// assert(cs.getCalledFunction() &amp;&amp;</span></div>
1724
- <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="comment">// &quot;Indirect call detected in thunk func&quot;);</span></div>
1725
- <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="comment">// assert(ret == nullptr &amp;&amp; &quot;multiple callsites in thunk func&quot;);</span></div>
1726
- <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; </div>
1727
- <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; ret = callbase-&gt;getCalledFunction();</div>
1728
- <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; }</div>
1729
- <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; }</div>
1730
- <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div>
1731
- <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; </div>
1732
- <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">return</span> ret;</div>
1733
- <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;}</div>
1855
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01060">1060</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1856
+ <div class="fragment"><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;{</div>
1857
+ <div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
1858
+ <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; </div>
1859
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
1860
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; {</div>
1861
+ <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inst : bb)</div>
1862
+ <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; {</div>
1863
+ <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast&lt;CallBase&gt;(&amp;inst))</div>
1864
+ <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; {</div>
1865
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="comment">// assert(cs.getCalledFunction() &amp;&amp;</span></div>
1866
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="comment">// &quot;Indirect call detected in thunk func&quot;);</span></div>
1867
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="comment">// assert(ret == nullptr &amp;&amp; &quot;multiple callsites in thunk func&quot;);</span></div>
1868
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; </div>
1869
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; ret = callbase-&gt;getCalledFunction();</div>
1870
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; }</div>
1871
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; }</div>
1872
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; }</div>
1873
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; </div>
1874
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">return</span> ret;</div>
1875
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;}</div>
1734
1876
  </div><!-- fragment -->
1735
1877
  </div>
1736
1878
  </div>
@@ -1753,33 +1895,34 @@ Functions</h2></td></tr>
1753
1895
  <p>Get the type of the heap allocation. </p>
1754
1896
  <p>Return the type of the object from a heap allocation </p>
1755
1897
 
1756
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00375">375</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1757
- <div class="fragment"><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;{</div>
1758
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</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;(inst-&gt;getType());</div>
1759
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(inst);</div>
1760
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfinst))</div>
1761
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div>
1762
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(inst))</div>
1763
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
1764
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* newTy = SVFUtil::dyn_cast&lt;PointerType&gt;(v-&gt;getType()))</div>
1765
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = newTy;</div>
1766
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div>
1767
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div>
1768
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfinst))</div>
1769
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div>
1770
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">LLVMUtil::getLLVMCallSite</a>(inst);</div>
1771
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfinst));</div>
1772
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs-&gt;getArgOperand(arg_pos);</div>
1773
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(arg-&gt;getType());</div>
1774
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
1775
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span></div>
1776
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div>
1777
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; assert( <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not a heap allocation instruction?&quot;</span>);</div>
1778
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
1779
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; </div>
1780
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;not a pointer type?&quot;</span>);</div>
1781
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
1782
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div>
1898
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00441">441</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1899
+ <div class="fragment"><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;{</div>
1900
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</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;(inst-&gt;getType());</div>
1901
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(inst);</div>
1902
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfinst))</div>
1903
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
1904
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(inst))</div>
1905
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div>
1906
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* newTy = SVFUtil::dyn_cast&lt;PointerType&gt;(v-&gt;getType()))</div>
1907
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = newTy;</div>
1908
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
1909
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
1910
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfinst))</div>
1911
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
1912
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">LLVMUtil::getLLVMCallSite</a>(inst);</div>
1913
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfinst));</div>
1914
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs-&gt;getArgOperand(arg_pos);</div>
1915
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast&lt;PointerType&gt;(arg-&gt;getType());</div>
1916
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
1917
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">else</span></div>
1918
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; {</div>
1919
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; assert( <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not a heap allocation instruction?&quot;</span>);</div>
1920
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
1921
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
1922
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &amp;&amp; <span class="stringliteral">&quot;not a pointer type?&quot;</span>);</div>
1923
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// TODO: getPtrElementType need type inference</span></div>
1924
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
1925
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;}</div>
1783
1926
  </div><!-- fragment -->
1784
1927
  </div>
1785
1928
  </div>
@@ -1810,15 +1953,15 @@ Functions</h2></td></tr>
1810
1953
  </div><div class="memdoc">
1811
1954
  <p>if this struct type does not have any element, i.e., opaque</p>
1812
1955
 
1813
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00672">672</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1814
- <div class="fragment"><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;{</div>
1815
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; </div>
1816
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</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>
1817
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1818
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> 0;</div>
1819
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">else</span></div>
1820
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1821
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;}</div>
1956
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00739">739</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1957
+ <div class="fragment"><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;{</div>
1958
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; </div>
1959
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</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>
1960
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div>
1961
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">return</span> 0;</div>
1962
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">else</span></div>
1963
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div>
1964
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;}</div>
1822
1965
  </div><!-- fragment -->
1823
1966
  </div>
1824
1967
  </div>
@@ -1840,14 +1983,14 @@ Functions</h2></td></tr>
1840
1983
 
1841
1984
  <p>Helper method to get the size of the type from target data layout. </p>
1842
1985
 
1843
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00663">663</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1844
- <div class="fragment"><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;{</div>
1845
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
1846
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
1847
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</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>
1848
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">else</span></div>
1849
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">return</span> 0;</div>
1850
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;}</div>
1986
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00730">730</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1987
+ <div class="fragment"><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;{</div>
1988
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
1989
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;isSized())</div>
1990
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</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>
1991
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">else</span></div>
1992
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> 0;</div>
1993
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;}</div>
1851
1994
  </div><!-- fragment -->
1852
1995
  </div>
1853
1996
  </div>
@@ -1867,28 +2010,28 @@ Functions</h2></td></tr>
1867
2010
  </table>
1868
2011
  </div><div class="memdoc">
1869
2012
 
1870
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01228">1228</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1871
- <div class="fragment"><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;{</div>
1872
- <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
1873
- <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1874
- <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
1875
- <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
1876
- <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
1877
- <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1878
- <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; User::const_op_iterator oi = vfuncptrgepinst-&gt;idx_begin();</div>
1879
- <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast&lt;ConstantInt&gt;(oi-&gt;get());</div>
1880
- <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
1881
- <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
1882
- <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; {</div>
1883
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;vcall gep idx not constantint\n&quot;</span>;</div>
1884
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; idx_value = 0;</div>
1885
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; }</div>
1886
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordflow">else</span></div>
1887
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; {</div>
1888
- <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx-&gt;getSExtValue();</div>
1889
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; }</div>
1890
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="keywordflow">return</span> idx_value;</div>
1891
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;}</div>
2013
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01299">1299</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2014
+ <div class="fragment"><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;{</div>
2015
+ <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
2016
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
2017
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
2018
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
2019
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
2020
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
2021
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; User::const_op_iterator oi = vfuncptrgepinst-&gt;idx_begin();</div>
2022
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast&lt;ConstantInt&gt;(oi-&gt;get());</div>
2023
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
2024
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
2025
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; {</div>
2026
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <span class="stringliteral">&quot;vcall gep idx not constantint\n&quot;</span>;</div>
2027
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; idx_value = 0;</div>
2028
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; }</div>
2029
+ <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <span class="keywordflow">else</span></div>
2030
+ <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; {</div>
2031
+ <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx-&gt;getSExtValue();</div>
2032
+ <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; }</div>
2033
+ <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <span class="keywordflow">return</span> idx_value;</div>
2034
+ <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;}</div>
1892
2035
  </div><!-- fragment -->
1893
2036
  </div>
1894
2037
  </div>
@@ -1908,17 +2051,17 @@ Functions</h2></td></tr>
1908
2051
  </table>
1909
2052
  </div><div class="memdoc">
1910
2053
 
1911
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01008">1008</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1912
- <div class="fragment"><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;{</div>
1913
- <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">if</span> (cs-&gt;paramHasAttr(0, llvm::Attribute::StructRet))</div>
1914
- <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div>
1915
- <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(1);</div>
1916
- <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; }</div>
1917
- <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">else</span></div>
1918
- <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; {</div>
1919
- <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(0);</div>
1920
- <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; }</div>
1921
- <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;}</div>
2054
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01082">1082</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2055
+ <div class="fragment"><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;{</div>
2056
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">if</span> (cs-&gt;paramHasAttr(0, llvm::Attribute::StructRet))</div>
2057
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; {</div>
2058
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(1);</div>
2059
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; }</div>
2060
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">else</span></div>
2061
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; {</div>
2062
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">return</span> cs-&gt;getArgOperand(0);</div>
2063
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; }</div>
2064
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;}</div>
1922
2065
  </div><!-- fragment -->
1923
2066
  </div>
1924
2067
  </div>
@@ -1938,18 +2081,18 @@ Functions</h2></td></tr>
1938
2081
  </table>
1939
2082
  </div><div class="memdoc">
1940
2083
 
1941
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01137">1137</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1942
- <div class="fragment"><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;{</div>
1943
- <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
1944
- <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
1945
- <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; assert(loadInst != <span class="keyword">nullptr</span>);</div>
1946
- <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst-&gt;getPointerOperand();</div>
1947
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
1948
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
1949
- <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; assert(gepInst != <span class="keyword">nullptr</span>);</div>
1950
- <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst-&gt;getPointerOperand();</div>
1951
- <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">return</span> vtbl;</div>
1952
- <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;}</div>
2084
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01211">1211</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2085
+ <div class="fragment"><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;{</div>
2086
+ <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
2087
+ <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; SVFUtil::dyn_cast&lt;LoadInst&gt;(cs-&gt;getCalledOperand());</div>
2088
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; assert(loadInst != <span class="keyword">nullptr</span>);</div>
2089
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst-&gt;getPointerOperand();</div>
2090
+ <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
2091
+ <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr);</div>
2092
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; assert(gepInst != <span class="keyword">nullptr</span>);</div>
2093
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst-&gt;getPointerOperand();</div>
2094
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">return</span> vtbl;</div>
2095
+ <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;}</div>
1953
2096
  </div><!-- fragment -->
1954
2097
  </div>
1955
2098
  </div>
@@ -1969,18 +2112,18 @@ Functions</h2></td></tr>
1969
2112
  </table>
1970
2113
  </div><div class="memdoc">
1971
2114
 
1972
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00896">896</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
1973
- <div class="fragment"><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;{</div>
1974
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(vtbl-&gt;getOperand(0));</div>
1975
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; assert(vtblStruct &amp;&amp; <span class="stringliteral">&quot;Initializer of a vtable not a struct?&quot;</span>);</div>
1976
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; </div>
1977
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">if</span> (vtblStruct-&gt;getNumOperands() == 2 &amp;&amp;</div>
1978
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; SVFUtil::isa&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0)) &amp;&amp;</div>
1979
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; vtblStruct-&gt;getOperand(1)-&gt;getType()-&gt;isArrayTy())</div>
1980
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0));</div>
1981
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; </div>
1982
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">return</span> vtblStruct;</div>
1983
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;}</div>
2115
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00963">963</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2116
+ <div class="fragment"><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;{</div>
2117
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(vtbl-&gt;getOperand(0));</div>
2118
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; assert(vtblStruct &amp;&amp; <span class="stringliteral">&quot;Initializer of a vtable not a struct?&quot;</span>);</div>
2119
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; </div>
2120
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (vtblStruct-&gt;getNumOperands() == 2 &amp;&amp;</div>
2121
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; SVFUtil::isa&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0)) &amp;&amp;</div>
2122
+ <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; vtblStruct-&gt;getOperand(1)-&gt;getType()-&gt;isArrayTy())</div>
2123
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;ConstantStruct&gt;(vtblStruct-&gt;getOperand(0));</div>
2124
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; </div>
2125
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">return</span> vtblStruct;</div>
2126
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;}</div>
1984
2127
  </div><!-- fragment -->
1985
2128
  </div>
1986
2129
  </div>
@@ -2010,11 +2153,11 @@ Functions</h2></td></tr>
2010
2153
 
2011
2154
  <p>Return true if the argument in a function does not have a caller. </p>
2012
2155
 
2013
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00201">201</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2014
- <div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;{</div>
2015
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div>
2016
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">isNoCallerFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
2017
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div>
2156
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00206">206</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2157
+ <div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div>
2158
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;Argument&gt;(val)</div>
2159
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; &amp;&amp; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">isNoCallerFunction</a>(SVFUtil::cast&lt;Argument&gt;(val)-&gt;getParent());</div>
2160
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div>
2018
2161
  </div><!-- fragment -->
2019
2162
  </div>
2020
2163
  </div>
@@ -2042,16 +2185,16 @@ Functions</h2></td></tr>
2042
2185
  </table>
2043
2186
  </div><div class="memdoc">
2044
2187
 
2045
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00309">309</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2046
- <div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;{</div>
2047
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2048
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div>
2049
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span> ((constExpr-&gt;getOpcode() &gt;= Instruction::BinaryOpsBegin) &amp;&amp;</div>
2050
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; (constExpr-&gt;getOpcode() &lt;= Instruction::BinaryOpsEnd))</div>
2051
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2052
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div>
2053
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2054
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;}</div>
2188
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00314">314</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2189
+ <div class="fragment"><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;{</div>
2190
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2191
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
2192
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> ((constExpr-&gt;getOpcode() &gt;= Instruction::BinaryOpsBegin) &amp;&amp;</div>
2193
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; (constExpr-&gt;getOpcode() &lt;= Instruction::BinaryOpsEnd))</div>
2194
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2195
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
2196
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2197
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div>
2055
2198
  </div><!-- fragment -->
2056
2199
  </div>
2057
2200
  </div>
@@ -2178,15 +2321,15 @@ Functions</h2></td></tr>
2178
2321
  </table>
2179
2322
  </div><div class="memdoc">
2180
2323
 
2181
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00264">264</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2182
- <div class="fragment"><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;{</div>
2183
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2184
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div>
2185
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::BitCast)</div>
2186
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2187
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
2188
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2189
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;}</div>
2324
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00269">269</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2325
+ <div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div>
2326
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2327
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
2328
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::BitCast)</div>
2329
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2330
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div>
2331
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2332
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;}</div>
2190
2333
  </div><!-- fragment -->
2191
2334
  </div>
2192
2335
  </div>
@@ -2214,16 +2357,16 @@ Functions</h2></td></tr>
2214
2357
  </table>
2215
2358
  </div><div class="memdoc">
2216
2359
 
2217
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00298">298</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2218
- <div class="fragment"><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;{</div>
2219
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2220
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div>
2221
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::ICmp ||</div>
2222
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; constExpr-&gt;getOpcode() == Instruction::FCmp)</div>
2223
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2224
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div>
2225
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2226
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div>
2360
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00303">303</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2361
+ <div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div>
2362
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2363
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div>
2364
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::ICmp ||</div>
2365
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; constExpr-&gt;getOpcode() == Instruction::FCmp)</div>
2366
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2367
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
2368
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2369
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;}</div>
2227
2370
  </div><!-- fragment -->
2228
2371
  </div>
2229
2372
  </div>
@@ -2245,10 +2388,10 @@ Functions</h2></td></tr>
2245
2388
 
2246
2389
  <p>Check whether this value points-to a constant object. </p>
2247
2390
 
2248
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00860">860</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2249
- <div class="fragment"><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;{</div>
2250
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
2251
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;}</div>
2391
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00927">927</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2392
+ <div class="fragment"><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;{</div>
2393
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMValue(val));</div>
2394
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;}</div>
2252
2395
  </div><!-- fragment -->
2253
2396
  </div>
2254
2397
  </div>
@@ -2271,33 +2414,33 @@ Functions</h2></td></tr>
2271
2414
  <p>Check whether this value points-to a constant object. </p>
2272
2415
  <p>Check whether this value points-to a constant object </p>
2273
2416
 
2274
- <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>
2275
- <div class="fragment"><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div>
2276
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
2277
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; {</div>
2278
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(v))</div>
2279
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2280
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer())</div>
2281
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; {</div>
2282
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> !v-&gt;isExternalLinkage(v-&gt;getLinkage());</div>
2283
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div>
2284
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">else</span></div>
2285
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; {</div>
2286
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(v-&gt;getInitializer()-&gt;getType())-&gt;getTypeInfo();</div>
2287
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keyword">const</span> std::vector&lt;const SVFType*&gt; &amp;fields = stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>();</div>
2288
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;const SVFType*&gt;::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div>
2289
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; {</div>
2290
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = *it;</div>
2291
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; assert(!SVFUtil::isa&lt;SVFFunctionType&gt;(elemTy) &amp;&amp; <span class="stringliteral">&quot;Initializer of a global is a function?&quot;</span>);</div>
2292
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(elemTy))</div>
2293
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2294
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div>
2295
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; </div>
2296
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div>
2297
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
2298
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; }</div>
2299
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val);</div>
2300
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;}</div>
2417
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00935">935</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2418
+ <div class="fragment"><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;{</div>
2419
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div>
2420
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; {</div>
2421
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(v))</div>
2422
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2423
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer())</div>
2424
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; {</div>
2425
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">return</span> !v-&gt;isExternalLinkage(v-&gt;getLinkage());</div>
2426
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div>
2427
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">else</span></div>
2428
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; {</div>
2429
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFType(v-&gt;getInitializer()-&gt;getType())-&gt;getTypeInfo();</div>
2430
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keyword">const</span> std::vector&lt;const SVFType*&gt; &amp;fields = stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>();</div>
2431
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;const SVFType*&gt;::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div>
2432
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; {</div>
2433
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = *it;</div>
2434
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; assert(!SVFUtil::isa&lt;SVFFunctionType&gt;(elemTy) &amp;&amp; <span class="stringliteral">&quot;Initializer of a global is a function?&quot;</span>);</div>
2435
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(elemTy))</div>
2436
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2437
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; }</div>
2438
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; </div>
2439
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div>
2440
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; }</div>
2441
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div>
2442
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val);</div>
2443
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;}</div>
2301
2444
  </div><!-- fragment -->
2302
2445
  </div>
2303
2446
  </div>
@@ -2327,11 +2470,11 @@ Functions</h2></td></tr>
2327
2470
 
2328
2471
  <p>Return true if the value refers to constant data, e.g., i32 0. </p>
2329
2472
 
2330
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00414">414</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2331
- <div class="fragment"><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;{</div>
2332
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</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>
2333
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">MetadataAsValue</a>, <a class="code" href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">BlockAddress</a>&gt;(val);</div>
2334
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div>
2473
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00420">420</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2474
+ <div class="fragment"><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;{</div>
2475
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</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>
2476
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">MetadataAsValue</a>, <a class="code" href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">BlockAddress</a>&gt;(val);</div>
2477
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;}</div>
2335
2478
  </div><!-- fragment -->
2336
2479
  </div>
2337
2480
  </div>
@@ -2352,35 +2495,35 @@ Functions</h2></td></tr>
2352
2495
  </div><div class="memdoc">
2353
2496
  <p>TODO: on mac os function name is an empty string after demangling</p>
2354
2497
 
2355
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01067">1067</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2356
- <div class="fragment"><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;{</div>
2357
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2358
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2359
- <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
2360
- <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
2361
- <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; {</div>
2362
- <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2363
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; }</div>
2364
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
2365
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2366
- <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; {</div>
2367
- <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2368
- <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; }</div>
2369
- <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
2370
- <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2371
- <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
2372
- <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2373
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; {</div>
2374
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2375
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; }</div>
2376
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">else</span></div>
2377
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; {</div>
2378
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2379
- <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
2380
- <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; }</div>
2381
- <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp;</div>
2382
- <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
2383
- <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;}</div>
2498
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01141">1141</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2499
+ <div class="fragment"><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;{</div>
2500
+ <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2501
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2502
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
2503
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
2504
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; {</div>
2505
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2506
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; }</div>
2507
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
2508
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2509
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; {</div>
2510
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2511
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; }</div>
2512
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
2513
+ <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2514
+ <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
2515
+ <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2516
+ <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; {</div>
2517
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2518
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; }</div>
2519
+ <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">else</span></div>
2520
+ <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; {</div>
2521
+ <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2522
+ <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
2523
+ <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; }</div>
2524
+ <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp;</div>
2525
+ <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
2526
+ <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;}</div>
2384
2527
  </div><!-- fragment -->
2385
2528
  </div>
2386
2529
  </div>
@@ -2400,11 +2543,11 @@ Functions</h2></td></tr>
2400
2543
  </table>
2401
2544
  </div><div class="memdoc">
2402
2545
 
2403
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00980">980</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2404
- <div class="fragment"><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;{</div>
2405
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str());</div>
2406
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
2407
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;}</div>
2546
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01054">1054</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2547
+ <div class="fragment"><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;{</div>
2548
+ <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str());</div>
2549
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
2550
+ <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;}</div>
2408
2551
  </div><!-- fragment -->
2409
2552
  </div>
2410
2553
  </div>
@@ -2424,37 +2567,37 @@ Functions</h2></td></tr>
2424
2567
  </table>
2425
2568
  </div><div class="memdoc">
2426
2569
 
2427
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01098">1098</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2428
- <div class="fragment"><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;{</div>
2429
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2430
- <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2431
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
2432
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
2433
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; {</div>
2434
- <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2435
- <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; }</div>
2436
- <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
2437
- <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2438
- <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; {</div>
2439
- <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2440
- <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div>
2441
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
2442
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2443
- <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
2444
- <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2445
- <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; {</div>
2446
- <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2447
- <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div>
2448
- <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">else</span></div>
2449
- <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; {</div>
2450
- <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2451
- <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
2452
- <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; }</div>
2453
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &gt; 0 &amp;&amp;</div>
2454
- <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &amp;&amp;</div>
2455
- <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">&quot;~&quot;</span>) == 0 &amp;&amp;</div>
2456
- <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
2457
- <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;}</div>
2570
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01172">1172</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2571
+ <div class="fragment"><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;{</div>
2572
+ <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;isDeclaration())</div>
2573
+ <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2574
+ <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>-&gt;getName().str();</div>
2575
+ <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
2576
+ <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; {</div>
2577
+ <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2578
+ <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; }</div>
2579
+ <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
2580
+ <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
2581
+ <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; {</div>
2582
+ <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2583
+ <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; }</div>
2584
+ <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
2585
+ <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2586
+ <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">&quot;::&quot;</span>);</div>
2587
+ <div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">if</span> (colon == std::string::npos)</div>
2588
+ <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; {</div>
2589
+ <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
2590
+ <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; }</div>
2591
+ <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">else</span></div>
2592
+ <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; {</div>
2593
+ <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
2594
+ <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
2595
+ <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; }</div>
2596
+ <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() &gt; 0 &amp;&amp; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &gt; 0 &amp;&amp;</div>
2597
+ <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &amp;&amp;</div>
2598
+ <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">&quot;~&quot;</span>) == 0 &amp;&amp;</div>
2599
+ <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
2600
+ <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;}</div>
2458
2601
  </div><!-- fragment -->
2459
2602
  </div>
2460
2603
  </div>
@@ -2484,15 +2627,15 @@ Functions</h2></td></tr>
2484
2627
 
2485
2628
  <p>Return corresponding constant expression, otherwise return nullptr. </p>
2486
2629
 
2487
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00234">234</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2488
- <div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div>
2489
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2490
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div>
2491
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::GetElementPtr)</div>
2492
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2493
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div>
2494
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2495
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div>
2630
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00239">239</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2631
+ <div class="fragment"><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;{</div>
2632
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2633
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div>
2634
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::GetElementPtr)</div>
2635
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2636
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
2637
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2638
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div>
2496
2639
  </div><!-- fragment -->
2497
2640
  </div>
2498
2641
  </div>
@@ -2520,15 +2663,15 @@ Functions</h2></td></tr>
2520
2663
  </table>
2521
2664
  </div><div class="memdoc">
2522
2665
 
2523
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00244">244</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2524
- <div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div>
2525
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2526
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div>
2527
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::IntToPtr)</div>
2528
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2529
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div>
2530
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2531
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;}</div>
2666
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00249">249</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2667
+ <div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;{</div>
2668
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2669
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div>
2670
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::IntToPtr)</div>
2671
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2672
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
2673
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2674
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</div>
2532
2675
  </div><!-- fragment -->
2533
2676
  </div>
2534
2677
  </div>
@@ -2614,19 +2757,19 @@ Functions</h2></td></tr>
2614
2757
 
2615
2758
  <p>Check whether a file is an LLVM IR file. </p>
2616
2759
 
2617
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00419">419</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2618
- <div class="fragment"><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;{</div>
2619
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; llvm::ErrorOr&lt;std::unique_ptr&lt;llvm::MemoryBuffer&gt;&gt; FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div>
2620
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (FileOrErr.getError())</div>
2621
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2622
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; llvm::MemoryBufferRef Buffer = FileOrErr.get()-&gt;getMemBufferRef();</div>
2623
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div>
2624
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div>
2625
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div>
2626
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div>
2627
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? <a class="code" href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a> :</div>
2628
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; Buffer.getBuffer().startswith(<span class="stringliteral">&quot;; ModuleID =&quot;</span>);</div>
2629
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;}</div>
2760
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00486">486</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2761
+ <div class="fragment"><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;{</div>
2762
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; llvm::ErrorOr&lt;std::unique_ptr&lt;llvm::MemoryBuffer&gt;&gt; FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div>
2763
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> (FileOrErr.getError())</div>
2764
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2765
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; llvm::MemoryBufferRef Buffer = FileOrErr.get()-&gt;getMemBufferRef();</div>
2766
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div>
2767
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div>
2768
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div>
2769
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div>
2770
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? <a class="code" href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a> :</div>
2771
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; Buffer.getBuffer().startswith(<span class="stringliteral">&quot;; ModuleID =&quot;</span>);</div>
2772
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;}</div>
2630
2773
  </div><!-- fragment -->
2631
2774
  </div>
2632
2775
  </div>
@@ -2646,29 +2789,36 @@ Functions</h2></td></tr>
2646
2789
  </table>
2647
2790
  </div><div class="memdoc">
2648
2791
 
2649
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00918">918</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2650
- <div class="fragment"><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;{</div>
2651
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* loadSrc = loadInst-&gt;getPointerOperand();</div>
2652
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* valTy = loadSrc-&gt;getType();</div>
2653
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = valTy;</div>
2654
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; 3; ++i)</div>
2655
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; {</div>
2656
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast&lt;PointerType&gt;(elemTy))</div>
2657
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrTy);</div>
2658
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">else</span></div>
2659
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2660
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; }</div>
2661
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* functy = SVFUtil::dyn_cast&lt;FunctionType&gt;(elemTy))</div>
2662
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; {</div>
2663
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy-&gt;getParamType(0);</div>
2664
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(paramty);</div>
2665
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span> (className.size() &gt; 0)</div>
2666
- <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; {</div>
2667
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2668
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; }</div>
2669
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; }</div>
2670
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2671
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;}</div>
2792
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00985">985</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2793
+ <div class="fragment"><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;{</div>
2794
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* loadSrc = loadInst-&gt;getPointerOperand();</div>
2795
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* valTy = loadSrc-&gt;getType();</div>
2796
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = valTy;</div>
2797
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; 3; ++i)</div>
2798
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div>
2799
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="comment">// TODO: getPtrElementType to be removed</span></div>
2800
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast&lt;PointerType&gt;(elemTy))</div>
2801
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrTy);</div>
2802
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">else</span></div>
2803
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2804
+ <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div>
2805
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* functy = SVFUtil::dyn_cast&lt;FunctionType&gt;(elemTy))</div>
2806
+ <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; {</div>
2807
+ <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy-&gt;getParamType(0);</div>
2808
+ <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">&quot;&quot;</span>;</div>
2809
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast&lt;PointerType&gt;(paramty))</div>
2810
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; {</div>
2811
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="comment">// TODO: getPtrElementType need type inference</span></div>
2812
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* st = SVFUtil::dyn_cast&lt;StructType&gt;(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(ptrTy)))</div>
2813
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">LLVMUtil::getClassNameFromType</a>(st);</div>
2814
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div>
2815
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keywordflow">if</span> (className.size() &gt; 0)</div>
2816
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; {</div>
2817
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2818
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; }</div>
2819
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div>
2820
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2821
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;}</div>
2672
2822
  </div><!-- fragment -->
2673
2823
  </div>
2674
2824
  </div>
@@ -2699,10 +2849,10 @@ Functions</h2></td></tr>
2699
2849
  <p>Function does not have any possible caller in the call graph. </p>
2700
2850
  <p>Return true if the function does not have a caller (either it is a main function or a dead function) </p>
2701
2851
 
2702
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00195">195</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2703
- <div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;{</div>
2704
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(fun);</div>
2705
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div>
2852
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00200">200</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2853
+ <div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;{</div>
2854
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(fun);</div>
2855
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div>
2706
2856
  </div><!-- fragment -->
2707
2857
  </div>
2708
2858
  </div>
@@ -2829,15 +2979,15 @@ Functions</h2></td></tr>
2829
2979
  </table>
2830
2980
  </div><div class="memdoc">
2831
2981
 
2832
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00254">254</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2833
- <div class="fragment"><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;{</div>
2834
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2835
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div>
2836
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::PtrToInt)</div>
2837
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2838
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
2839
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2840
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;}</div>
2982
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00259">259</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2983
+ <div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;{</div>
2984
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2985
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div>
2986
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::PtrToInt)</div>
2987
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2988
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div>
2989
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2990
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div>
2841
2991
  </div><!-- fragment -->
2842
2992
  </div>
2843
2993
  </div>
@@ -2905,28 +3055,28 @@ Functions</h2></td></tr>
2905
3055
  <p>Given a inheritance relation B is a child of A We assume B::B(thisPtr1){ A::A(thisPtr2) } such that thisPtr1 == thisPtr2 In the following code thisPtr1 is "%class.B1* %this" and thisPtr2 is "%class.A* %0".</p>
2906
3056
  <p>define linkonce_odr dso_local void @B1::B1()(class.B1* this) unnamed_addr #6 comdat this.addr = alloca class.B1*, align 8 store class.B1* this, class.B1** this.addr, align 8 this1 = load class.B1*, class.B1** this.addr, align 8 %0 = bitcast class.B1* this1 to class.A* call void @A::A()(class.A* %0) </p>
2907
3057
 
2908
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01034">1034</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
2909
- <div class="fragment"><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;{</div>
2910
- <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
2911
- <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2912
- <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1-&gt;users())</div>
2913
- <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; {</div>
2914
- <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt;(thisU))</div>
2915
- <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; {</div>
2916
- <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store-&gt;getPointerOperand()-&gt;users())</div>
2917
- <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; {</div>
2918
- <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(storeU))</div>
2919
- <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; {</div>
2920
- <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">if</span> (load-&gt;getNextNode() &amp;&amp;</div>
2921
- <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; SVFUtil::isa&lt;CastInst&gt;(load-&gt;getNextNode()))</div>
2922
- <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CastInst&gt;(load-&gt;getNextNode()) ==</div>
2923
- <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; (thisPtr2-&gt;stripPointerCasts());</div>
2924
- <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; }</div>
2925
- <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; }</div>
2926
- <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div>
2927
- <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
2928
- <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2929
- <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;}</div>
3058
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01108">1108</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3059
+ <div class="fragment"><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;{</div>
3060
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
3061
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3062
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1-&gt;users())</div>
3063
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; {</div>
3064
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast&lt;StoreInst&gt;(thisU))</div>
3065
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; {</div>
3066
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store-&gt;getPointerOperand()-&gt;users())</div>
3067
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; {</div>
3068
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast&lt;LoadInst&gt;(storeU))</div>
3069
+ <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; {</div>
3070
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">if</span> (load-&gt;getNextNode() &amp;&amp;</div>
3071
+ <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; SVFUtil::isa&lt;CastInst&gt;(load-&gt;getNextNode()))</div>
3072
+ <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CastInst&gt;(load-&gt;getNextNode()) ==</div>
3073
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; (thisPtr2-&gt;stripPointerCasts());</div>
3074
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; }</div>
3075
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; }</div>
3076
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; }</div>
3077
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; }</div>
3078
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3079
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;}</div>
2930
3080
  </div><!-- fragment -->
2931
3081
  </div>
2932
3082
  </div>
@@ -2954,15 +3104,15 @@ Functions</h2></td></tr>
2954
3104
  </table>
2955
3105
  </div><div class="memdoc">
2956
3106
 
2957
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00274">274</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2958
- <div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;{</div>
2959
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2960
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div>
2961
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::Select)</div>
2962
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
2963
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
2964
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
2965
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;}</div>
3107
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00279">279</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3108
+ <div class="fragment"><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;{</div>
3109
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3110
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div>
3111
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::Select)</div>
3112
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
3113
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
3114
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3115
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;}</div>
2966
3116
  </div><!-- fragment -->
2967
3117
  </div>
2968
3118
  </div>
@@ -2990,19 +3140,19 @@ Functions</h2></td></tr>
2990
3140
  </table>
2991
3141
  </div><div class="memdoc">
2992
3142
 
2993
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00284">284</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
2994
- <div class="fragment"><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;{</div>
2995
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
2996
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div>
2997
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::Trunc ||</div>
2998
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPTrunc ||</div>
2999
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; constExpr-&gt;getOpcode() == Instruction::ZExt ||</div>
3000
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; constExpr-&gt;getOpcode() == Instruction::SExt ||</div>
3001
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPExt)</div>
3002
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
3003
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div>
3004
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3005
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;}</div>
3143
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00289">289</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3144
+ <div class="fragment"><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;{</div>
3145
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3146
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
3147
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (constExpr-&gt;getOpcode() == Instruction::Trunc ||</div>
3148
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPTrunc ||</div>
3149
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; constExpr-&gt;getOpcode() == Instruction::ZExt ||</div>
3150
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; constExpr-&gt;getOpcode() == Instruction::SExt ||</div>
3151
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; constExpr-&gt;getOpcode() == Instruction::FPExt)</div>
3152
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
3153
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div>
3154
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3155
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;}</div>
3006
3156
  </div><!-- fragment -->
3007
3157
  </div>
3008
3158
  </div>
@@ -3030,16 +3180,16 @@ Functions</h2></td></tr>
3030
3180
  </table>
3031
3181
  </div><div class="memdoc">
3032
3182
 
3033
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00320">320</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3034
- <div class="fragment"><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;{</div>
3035
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3036
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
3037
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> ((constExpr-&gt;getOpcode() &gt;= Instruction::UnaryOpsBegin) &amp;&amp;</div>
3038
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; (constExpr-&gt;getOpcode() &lt;= Instruction::UnaryOpsEnd))</div>
3039
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
3040
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div>
3041
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3042
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;}</div>
3183
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00325">325</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3184
+ <div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;{</div>
3185
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* constExpr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3186
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div>
3187
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> ((constExpr-&gt;getOpcode() &gt;= Instruction::UnaryOpsBegin) &amp;&amp;</div>
3188
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; (constExpr-&gt;getOpcode() &lt;= Instruction::UnaryOpsEnd))</div>
3189
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> constExpr;</div>
3190
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
3191
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3192
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;}</div>
3043
3193
  </div><!-- fragment -->
3044
3194
  </div>
3045
3195
  </div>
@@ -3111,20 +3261,20 @@ Functions</h2></td></tr>
3111
3261
  </table>
3112
3262
  </div><div class="memdoc">
3113
3263
 
3114
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00585">585</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3115
- <div class="fragment"><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;{</div>
3116
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="comment">// Check if it is an empty global annotations</span></div>
3117
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</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>
3118
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3119
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">else</span></div>
3120
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; {</div>
3121
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="comment">// Check if any global strings has at least one effective user</span></div>
3122
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : global.uses())</div>
3123
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
3124
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3125
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div>
3126
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3127
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;}</div>
3264
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00652">652</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3265
+ <div class="fragment"><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;{</div>
3266
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">// Check if it is an empty global annotations</span></div>
3267
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</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>
3268
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3269
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">else</span></div>
3270
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; {</div>
3271
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// Check if any global strings has at least one effective user</span></div>
3272
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; use : global.uses())</div>
3273
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (use.getUser()-&gt;getNumUses() != 0)</div>
3274
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3275
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div>
3276
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3277
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;}</div>
3128
3278
  </div><!-- fragment -->
3129
3279
  </div>
3130
3280
  </div>
@@ -3144,14 +3294,14 @@ Functions</h2></td></tr>
3144
3294
  </table>
3145
3295
  </div><div class="memdoc">
3146
3296
 
3147
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00909">909</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3148
- <div class="fragment"><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;{</div>
3149
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;GlobalVariable&gt;(val))</div>
3150
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3151
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> valName = val-&gt;getName().str();</div>
3152
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> valName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>.size(),</div>
3153
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>) == 0;</div>
3154
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;}</div>
3297
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00976">976</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3298
+ <div class="fragment"><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;{</div>
3299
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;GlobalVariable&gt;(val))</div>
3300
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3301
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> valName = val-&gt;getName().str();</div>
3302
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">return</span> valName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>.size(),</div>
3303
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>) == 0;</div>
3304
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;}</div>
3155
3305
  </div><!-- fragment -->
3156
3306
  </div>
3157
3307
  </div>
@@ -3171,63 +3321,36 @@ Functions</h2></td></tr>
3171
3321
  </table>
3172
3322
  </div><div class="memdoc">
3173
3323
 
3174
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00949">949</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3175
- <div class="fragment"><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;{</div>
3176
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
3177
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// ptr)</span></div>
3178
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getCalledFunction() != <span class="keyword">nullptr</span> || cs-&gt;arg_empty())</div>
3179
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3180
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; </div>
3181
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
3182
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="comment">// class name</span></div>
3183
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getArgOperand(0)-&gt;getType()-&gt;isPointerTy() == <span class="keyword">false</span>)</div>
3184
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3185
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; </div>
3186
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs-&gt;getCalledOperand();</div>
3187
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast&lt;LoadInst&gt;(vfunc))</div>
3188
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; {</div>
3189
- <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
3190
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
3191
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr))</div>
3192
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; {</div>
3193
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (vfuncptrgepinst-&gt;getNumIndices() != 1)</div>
3194
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3195
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst-&gt;getPointerOperand();</div>
3196
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(vtbl))</div>
3197
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; {</div>
3198
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3199
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div>
3200
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; }</div>
3201
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; }</div>
3202
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3203
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;}</div>
3204
- </div><!-- fragment -->
3205
- </div>
3206
- </div>
3207
- <a id="a7b8b93fec1dc8c63c0a5837a85b99129"></a>
3208
- <h2 class="memtitle"><span class="permalink"><a href="#a7b8b93fec1dc8c63c0a5837a85b99129">&#9670;&nbsp;</a></span>llvmToString()</h2>
3209
-
3210
- <div class="memitem">
3211
- <div class="memproto">
3212
- <div class="memtemplate">
3213
- template&lt;typename T &gt; </div>
3214
- <table class="memname">
3215
- <tr>
3216
- <td class="memname"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::LLVMUtil::llvmToString </td>
3217
- <td>(</td>
3218
- <td class="paramtype">const T &amp;&#160;</td>
3219
- <td class="paramname"><em>val</em></td><td>)</td>
3220
- <td></td>
3221
- </tr>
3222
- </table>
3223
- </div><div class="memdoc">
3224
-
3225
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00517">517</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3226
- <div class="fragment"><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;{</div>
3227
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
3228
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; llvm::raw_string_ostream(str) &lt;&lt; val;</div>
3229
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span> str;</div>
3230
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;}</div>
3324
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01023">1023</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3325
+ <div class="fragment"><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;{</div>
3326
+ <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
3327
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="comment">// ptr)</span></div>
3328
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getCalledFunction() != <span class="keyword">nullptr</span> || cs-&gt;arg_empty())</div>
3329
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3330
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; </div>
3331
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
3332
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="comment">// class name</span></div>
3333
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">if</span> (cs-&gt;getArgOperand(0)-&gt;getType()-&gt;isPointerTy() == <span class="keyword">false</span>)</div>
3334
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3335
+ <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; </div>
3336
+ <div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs-&gt;getCalledOperand();</div>
3337
+ <div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast&lt;LoadInst&gt;(vfunc))</div>
3338
+ <div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; {</div>
3339
+ <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst-&gt;getPointerOperand();</div>
3340
+ <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
3341
+ <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(vfuncptr))</div>
3342
+ <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; {</div>
3343
+ <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (vfuncptrgepinst-&gt;getNumIndices() != 1)</div>
3344
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3345
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst-&gt;getPointerOperand();</div>
3346
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(vtbl))</div>
3347
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; {</div>
3348
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3349
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; }</div>
3350
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; }</div>
3351
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; }</div>
3352
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3353
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;}</div>
3231
3354
  </div><!-- fragment -->
3232
3355
  </div>
3233
3356
  </div>
@@ -3278,31 +3401,31 @@ template&lt;typename T &gt; </div>
3278
3401
  <p>Parse argument for multi-module analysis. </p>
3279
3402
  <p>Get the names of all modules into a vector And process arguments </p>
3280
3403
 
3281
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00436">436</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3282
- <div class="fragment"><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;{</div>
3283
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
3284
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
3285
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
3286
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
3287
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
3288
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div>
3289
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
3290
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; == moduleNameVec.end())</div>
3291
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; moduleNameVec.push_back(argument);</div>
3292
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
3293
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div>
3294
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; arg_value[arg_num] = argv[i];</div>
3295
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; arg_num++;</div>
3296
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
3297
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div>
3298
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div>
3299
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">else</span></div>
3300
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div>
3301
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; arg_value[arg_num] = argv[i];</div>
3302
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; arg_num++;</div>
3303
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
3304
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div>
3305
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;}</div>
3404
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00503">503</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3405
+ <div class="fragment"><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;{</div>
3406
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
3407
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; argc; ++i)</div>
3408
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div>
3409
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
3410
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
3411
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; {</div>
3412
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
3413
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; == moduleNameVec.end())</div>
3414
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; moduleNameVec.push_back(argument);</div>
3415
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span> (first_ir_file)</div>
3416
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div>
3417
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; arg_value[arg_num] = argv[i];</div>
3418
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; arg_num++;</div>
3419
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; first_ir_file = <span class="keyword">false</span>;</div>
3420
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div>
3421
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
3422
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">else</span></div>
3423
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
3424
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; arg_value[arg_num] = argv[i];</div>
3425
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; arg_num++;</div>
3426
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div>
3427
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; }</div>
3428
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;}</div>
3306
3429
  </div><!-- fragment -->
3307
3430
  </div>
3308
3431
  </div>
@@ -3322,66 +3445,66 @@ template&lt;typename T &gt; </div>
3322
3445
  </table>
3323
3446
  </div><div class="memdoc">
3324
3447
 
3325
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00504">504</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3326
- <div class="fragment"><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;{</div>
3327
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
3328
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
3329
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; </div>
3330
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = removedFuncList[0]-&gt;getParent();</div>
3331
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</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>
3332
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
3333
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">return</span>;</div>
3334
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; </div>
3335
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
3336
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
3337
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">return</span>;</div>
3338
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; </div>
3339
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
3340
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
3341
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div>
3342
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
3343
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
3344
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">continue</span>;</div>
3345
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; </div>
3346
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0));</div>
3347
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr-&gt;getOpcode() != Instruction::BitCast)</div>
3348
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div>
3349
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// Keep the annotation if it&#39;s not created using BitCast</span></div>
3350
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; newAnnotations.push_back(structAn);</div>
3351
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">continue</span>;</div>
3352
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div>
3353
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; </div>
3354
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
3355
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (annotatedFunc == <span class="keyword">nullptr</span> || std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) != removedFuncList.end())</div>
3356
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">continue</span>;</div>
3357
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; </div>
3358
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// Keep the annotation for all other functions</span></div>
3359
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; newAnnotations.push_back(structAn);</div>
3360
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
3361
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; </div>
3362
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
3363
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
3364
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; </div>
3365
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
3366
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
3367
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; </div>
3368
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="comment">// Check if a global variable with the name llvm.global.annotations already exists</span></div>
3369
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* existingGlobal = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
3370
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (existingGlobal)</div>
3371
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="comment">// Rename the existing llvm.global.annotations to llvm.global.annotations_old</span></div>
3372
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; existingGlobal-&gt;setName(<span class="stringliteral">&quot;llvm.global.annotations_old&quot;</span>);</div>
3373
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; </div>
3374
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">// Create a new global variable with the updated annotations</span></div>
3375
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* newGlobal = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>(*module, newCA-&gt;getType(), glob-&gt;isConstant(),</div>
3376
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; glob-&gt;getLinkage(), newCA, <span class="stringliteral">&quot;llvm.global.annotations&quot;</span>, glob, glob-&gt;getThreadLocalMode());</div>
3377
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; </div>
3378
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">// Copy other properties from the old global variable to the new one</span></div>
3379
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; newGlobal-&gt;setSection(glob-&gt;getSection());</div>
3380
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; newGlobal-&gt;setAlignment(llvm::MaybeAlign(glob-&gt;getAlignment()));</div>
3381
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; </div>
3382
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">// Remove the old global variable</span></div>
3383
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; glob-&gt;eraseFromParent();</div>
3384
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;}</div>
3448
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00571">571</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3449
+ <div class="fragment"><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;{</div>
3450
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
3451
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No functions to remove annotations in extapi.bc module</span></div>
3452
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; </div>
3453
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* module = removedFuncList[0]-&gt;getParent();</div>
3454
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</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>
3455
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">if</span> (glob == <span class="keyword">nullptr</span> || !glob-&gt;hasInitializer())</div>
3456
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">return</span>;</div>
3457
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; </div>
3458
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>* ca = SVFUtil::dyn_cast&lt;ConstantArray&gt;(glob-&gt;getInitializer());</div>
3459
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (ca == <span class="keyword">nullptr</span>)</div>
3460
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span>;</div>
3461
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; </div>
3462
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; std::vector&lt;Constant*&gt; newAnnotations;</div>
3463
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; ca-&gt;getNumOperands(); ++i)</div>
3464
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div>
3465
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>* structAn = SVFUtil::dyn_cast&lt;ConstantStruct&gt;(ca-&gt;getOperand(i));</div>
3466
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">if</span> (structAn == <span class="keyword">nullptr</span>)</div>
3467
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">continue</span>;</div>
3468
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; </div>
3469
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* expr = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(structAn-&gt;getOperand(0));</div>
3470
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">if</span> (expr == <span class="keyword">nullptr</span> || expr-&gt;getOpcode() != Instruction::BitCast)</div>
3471
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div>
3472
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// Keep the annotation if it&#39;s not created using BitCast</span></div>
3473
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; newAnnotations.push_back(structAn);</div>
3474
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">continue</span>;</div>
3475
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div>
3476
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
3477
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* annotatedFunc = SVFUtil::dyn_cast&lt;Function&gt;(expr-&gt;getOperand(0));</div>
3478
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (annotatedFunc == <span class="keyword">nullptr</span> || std::find(removedFuncList.begin(), removedFuncList.end(), annotatedFunc) != removedFuncList.end())</div>
3479
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">continue</span>;</div>
3480
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; </div>
3481
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="comment">// Keep the annotation for all other functions</span></div>
3482
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; newAnnotations.push_back(structAn);</div>
3483
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; }</div>
3484
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; </div>
3485
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">if</span> (newAnnotations.size() == ca-&gt;getNumOperands())</div>
3486
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// No annotations to remove</span></div>
3487
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; </div>
3488
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* annotationsType = ArrayType::get(ca-&gt;getType()-&gt;getElementType(), newAnnotations.size());</div>
3489
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* newCA = ConstantArray::get(annotationsType, newAnnotations);</div>
3490
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; </div>
3491
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// Check if a global variable with the name llvm.global.annotations already exists</span></div>
3492
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* existingGlobal = module-&gt;getGlobalVariable(<span class="stringliteral">&quot;llvm.global.annotations&quot;</span>);</div>
3493
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">if</span> (existingGlobal)</div>
3494
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">// Rename the existing llvm.global.annotations to llvm.global.annotations_old</span></div>
3495
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; existingGlobal-&gt;setName(<span class="stringliteral">&quot;llvm.global.annotations_old&quot;</span>);</div>
3496
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; </div>
3497
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">// Create a new global variable with the updated annotations</span></div>
3498
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* newGlobal = <span class="keyword">new</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>(*module, newCA-&gt;getType(), glob-&gt;isConstant(),</div>
3499
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; glob-&gt;getLinkage(), newCA, <span class="stringliteral">&quot;llvm.global.annotations&quot;</span>, glob, glob-&gt;getThreadLocalMode());</div>
3500
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
3501
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="comment">// Copy other properties from the old global variable to the new one</span></div>
3502
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; newGlobal-&gt;setSection(glob-&gt;getSection());</div>
3503
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; newGlobal-&gt;setAlignment(llvm::MaybeAlign(glob-&gt;getAlignment()));</div>
3504
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; </div>
3505
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="comment">// Remove the old global variable</span></div>
3506
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; glob-&gt;eraseFromParent();</div>
3507
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;}</div>
3385
3508
  </div><!-- fragment -->
3386
3509
  </div>
3387
3510
  </div>
@@ -3406,45 +3529,45 @@ template&lt;typename T &gt; </div>
3406
3529
  <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>
3407
3530
  <p>Check whether a function is called by other functions</p>
3408
3531
 
3409
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00615">615</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3410
- <div class="fragment"><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;{</div>
3411
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
3412
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">return</span>;</div>
3413
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; </div>
3414
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = removedFuncList[0]-&gt;getParent();</div>
3415
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != ExtAPI::getExtAPI()-&gt;getExtBcPath())</div>
3416
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">return</span>;</div>
3417
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
3418
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
3419
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; </div>
3420
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
3421
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</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>
3422
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {</div>
3423
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</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>
3424
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</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>
3425
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div>
3426
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
3427
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
3428
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3429
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div>
3430
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3431
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; };</div>
3432
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; </div>
3433
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
3434
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; {</div>
3435
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
3436
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
3437
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; funcsToKeep.push_back(func);</div>
3438
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">else</span></div>
3439
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
3440
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; func-&gt;eraseFromParent();</div>
3441
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div>
3442
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="comment">// Delete first kind functions</span></div>
3443
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
3444
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; func-&gt;eraseFromParent();</div>
3445
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// Delete unused global variables</span></div>
3446
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
3447
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;}</div>
3532
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00682">682</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3533
+ <div class="fragment"><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;{</div>
3534
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">if</span> (removedFuncList.empty())</div>
3535
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">return</span>;</div>
3536
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; </div>
3537
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>* mod = removedFuncList[0]-&gt;getParent();</div>
3538
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span> (mod-&gt;getName().str() != ExtAPI::getExtAPI()-&gt;getExtBcPath())</div>
3539
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span>;</div>
3540
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; </div>
3541
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">LLVMUtil::removeFunAnnotations</a>(removedFuncList);</div>
3542
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; </div>
3543
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; std::vector&lt;Function*&gt; funcsToKeep;</div>
3544
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</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>
3545
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; {</div>
3546
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</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>
3547
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</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>
3548
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div>
3549
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">llvm::User</a>* user = use.getUser();</div>
3550
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">if</span> (llvm::isa&lt;llvm::CallBase&gt;(user))</div>
3551
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3552
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div>
3553
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3554
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; };</div>
3555
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; </div>
3556
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : removedFuncList)</div>
3557
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div>
3558
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (isCalledFunction(func))</div>
3559
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// Record first kind function(which does not contain any invocation statements)</span></div>
3560
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; funcsToKeep.push_back(func);</div>
3561
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">else</span></div>
3562
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="comment">// Delete second kind function(which contains invocation statements)</span></div>
3563
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; func-&gt;eraseFromParent();</div>
3564
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
3565
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="comment">// Delete first kind functions</span></div>
3566
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func : funcsToKeep)</div>
3567
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; func-&gt;eraseFromParent();</div>
3568
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="comment">// Delete unused global variables</span></div>
3569
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">removeUnusedGlobalVariables</a>(mod);</div>
3570
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;}</div>
3448
3571
  </div><!-- fragment -->
3449
3572
  </div>
3450
3573
  </div>
@@ -3464,19 +3587,19 @@ template&lt;typename T &gt; </div>
3464
3587
  </table>
3465
3588
  </div><div class="memdoc">
3466
3589
 
3467
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00600">600</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3468
- <div class="fragment"><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;{</div>
3469
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; assert(module &amp;&amp; <span class="stringliteral">&quot;Null module pointer!&quot;</span>);</div>
3470
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
3471
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : module-&gt;globals())</div>
3472
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
3473
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="comment">// Record unused global variables</span></div>
3474
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; unusedGlobals.push_back(&amp;global);</div>
3475
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; </div>
3476
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// Delete unused global variables</span></div>
3477
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
3478
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; global-&gt;eraseFromParent();</div>
3479
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;}</div>
3590
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00667">667</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3591
+ <div class="fragment"><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;{</div>
3592
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; assert(module &amp;&amp; <span class="stringliteral">&quot;Null module pointer!&quot;</span>);</div>
3593
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; std::vector&lt;GlobalVariable*&gt; unusedGlobals;</div>
3594
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>&amp; global : module-&gt;globals())</div>
3595
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">isUnusedGlobalVariable</a>(global))</div>
3596
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="comment">// Record unused global variables</span></div>
3597
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; unusedGlobals.push_back(&amp;global);</div>
3598
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; </div>
3599
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="comment">// Delete unused global variables</span></div>
3600
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* global : unusedGlobals)</div>
3601
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; global-&gt;eraseFromParent();</div>
3602
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;}</div>
3480
3603
  </div><!-- fragment -->
3481
3604
  </div>
3482
3605
  </div>
@@ -3499,28 +3622,28 @@ template&lt;typename T &gt; </div>
3499
3622
  <p>Strip off the all casts. </p>
3500
3623
  <p>Strip all casts </p>
3501
3624
 
3502
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00263">263</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3503
- <div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;{</div>
3504
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
3505
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div>
3506
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *ci = SVFUtil::dyn_cast&lt;CastInst&gt;(val))</div>
3507
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div>
3508
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; val = ci-&gt;getOperand(0);</div>
3509
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
3510
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3511
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
3512
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span>(ce-&gt;isCast())</div>
3513
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; val = ce-&gt;getOperand(0);</div>
3514
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">else</span></div>
3515
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> val;</div>
3516
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div>
3517
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">else</span></div>
3518
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div>
3519
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> val;</div>
3520
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
3521
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div>
3522
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3523
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;}</div>
3625
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00328">328</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3626
+ <div class="fragment"><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;{</div>
3627
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
3628
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div>
3629
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *ci = SVFUtil::dyn_cast&lt;CastInst&gt;(val))</div>
3630
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
3631
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; val = ci-&gt;getOperand(0);</div>
3632
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
3633
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(val))</div>
3634
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
3635
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span>(ce-&gt;isCast())</div>
3636
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; val = ce-&gt;getOperand(0);</div>
3637
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div>
3638
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> val;</div>
3639
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div>
3640
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">else</span></div>
3641
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div>
3642
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> val;</div>
3643
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div>
3644
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
3645
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
3646
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;}</div>
3524
3647
  </div><!-- fragment -->
3525
3648
  </div>
3526
3649
  </div>
@@ -3581,25 +3704,26 @@ template&lt;typename T &gt; </div>
3581
3704
  </table>
3582
3705
  </div><div class="memdoc">
3583
3706
 
3584
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00387">387</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3585
- <div class="fragment"><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;{</div>
3586
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">llvm::Type</a>* llvm_rhs = LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMType(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
3587
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">llvm::PointerType</a>* llvm_rhs_ptr = SVFUtil::dyn_cast&lt;PointerType&gt;(llvm_rhs);</div>
3588
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; assert(llvm_rhs_ptr &amp;&amp; <span class="stringliteral">&quot;not a pointer type?&quot;</span>);</div>
3589
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ptrElementType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(llvm_rhs_ptr);</div>
3590
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> llvm_rhs_size = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">LLVMUtil::getTypeSizeInBytes</a>(ptrElementType);</div>
3591
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> llvm_elem_size = -1;</div>
3592
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (ptrElementType-&gt;isArrayTy() &amp;&amp; llvm_rhs_size &gt; 0)</div>
3593
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; {</div>
3594
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordtype">size_t</span> array_len = ptrElementType-&gt;getArrayNumElements();</div>
3595
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; llvm_elem_size = llvm_rhs_size / array_len;</div>
3596
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div>
3597
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">else</span></div>
3598
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div>
3599
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; llvm_elem_size =llvm_rhs_size;</div>
3600
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
3601
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> llvm_elem_size;</div>
3602
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;}</div>
3707
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8h_source.html#l00392">392</a> of file <a class="el" href="LLVMUtil_8h_source.html">LLVMUtil.h</a>.</p>
3708
+ <div class="fragment"><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;{</div>
3709
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">llvm::Type</a>* llvm_rhs = LLVMModuleSet::getLLVMModuleSet()-&gt;getLLVMType(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
3710
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">llvm::PointerType</a>* llvm_rhs_ptr = SVFUtil::dyn_cast&lt;PointerType&gt;(llvm_rhs);</div>
3711
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; assert(llvm_rhs_ptr &amp;&amp; <span class="stringliteral">&quot;not a pointer type?&quot;</span>);</div>
3712
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">// TODO: getPtrElementType need type inference</span></div>
3713
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ptrElementType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(llvm_rhs_ptr);</div>
3714
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> llvm_rhs_size = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">LLVMUtil::getTypeSizeInBytes</a>(ptrElementType);</div>
3715
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> llvm_elem_size = -1;</div>
3716
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (ptrElementType-&gt;isArrayTy() &amp;&amp; llvm_rhs_size &gt; 0)</div>
3717
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div>
3718
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordtype">size_t</span> array_len = ptrElementType-&gt;getArrayNumElements();</div>
3719
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; llvm_elem_size = llvm_rhs_size / array_len;</div>
3720
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
3721
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">else</span></div>
3722
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div>
3723
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; llvm_elem_size =llvm_rhs_size;</div>
3724
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
3725
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> llvm_elem_size;</div>
3726
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div>
3603
3727
  </div><!-- fragment -->
3604
3728
  </div>
3605
3729
  </div>
@@ -3619,18 +3743,18 @@ template&lt;typename T &gt; </div>
3619
3743
  </table>
3620
3744
  </div><div class="memdoc">
3621
3745
 
3622
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01153">1153</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3623
- <div class="fragment"><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;{</div>
3624
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
3625
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs-&gt;getCaller();</div>
3626
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
3627
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; {</div>
3628
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func-&gt;getName().str());</div>
3629
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
3630
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3631
- <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; }</div>
3632
- <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3633
- <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;}</div>
3746
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l01227">1227</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3747
+ <div class="fragment"><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;{</div>
3748
+ <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
3749
+ <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs-&gt;getCaller();</div>
3750
+ <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
3751
+ <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; {</div>
3752
+ <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func-&gt;getName().str());</div>
3753
+ <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
3754
+ <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3755
+ <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; }</div>
3756
+ <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3757
+ <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;}</div>
3634
3758
  </div><!-- fragment -->
3635
3759
  </div>
3636
3760
  </div>
@@ -3650,13 +3774,13 @@ template&lt;typename T &gt; </div>
3650
3774
  </table>
3651
3775
  </div><div class="memdoc">
3652
3776
 
3653
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00244">244</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3654
- <div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div>
3655
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
3656
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div>
3657
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; fun-&gt;viewCFG();</div>
3658
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
3659
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div>
3777
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00309">309</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3778
+ <div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;{</div>
3779
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
3780
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div>
3781
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; fun-&gt;viewCFG();</div>
3782
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
3783
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;}</div>
3660
3784
  </div><!-- fragment -->
3661
3785
  </div>
3662
3786
  </div>
@@ -3676,30 +3800,32 @@ template&lt;typename T &gt; </div>
3676
3800
  </table>
3677
3801
  </div><div class="memdoc">
3678
3802
 
3679
- <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00252">252</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3680
- <div class="fragment"><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;{</div>
3681
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
3682
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div>
3683
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; fun-&gt;viewCFGOnly();</div>
3684
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
3685
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div>
3803
+ <p class="definition">Definition at line <a class="el" href="LLVMUtil_8cpp_source.html#l00317">317</a> of file <a class="el" href="LLVMUtil_8cpp_source.html">LLVMUtil.cpp</a>.</p>
3804
+ <div class="fragment"><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;{</div>
3805
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
3806
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
3807
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; fun-&gt;viewCFGOnly();</div>
3808
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
3809
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div>
3686
3810
  </div><!-- fragment -->
3687
3811
  </div>
3688
3812
  </div>
3689
3813
  </div><!-- contents -->
3690
3814
  <div class="ttc" id="anamespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
3691
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00686">LLVMUtil.cpp:686</a></div></div>
3815
+ <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#l00753">LLVMUtil.cpp:753</a></div></div>
3816
+ <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#l01359">LLVMUtil.cpp:1359</a></div></div>
3692
3817
  <div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
3693
3818
  <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#l00051">LLVMUtil.h:51</a></div></div>
3694
3819
  <div class="ttc" id="aCommandLine_8h_html_a2429346d37bd4c40889bd7c6d319d9da"><div class="ttname"><a href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00018">CommandLine.h:18</a></div></div>
3695
3820
  <div class="ttc" id="anamespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00146">BasicTypes.h:146</a></div></div>
3696
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b5fdf455c5dd40c0baa60185e5e41c6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const StructType *sty, u32_t field_index)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00672">LLVMUtil.cpp:672</a></div></div>
3821
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b5fdf455c5dd40c0baa60185e5e41c6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const StructType *sty, u32_t field_index)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00739">LLVMUtil.cpp:739</a></div></div>
3697
3822
  <div class="ttc" id="anamespaceSVF_html_a773900ea3c75022657aac1abf59fa51b"><div class="ttname"><a href="namespaceSVF.html#a773900ea3c75022657aac1abf59fa51b">SVF::MetadataAsValue</a></div><div class="ttdeci">llvm::MetadataAsValue MetadataAsValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
3698
3823
  <div class="ttc" id="anamespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
3699
3824
  <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>
3700
3825
  <div class="ttc" id="aLLVMUtil_8cpp_html_a5f8da60b0fcc28445f508f4e42513a82"><div class="ttname"><a href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a></div><div class="ttdeci">const std::string clsName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00043">LLVMUtil.cpp:43</a></div></div>
3701
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00909">LLVMUtil.cpp:909</a></div></div>
3826
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00976">LLVMUtil.cpp:976</a></div></div>
3702
3827
  <div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
3828
+ <div class="ttc" id="anamespaceSVF_html_a893c345ff98bb2808ae905cf9f3671c5"><div class="ttname"><a href="namespaceSVF.html#a893c345ff98bb2808ae905cf9f3671c5">SVF::GEPOperator</a></div><div class="ttdeci">llvm::GEPOperator GEPOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00180">BasicTypes.h:180</a></div></div>
3703
3829
  <div class="ttc" id="anamespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
3704
3830
  <div class="ttc" id="anamespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
3705
3831
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html">SVF::cppUtil::DemangledName</a></div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00046">CppUtil.h:46</a></div></div>
@@ -3707,17 +3833,17 @@ template&lt;typename T &gt; </div>
3707
3833
  <div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
3708
3834
  <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#l00106">BasicTypes.h:106</a></div></div>
3709
3835
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00232">LLVMUtil.cpp:232</a></div></div>
3710
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a200539f965bff5627abac41920498ee8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">SVF::LLVMUtil::getFirstUseViaCastInst</a></div><div class="ttdeci">const Value * getFirstUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
3836
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a200539f965bff5627abac41920498ee8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">SVF::LLVMUtil::getFirstUseViaCastInst</a></div><div class="ttdeci">const Value * getFirstUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00414">LLVMUtil.cpp:414</a></div></div>
3711
3837
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00154">LLVMUtil.cpp:154</a></div></div>
3712
- <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#l00860">LLVMUtil.cpp:860</a></div></div>
3838
+ <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#l00927">LLVMUtil.cpp:927</a></div></div>
3713
3839
  <div class="ttc" id="anamespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
3714
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae2b444bb3e7a27d77386f588a78af8e2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae2b444bb3e7a27d77386f588a78af8e2">SVF::LLVMUtil::removeUnusedGlobalVariables</a></div><div class="ttdeci">void removeUnusedGlobalVariables(Module *module)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00600">LLVMUtil.cpp:600</a></div></div>
3840
+ <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#l00667">LLVMUtil.cpp:667</a></div></div>
3715
3841
  <div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
3716
3842
  <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>
3717
3843
  <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#l00115">BasicTypes.h:115</a></div></div>
3718
3844
  <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>
3719
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47d2af43ff12d9e1014fa19256619466"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47d2af43ff12d9e1014fa19256619466">SVF::LLVMUtil::getCalledFunctions</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; getCalledFunctions(const Function *F)</div><div class="ttdoc">Get all called funcions in a parent function.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00566">LLVMUtil.cpp:566</a></div></div>
3720
- <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#l00251">BasicTypes.h:251</a></div></div>
3845
+ <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#l00633">LLVMUtil.cpp:633</a></div></div>
3846
+ <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#l00252">BasicTypes.h:252</a></div></div>
3721
3847
  <div class="ttc" id="anamespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
3722
3848
  <div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
3723
3849
  <div class="ttc" id="anamespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00121">BasicTypes.h:121</a></div></div>
@@ -3725,7 +3851,7 @@ template&lt;typename T &gt; </div>
3725
3851
  <div class="ttc" id="anamespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
3726
3852
  <div class="ttc" id="anamespaceSVF_html_a956458a8554bf734db1194f320fd4b4c"><div class="ttname"><a href="namespaceSVF.html#a956458a8554bf734db1194f320fd4b4c">SVF::BlockAddress</a></div><div class="ttdeci">llvm::BlockAddress BlockAddress</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
3727
3853
  <div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
3728
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01008">LLVMUtil.cpp:1008</a></div></div>
3854
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01082">LLVMUtil.cpp:1082</a></div></div>
3729
3855
  <div class="ttc" id="anamespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
3730
3856
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00522">SVFValue.h:522</a></div></div>
3731
3857
  <div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
@@ -3737,19 +3863,20 @@ template&lt;typename T &gt; </div>
3737
3863
  <div class="ttc" id="anamespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
3738
3864
  <div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a745a2addadc136075d45c7fb8437af3e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00153">CppUtil.cpp:153</a></div></div>
3739
3865
  <div class="ttc" id="acJSON_8cpp_html_a930920b2bc42824a5c03be681830f4b2"><div class="ttname"><a href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a></div><div class="ttdeci">return true</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02295">cJSON.cpp:2295</a></div></div>
3740
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00414">LLVMUtil.h:414</a></div></div>
3866
+ <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#l00420">LLVMUtil.h:420</a></div></div>
3741
3867
  <div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00092">BasicTypes.h:92</a></div></div>
3742
3868
  <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#l00104">BasicTypes.h:104</a></div></div>
3743
3869
  <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>
3744
- <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#l00419">LLVMUtil.cpp:419</a></div></div>
3870
+ <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#l00486">LLVMUtil.cpp:486</a></div></div>
3745
3871
  <div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a1cf2e4671b16b477cc779c72f2419234"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">SVF::cppUtil::getBeforeBrackets</a></div><div class="ttdeci">std::string getBeforeBrackets(const std::string &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00085">CppUtil.cpp:85</a></div></div>
3872
+ <div class="ttc" id="anamespaceSVF_html_a3bacb4f95c73e6d794901d01c6b65a83"><div class="ttname"><a href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">SVF::AllocaInst</a></div><div class="ttdeci">llvm::AllocaInst AllocaInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
3746
3873
  <div class="ttc" id="aLLVMUtil_8cpp_html_a211c0223a37893d84fb5e2fd2f9fc76b"><div class="ttname"><a href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a></div><div class="ttdeci">const std::string vtblLabelBeforeDemangle</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00038">LLVMUtil.cpp:38</a></div></div>
3747
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a523a8c3f9bfaea178733822ac598d552"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(std::vector&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00504">LLVMUtil.cpp:504</a></div></div>
3874
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a523a8c3f9bfaea178733822ac598d552"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a523a8c3f9bfaea178733822ac598d552">SVF::LLVMUtil::removeFunAnnotations</a></div><div class="ttdeci">void removeFunAnnotations(std::vector&lt; Function * &gt; &amp;removedFuncList)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00571">LLVMUtil.cpp:571</a></div></div>
3748
3875
  <div class="ttc" id="anamespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
3749
3876
  <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>
3750
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01098">LLVMUtil.cpp:1098</a></div></div>
3751
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00332">LLVMUtil.h:332</a></div></div>
3752
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00244">LLVMUtil.h:244</a></div></div>
3877
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01172">LLVMUtil.cpp:1172</a></div></div>
3878
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00337">LLVMUtil.h:337</a></div></div>
3879
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00249">LLVMUtil.h:249</a></div></div>
3753
3880
  <div class="ttc" id="aLLVMUtil_8cpp_html_a61c158146c07e77234eb4a2f9b940821"><div class="ttname"><a href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a></div><div class="ttdeci">const std::string structName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00044">LLVMUtil.cpp:44</a></div></div>
3754
3881
  <div class="ttc" id="anamespaceSVF_html_a962e9a9044a46fc4bd2367384f6e0827"><div class="ttname"><a href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">SVF::CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
3755
3882
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0095d23a9c9d5d62ec4a23c56824b5f0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">SVF::LLVMUtil::getLLVMCallSite</a></div><div class="ttdeci">const CallBase * getLLVMCallSite(const Value *value)</div><div class="ttdoc">Return LLVM callsite given a value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00068">LLVMUtil.h:68</a></div></div>
@@ -3767,34 +3894,35 @@ template&lt;typename T &gt; </div>
3767
3894
  <div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
3768
3895
  <div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector&lt; const SVFType * &gt; &amp; getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00192">SVFType.h:192</a></div></div>
3769
3896
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abb4b5ed04ec70a2e7fca8198132370cf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abb4b5ed04ec70a2e7fca8198132370cf">SVF::LLVMUtil::basicBlockHasRetInst</a></div><div class="ttdeci">bool basicBlockHasRetInst(const BasicBlock *bb)</div><div class="ttdoc">Return true if the function has a return instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00104">LLVMUtil.cpp:104</a></div></div>
3770
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01190">LLVMUtil.cpp:1190</a></div></div>
3771
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa81614cdb6a2a912638d5dc980480af7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">SVF::LLVMUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00155">LLVMUtil.h:155</a></div></div>
3897
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01258">LLVMUtil.cpp:1258</a></div></div>
3898
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa81614cdb6a2a912638d5dc980480af7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa81614cdb6a2a912638d5dc980480af7">SVF::LLVMUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00160">LLVMUtil.h:160</a></div></div>
3899
+ <div class="ttc" id="anamespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00145">BasicTypes.h:145</a></div></div>
3772
3900
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00048">CppUtil.h:48</a></div></div>
3773
- <div class="ttc" id="anamespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00273">BasicTypes.h:273</a></div></div>
3774
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_acee7c2fb08e111eda4d91ce5479de05e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#acee7c2fb08e111eda4d91ce5479de05e">SVF::LLVMUtil::isUnusedGlobalVariable</a></div><div class="ttdeci">bool isUnusedGlobalVariable(const GlobalVariable &amp;global)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00585">LLVMUtil.cpp:585</a></div></div>
3901
+ <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#l00274">BasicTypes.h:274</a></div></div>
3902
+ <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#l00652">LLVMUtil.cpp:652</a></div></div>
3775
3903
  <div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00049">CppUtil.h:49</a></div></div>
3776
3904
  <div class="ttc" id="anamespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00140">BasicTypes.h:140</a></div></div>
3777
3905
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3d34fcdfc98add848a34fd5259c11eb2"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3d34fcdfc98add848a34fd5259c11eb2">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_8h_source.html#l00057">LLVMUtil.h:57</a></div></div>
3778
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00790">LLVMUtil.cpp:790</a></div></div>
3906
+ <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#l00857">LLVMUtil.cpp:857</a></div></div>
3907
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a207fe02ded216fd0412fc894e13bee6e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01240">LLVMUtil.cpp:1240</a></div></div>
3779
3908
  <div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
3780
- <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#l00316">LLVMUtil.cpp:316</a></div></div>
3909
+ <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#l00381">LLVMUtil.cpp:381</a></div></div>
3781
3910
  <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>
3782
3911
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00202">LLVMUtil.cpp:202</a></div></div>
3783
3912
  <div class="ttc" id="anamespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata and debug information.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
3784
3913
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00046">LLVMUtil.h:46</a></div></div>
3785
3914
  <div class="ttc" id="anamespaceSVF_html_a28eec26ec8edaa5e96aecfeb01f6c0d4"><div class="ttname"><a href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">SVF::MDString</a></div><div class="ttdeci">llvm::MDString MDString</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
3786
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a17cce1a11e1bfc342a9e3e79fe35deef"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">SVF::LLVMUtil::isNoCallerFunction</a></div><div class="ttdeci">bool isNoCallerFunction(const Function *fun)</div><div class="ttdoc">Function does not have any possible caller in the call graph.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00195">LLVMUtil.h:195</a></div></div>
3787
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00287">LLVMUtil.cpp:287</a></div></div>
3915
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a17cce1a11e1bfc342a9e3e79fe35deef"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a17cce1a11e1bfc342a9e3e79fe35deef">SVF::LLVMUtil::isNoCallerFunction</a></div><div class="ttdeci">bool isNoCallerFunction(const Function *fun)</div><div class="ttdoc">Function does not have any possible caller in the call graph.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00200">LLVMUtil.h:200</a></div></div>
3916
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector&lt; const SVFInstruction * &gt; &amp;instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00352">LLVMUtil.cpp:352</a></div></div>
3788
3917
  <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00626">SVFValue.h:626</a></div></div>
3789
3918
  <div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00054">SVFType.h:54</a></div></div>
3790
3919
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00216">LLVMUtil.cpp:216</a></div></div>
3791
3920
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00119">LLVMUtil.h:119</a></div></div>
3792
3921
  <div class="ttc" id="anamespaceSVF_html_a7332f8059ea95472dcc231de884a5768"><div class="ttname"><a href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">SVF::ConstantData</a></div><div class="ttdeci">llvm::ConstantData ConstantData</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00114">BasicTypes.h:114</a></div></div>
3793
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01067">LLVMUtil.cpp:1067</a></div></div>
3922
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01141">LLVMUtil.cpp:1141</a></div></div>
3794
3923
  <div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
3795
3924
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
3796
3925
  <div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00143">BasicTypes.h:143</a></div></div>
3797
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01166">LLVMUtil.cpp:1166</a></div></div>
3798
3926
  <!-- start footer part -->
3799
3927
  <hr class="footer"/><address class="footer"><small>
3800
3928
  Generated by &#160;<a href="http://www.doxygen.org/index.html">