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
@@ -303,643 +303,652 @@ $(function() {
303
303
  <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; (void)getOrAddSVFTypeInfo(val-&gt;getType());</div>
304
304
  <div class="line"><a name="l00238"></a><span class="lineno"> 238</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;(val-&gt;getType()))</div>
305
305
  <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
306
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objtype = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
307
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; (void)getOrAddSVFTypeInfo(objtype);</div>
308
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div>
309
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">isGepConstantExpr</a>(val) || SVFUtil::isa&lt;GetElementPtrInst&gt;(val))</div>
310
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div>
311
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a></div>
312
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(SVFUtil::cast&lt;User&gt;(val)),</div>
313
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(SVFUtil::cast&lt;User&gt;(val));</div>
314
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; gi != ge; ++gi)</div>
315
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div>
316
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* gepTy = *gi;</div>
317
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; (void)getOrAddSVFTypeInfo(gepTy);</div>
318
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div>
319
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
320
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div>
321
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; </div>
322
- <div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5"> 259</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">SymbolTableBuilder::collectSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
323
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;{</div>
324
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
325
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">//TODO: filter the non-pointer type // if (!SVFUtil::isa&lt;PointerType&gt;(val-&gt;getType())) return;</span></div>
326
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
327
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div>
328
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()</div>
329
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; &lt;&lt; <span class="stringliteral">&quot;collect sym from ##&quot;</span></div>
330
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val)-&gt;toString()</div>
331
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
332
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="comment">//TODO handle constant expression value here??</span></div>
333
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; handleCE(val);</div>
334
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
335
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// create a value sym</span></div>
336
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; collectVal(val);</div>
337
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; </div>
338
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; collectSVFTypeInfo(val);</div>
339
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; collectSVFTypeInfo(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val));</div>
340
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; </div>
341
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// create an object If it is a heap, stack, global, function.</span></div>
342
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">isObject</a>(val))</div>
343
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div>
344
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; collectObj(val);</div>
345
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div>
346
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div>
347
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; </div>
348
- <div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70"> 288</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SymbolTableBuilder::collectVal</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
349
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;{</div>
350
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// collect and record special sym here</span></div>
351
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a847fb0c433b5d3611151636ca4bc5bc5">LLVMUtil::isNullPtrSym</a>(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abf4e75ba6236136399d45c85be2328fe">LLVMUtil::isBlackholeSym</a>(val))</div>
352
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
353
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span>;</div>
354
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div>
355
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; SymbolTableInfo::ValueToIDMapTy::iterator iter = symInfo-&gt;valSymMap.find(</div>
356
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val));</div>
357
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (iter == symInfo-&gt;valSymMap.end())</div>
358
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div>
359
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// create val sym and sym type</span></div>
360
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfVal = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val);</div>
361
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div>
362
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; symInfo-&gt;valSymMap.insert(std::make_pair(svfVal, <span class="keywordtype">id</span>));</div>
363
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div>
364
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a new value sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
365
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <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;(val))</div>
366
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; handleGlobalCE(globalVar);</div>
367
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
368
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; </div>
369
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
370
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; collectObj(val);</div>
371
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;}</div>
372
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
373
- <div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419"> 317</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">SymbolTableBuilder::collectObj</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
374
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;{</div>
375
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; val = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
376
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; SymbolTableInfo::ValueToIDMapTy::iterator iter = symInfo-&gt;objSymMap.find(</div>
377
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val));</div>
378
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (iter == symInfo-&gt;objSymMap.end())</div>
379
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
380
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfVal = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val);</div>
381
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">// if the object pointed by the pointer is a constant data (e.g., i32 0) or a global constant object (e.g. string)</span></div>
382
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// then we treat them as one ConstantObj</span></div>
383
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val) &amp;&amp; !symInfo-&gt;getModelConstants())</div>
384
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div>
385
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; symInfo-&gt;objSymMap.insert(std::make_pair(svfVal, symInfo-&gt;constantSymID()));</div>
386
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
387
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// otherwise, we will create an object for each abstract memory location</span></div>
388
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">else</span></div>
389
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
390
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">// create obj sym and sym type</span></div>
391
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">allocateObjectId</a>();</div>
392
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; symInfo-&gt;objSymMap.insert(std::make_pair(svfVal, <span class="keywordtype">id</span>));</div>
393
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div>
394
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a new obj sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
395
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; </div>
396
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// create a memory object</span></div>
397
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem =</div>
398
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(<span class="keywordtype">id</span>, createObjTypeInfo(val),</div>
399
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val));</div>
400
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; assert(symInfo-&gt;objMap.find(<span class="keywordtype">id</span>) == symInfo-&gt;objMap.end());</div>
401
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; symInfo-&gt;objMap[id] = mem;</div>
402
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div>
403
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
404
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;}</div>
405
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; </div>
406
- <div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f"> 353</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">SymbolTableBuilder::collectRet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* val)</div>
407
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;{</div>
408
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun =</div>
409
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(val);</div>
410
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; SymbolTableInfo::FunToIDMapTy::iterator iter =</div>
411
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; symInfo-&gt;returnSymMap.find(svffun);</div>
412
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span> (iter == symInfo-&gt;returnSymMap.end())</div>
413
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
414
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div>
415
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; symInfo-&gt;returnSymMap.insert(std::make_pair(svffun, <span class="keywordtype">id</span>));</div>
416
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a return sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
417
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div>
418
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;}</div>
419
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; </div>
420
- <div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e"> 370</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">SymbolTableBuilder::collectVararg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* val)</div>
421
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;{</div>
422
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun =</div>
423
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(val);</div>
424
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; SymbolTableInfo::FunToIDMapTy::iterator iter =</div>
425
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; symInfo-&gt;varargSymMap.find(svffun);</div>
426
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (iter == symInfo-&gt;varargSymMap.end())</div>
427
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div>
428
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div>
429
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; symInfo-&gt;varargSymMap.insert(std::make_pair(svffun, <span class="keywordtype">id</span>));</div>
430
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a vararg sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
431
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div>
432
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div>
433
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; </div>
434
- <div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50"> 387</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SymbolTableBuilder::handleCE</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
435
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;{</div>
436
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div>
437
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div>
438
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">isGepConstantExpr</a>(ref))</div>
439
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div>
440
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span></div>
441
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()</div>
442
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; -&gt;getSVFValue(ref)</div>
443
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; -&gt;toString()</div>
444
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
445
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; collectVal(ce);</div>
446
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; </div>
447
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="comment">// handle the recursive constant express case</span></div>
448
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div>
449
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; ce-&gt;getNumOperands(); ++i)</div>
450
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div>
451
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; collectVal(ce-&gt;getOperand(i));</div>
452
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; handleCE(ce-&gt;getOperand(i));</div>
453
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div>
454
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
455
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</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 = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">isCastConstantExpr</a>(ref))</div>
456
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div>
457
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span></div>
458
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()</div>
459
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; -&gt;getSVFValue(ref)</div>
460
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; -&gt;toString()</div>
461
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
462
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; collectVal(ce);</div>
463
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; collectVal(ce-&gt;getOperand(0));</div>
464
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// handle the recursive constant express case</span></div>
465
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div>
466
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; handleCE(ce-&gt;getOperand(0));</div>
467
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
468
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</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 = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">isSelectConstantExpr</a>(ref))</div>
469
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div>
470
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span></div>
471
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()</div>
472
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; -&gt;getSVFValue(ref)</div>
473
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; -&gt;toString()</div>
474
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
475
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; collectVal(ce);</div>
476
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; collectVal(ce-&gt;getOperand(0));</div>
477
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; collectVal(ce-&gt;getOperand(1));</div>
478
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; collectVal(ce-&gt;getOperand(2));</div>
479
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="comment">// handle the recursive constant express case</span></div>
480
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div>
481
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; handleCE(ce-&gt;getOperand(0));</div>
482
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; handleCE(ce-&gt;getOperand(1));</div>
483
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; handleCE(ce-&gt;getOperand(2));</div>
484
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div>
485
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div>
486
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</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>* int2Ptrce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(ref))</div>
487
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div>
488
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; collectVal(int2Ptrce);</div>
489
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div>
490
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</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>* ptr2Intce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">isPtr2IntConstantExpr</a>(ref))</div>
491
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div>
492
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; collectVal(ptr2Intce);</div>
493
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = ptr2Intce-&gt;getOperand(0);</div>
494
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; handleCE(opnd);</div>
495
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div>
496
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">isCmpConstantExpr</a>(ref))</div>
497
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div>
498
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; collectVal(ref);</div>
499
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
500
- <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_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">isBinaryConstantExpr</a>(ref))</div>
501
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
502
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; collectVal(ref);</div>
503
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
504
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">isUnaryConstantExpr</a>(ref))</div>
505
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div>
506
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="comment">// we don&#39;t handle unary constant expression like fneg(x) now</span></div>
507
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; collectVal(ref);</div>
508
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div>
509
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantAggregate&gt;(ref))</div>
510
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; {</div>
511
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">// we don&#39;t handle constant aggregate like constant vectors</span></div>
512
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; collectVal(ref);</div>
513
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div>
514
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></div>
515
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div>
516
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; assert(!SVFUtil::isa&lt;ConstantExpr&gt;(val) &amp;&amp;</div>
517
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="stringliteral">&quot;we don&#39;t handle all other constant expression for now!&quot;</span>);</div>
518
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; collectVal(ref);</div>
519
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; }</div>
520
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div>
521
- <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; </div>
523
- <div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779"> 479</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">SymbolTableBuilder::handleGlobalCE</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* G)</div>
524
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;{</div>
525
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; assert(G);</div>
526
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
527
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">//The type this global points to</span></div>
528
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T = G-&gt;getValueType();</div>
529
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordtype">bool</span> is_array = 0;</div>
530
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="comment">//An array is considered a single variable of its type.</span></div>
531
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* AT = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
532
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div>
533
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; T = AT-&gt;getElementType();</div>
534
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; is_array = <span class="keyword">true</span>;</div>
535
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
536
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; </div>
537
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(T))</div>
538
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div>
539
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="comment">//A struct may be used in constant GEP expr.</span></div>
540
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a>* user : G-&gt;users())</div>
541
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div>
542
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; handleCE(user);</div>
543
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div>
544
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div>
545
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (is_array)</div>
546
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div>
547
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a>* user : G-&gt;users())</div>
548
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div>
549
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; handleCE(user);</div>
550
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div>
551
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
552
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; </div>
553
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> (G-&gt;hasInitializer())</div>
554
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div>
555
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; handleGlobalInitializerCE(G-&gt;getInitializer());</div>
556
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
557
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div>
558
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; </div>
559
- <div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d"> 518</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SymbolTableBuilder::handleGlobalInitializerCE</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* C)</div>
560
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;{</div>
561
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; </div>
562
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div>
563
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
564
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* E = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(C))</div>
565
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div>
566
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; handleCE(E);</div>
567
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div>
568
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">else</span></div>
569
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div>
570
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; collectVal(C);</div>
571
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
572
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div>
573
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray&gt;(C))</div>
574
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
575
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div>
576
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; {</div>
577
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; handleGlobalInitializerCE(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)));</div>
578
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div>
579
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div>
580
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantStruct&gt;(C))</div>
581
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
582
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div>
583
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; {</div>
584
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; handleGlobalInitializerCE(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)));</div>
585
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div>
586
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
587
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* data = SVFUtil::dyn_cast&lt;ConstantData&gt;(C))</div>
588
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div>
589
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a18dd95e01a50aa82165c46a3801053c5">Options::ModelConsts</a>())</div>
590
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {</div>
591
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a>* seq =</div>
592
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(data))</div>
593
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div>
594
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; seq-&gt;getNumElements(); i++)</div>
595
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div>
596
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq-&gt;getElementAsConstant(i);</div>
597
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; handleGlobalInitializerCE(ct);</div>
598
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
599
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div>
600
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">else</span></div>
601
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div>
602
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; assert(</div>
603
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; (SVFUtil::isa&lt;ConstantAggregateZero, UndefValue&gt;(data)) &amp;&amp;</div>
604
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="stringliteral">&quot;Single value type data should have been handled!&quot;</span>);</div>
605
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div>
606
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div>
607
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div>
608
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">else</span></div>
609
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div>
610
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">//TODO:assert(SVFUtil::isa&lt;ConstantVector&gt;(C),&quot;what else do we have&quot;);</span></div>
611
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; }</div>
612
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;}</div>
613
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
614
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="comment">/*</span></div>
615
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="comment"> * Initial the memory object here</span></div>
616
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="comment"> */</span></div>
617
- <div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3"> 576</a></span>&#160;<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">SymbolTableBuilder::createObjTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
618
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;{</div>
619
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* refTy = <span class="keyword">nullptr</span>;</div>
620
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
621
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* I = SVFUtil::dyn_cast&lt;Instruction&gt;(val);</div>
306
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// TODO: getPtrElementType to be removed</span></div>
307
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objtype = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
308
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; (void)getOrAddSVFTypeInfo(objtype);</div>
309
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
310
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">isGepConstantExpr</a>(val) || SVFUtil::isa&lt;GetElementPtrInst&gt;(val))</div>
311
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div>
312
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a></div>
313
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(SVFUtil::cast&lt;User&gt;(val)),</div>
314
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(SVFUtil::cast&lt;User&gt;(val));</div>
315
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; gi != ge; ++gi)</div>
316
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
317
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* gepTy = *gi;</div>
318
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; (void)getOrAddSVFTypeInfo(gepTy);</div>
319
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
320
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
321
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div>
322
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
323
+ <div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5"> 260</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">SymbolTableBuilder::collectSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
324
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;{</div>
325
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
326
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">//TODO: filter the non-pointer type // if (!SVFUtil::isa&lt;PointerType&gt;(val-&gt;getType())) return;</span></div>
327
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; </div>
328
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div>
329
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()</div>
330
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; &lt;&lt; <span class="stringliteral">&quot;collect sym from ##&quot;</span></div>
331
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val)-&gt;toString()</div>
332
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div>
333
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">//TODO handle constant expression value here??</span></div>
334
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; handleCE(val);</div>
335
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
336
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// create a value sym</span></div>
337
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; collectVal(val);</div>
338
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; </div>
339
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; collectSVFTypeInfo(val);</div>
340
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; collectSVFTypeInfo(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val));</div>
341
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
342
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">// create an object If it is a heap, stack, global, function.</span></div>
343
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">isObject</a>(val))</div>
344
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
345
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; collectObj(val);</div>
346
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div>
347
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;}</div>
348
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; </div>
349
+ <div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70"> 289</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SymbolTableBuilder::collectVal</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
350
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;{</div>
351
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">// collect and record special sym here</span></div>
352
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a847fb0c433b5d3611151636ca4bc5bc5">LLVMUtil::isNullPtrSym</a>(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abf4e75ba6236136399d45c85be2328fe">LLVMUtil::isBlackholeSym</a>(val))</div>
353
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
354
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span>;</div>
355
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
356
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; SymbolTableInfo::ValueToIDMapTy::iterator iter = symInfo-&gt;valSymMap.find(</div>
357
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val));</div>
358
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span> (iter == symInfo-&gt;valSymMap.end())</div>
359
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div>
360
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="comment">// create val sym and sym type</span></div>
361
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfVal = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val);</div>
362
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div>
363
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; symInfo-&gt;valSymMap.insert(std::make_pair(svfVal, <span class="keywordtype">id</span>));</div>
364
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div>
365
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a new value sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
366
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <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;(val))</div>
367
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; handleGlobalCE(globalVar);</div>
368
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div>
369
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; </div>
370
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
371
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; collectObj(val);</div>
372
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div>
373
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; </div>
374
+ <div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419"> 318</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">SymbolTableBuilder::collectObj</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
375
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;{</div>
376
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; val = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">LLVMUtil::getGlobalRep</a>(val);</div>
377
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; SymbolTableInfo::ValueToIDMapTy::iterator iter = symInfo-&gt;objSymMap.find(</div>
378
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val));</div>
379
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (iter == symInfo-&gt;objSymMap.end())</div>
380
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div>
381
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfVal = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">getSVFValue</a>(val);</div>
382
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// if the object pointed by the pointer is a constant data (e.g., i32 0) or a global constant object (e.g. string)</span></div>
383
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// then we treat them as one ConstantObj</span></div>
384
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val) &amp;&amp; !symInfo-&gt;getModelConstants())</div>
385
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
386
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; symInfo-&gt;objSymMap.insert(std::make_pair(svfVal, symInfo-&gt;constantSymID()));</div>
387
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
388
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// otherwise, we will create an object for each abstract memory location</span></div>
389
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">else</span></div>
390
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div>
391
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// create obj sym and sym type</span></div>
392
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">allocateObjectId</a>();</div>
393
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; symInfo-&gt;objSymMap.insert(std::make_pair(svfVal, <span class="keywordtype">id</span>));</div>
394
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div>
395
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a new obj sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
396
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; </div>
397
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">// create a memory object</span></div>
398
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem =</div>
399
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(<span class="keywordtype">id</span>, createObjTypeInfo(val),</div>
400
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val));</div>
401
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; assert(symInfo-&gt;objMap.find(<span class="keywordtype">id</span>) == symInfo-&gt;objMap.end());</div>
402
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; symInfo-&gt;objMap[id] = mem;</div>
403
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
404
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
405
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;}</div>
406
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; </div>
407
+ <div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f"> 354</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">SymbolTableBuilder::collectRet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* val)</div>
408
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;{</div>
409
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun =</div>
410
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(val);</div>
411
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; SymbolTableInfo::FunToIDMapTy::iterator iter =</div>
412
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; symInfo-&gt;returnSymMap.find(svffun);</div>
413
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> (iter == symInfo-&gt;returnSymMap.end())</div>
414
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div>
415
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div>
416
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; symInfo-&gt;returnSymMap.insert(std::make_pair(svffun, <span class="keywordtype">id</span>));</div>
417
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a return sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
418
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
419
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;}</div>
420
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; </div>
421
+ <div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e"> 371</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">SymbolTableBuilder::collectVararg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* val)</div>
422
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;{</div>
423
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun =</div>
424
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(val);</div>
425
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; SymbolTableInfo::FunToIDMapTy::iterator iter =</div>
426
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; symInfo-&gt;varargSymMap.find(svffun);</div>
427
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span> (iter == symInfo-&gt;varargSymMap.end())</div>
428
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div>
429
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div>
430
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; symInfo-&gt;varargSymMap.insert(std::make_pair(svffun, <span class="keywordtype">id</span>));</div>
431
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a vararg sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
432
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div>
433
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div>
434
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; </div>
435
+ <div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50"> 388</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SymbolTableBuilder::handleCE</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
436
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;{</div>
437
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div>
438
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div>
439
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">isGepConstantExpr</a>(ref))</div>
440
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div>
441
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span></div>
442
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()</div>
443
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; -&gt;getSVFValue(ref)</div>
444
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; -&gt;toString()</div>
445
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
446
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; collectVal(ce);</div>
447
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; </div>
448
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">// handle the recursive constant express case</span></div>
449
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div>
450
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; ce-&gt;getNumOperands(); ++i)</div>
451
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div>
452
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; collectVal(ce-&gt;getOperand(i));</div>
453
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; handleCE(ce-&gt;getOperand(i));</div>
454
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
455
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
456
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</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 = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">isCastConstantExpr</a>(ref))</div>
457
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div>
458
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span></div>
459
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()</div>
460
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; -&gt;getSVFValue(ref)</div>
461
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; -&gt;toString()</div>
462
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
463
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; collectVal(ce);</div>
464
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; collectVal(ce-&gt;getOperand(0));</div>
465
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// handle the recursive constant express case</span></div>
466
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div>
467
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; handleCE(ce-&gt;getOperand(0));</div>
468
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div>
469
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</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 = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">isSelectConstantExpr</a>(ref))</div>
470
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
471
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span></div>
472
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; &lt;&lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()</div>
473
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; -&gt;getSVFValue(ref)</div>
474
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; -&gt;toString()</div>
475
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
476
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; collectVal(ce);</div>
477
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; collectVal(ce-&gt;getOperand(0));</div>
478
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; collectVal(ce-&gt;getOperand(1));</div>
479
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; collectVal(ce-&gt;getOperand(2));</div>
480
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="comment">// handle the recursive constant express case</span></div>
481
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div>
482
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; handleCE(ce-&gt;getOperand(0));</div>
483
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; handleCE(ce-&gt;getOperand(1));</div>
484
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; handleCE(ce-&gt;getOperand(2));</div>
485
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
486
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div>
487
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</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>* int2Ptrce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(ref))</div>
488
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
489
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; collectVal(int2Ptrce);</div>
490
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div>
491
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</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>* ptr2Intce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">isPtr2IntConstantExpr</a>(ref))</div>
492
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div>
493
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; collectVal(ptr2Intce);</div>
494
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* opnd = ptr2Intce-&gt;getOperand(0);</div>
495
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; handleCE(opnd);</div>
496
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div>
497
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">isCmpConstantExpr</a>(ref))</div>
498
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div>
499
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; collectVal(ref);</div>
500
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div>
501
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">isBinaryConstantExpr</a>(ref))</div>
502
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; {</div>
503
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; collectVal(ref);</div>
504
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
505
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">isUnaryConstantExpr</a>(ref))</div>
506
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div>
507
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="comment">// we don&#39;t handle unary constant expression like fneg(x) now</span></div>
508
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; collectVal(ref);</div>
509
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
510
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantAggregate&gt;(ref))</div>
511
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div>
512
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">// we don&#39;t handle constant aggregate like constant vectors</span></div>
513
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; collectVal(ref);</div>
514
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; }</div>
515
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">else</span></div>
516
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; {</div>
517
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; assert(!SVFUtil::isa&lt;ConstantExpr&gt;(val) &amp;&amp;</div>
518
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="stringliteral">&quot;we don&#39;t handle all other constant expression for now!&quot;</span>);</div>
519
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; collectVal(ref);</div>
520
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div>
521
+ <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;}</div>
523
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; </div>
524
+ <div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779"> 480</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">SymbolTableBuilder::handleGlobalCE</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* G)</div>
525
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;{</div>
526
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; assert(G);</div>
527
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
528
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">//The type this global points to</span></div>
529
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T = G-&gt;getValueType();</div>
530
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordtype">bool</span> is_array = 0;</div>
531
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">//An array is considered a single variable of its type.</span></div>
532
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* AT = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div>
533
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div>
534
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; T = AT-&gt;getElementType();</div>
535
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; is_array = <span class="keyword">true</span>;</div>
536
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div>
537
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; </div>
538
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(T))</div>
539
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
540
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">//A struct may be used in constant GEP expr.</span></div>
541
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a>* user : G-&gt;users())</div>
542
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div>
543
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; handleCE(user);</div>
544
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div>
545
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div>
546
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (is_array)</div>
547
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div>
548
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a>* user : G-&gt;users())</div>
549
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
550
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; handleCE(user);</div>
551
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
552
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div>
553
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; </div>
554
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">if</span> (G-&gt;hasInitializer())</div>
555
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; {</div>
556
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; handleGlobalInitializerCE(G-&gt;getInitializer());</div>
557
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div>
558
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div>
559
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
560
+ <div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d"> 519</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SymbolTableBuilder::handleGlobalInitializerCE</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* C)</div>
561
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;{</div>
562
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; </div>
563
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div>
564
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
565
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* E = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(C))</div>
566
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
567
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; handleCE(E);</div>
568
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; }</div>
569
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">else</span></div>
570
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div>
571
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; collectVal(C);</div>
572
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div>
573
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div>
574
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray&gt;(C))</div>
575
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div>
576
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div>
577
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div>
578
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; handleGlobalInitializerCE(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)));</div>
579
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div>
580
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
581
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantStruct&gt;(C))</div>
582
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
583
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div>
584
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div>
585
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; handleGlobalInitializerCE(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)));</div>
586
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
587
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
588
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7332f8059ea95472dcc231de884a5768">ConstantData</a>* data = SVFUtil::dyn_cast&lt;ConstantData&gt;(C))</div>
589
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div>
590
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a18dd95e01a50aa82165c46a3801053c5">Options::ModelConsts</a>())</div>
591
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div>
592
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a>* seq =</div>
593
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(data))</div>
594
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div>
595
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; seq-&gt;getNumElements(); i++)</div>
596
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; {</div>
597
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq-&gt;getElementAsConstant(i);</div>
598
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; handleGlobalInitializerCE(ct);</div>
599
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div>
600
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div>
601
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">else</span></div>
602
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div>
603
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; assert(</div>
604
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; (SVFUtil::isa&lt;ConstantAggregateZero, UndefValue&gt;(data)) &amp;&amp;</div>
605
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="stringliteral">&quot;Single value type data should have been handled!&quot;</span>);</div>
606
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div>
607
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div>
608
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div>
609
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">else</span></div>
610
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div>
611
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">//TODO:assert(SVFUtil::isa&lt;ConstantVector&gt;(C),&quot;what else do we have&quot;);</span></div>
612
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div>
613
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;}</div>
614
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; </div>
615
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="comment">/*</span></div>
616
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="comment"> * Initial the memory object here</span></div>
617
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="comment"> */</span></div>
618
+ <div class="line"><a name="l00577"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3"> 577</a></span>&#160;<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">SymbolTableBuilder::createObjTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
619
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;{</div>
620
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* refTy = <span class="keyword">nullptr</span>;</div>
622
621
  <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; </div>
623
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// We consider two types of objects:</span></div>
624
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">// (1) A heap/static object from a callsite</span></div>
625
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span> (I &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">isNonInstricCallSite</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFInstruction(I)))</div>
626
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
627
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6c5f2f951463494af2e7b0d3267f2772">getRefTypeOfHeapAllocOrStatic</a>(I);</div>
628
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div>
629
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div>
630
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">else</span></div>
631
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; refTy = SVFUtil::dyn_cast&lt;PointerType&gt;(val-&gt;getType());</div>
632
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; </div>
633
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">if</span> (refTy)</div>
634
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div>
635
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(refTy);</div>
636
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(</div>
637
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(objTy),</div>
638
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
639
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; initTypeInfo(typeInfo,val, objTy);</div>
640
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">return</span> typeInfo;</div>
641
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div>
642
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">else</span></div>
643
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div>
644
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create an object with a non-pointer type.&quot;</span>);</div>
645
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(val-&gt;getName().str());</div>
646
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val)-&gt;<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>() + <span class="stringliteral">&quot;)&quot;</span>);</div>
647
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
648
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div>
649
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(</div>
650
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(val-&gt;getType()),</div>
651
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; 0);</div>
652
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; initTypeInfo(typeInfo,val, val-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>());</div>
653
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> typeInfo;</div>
654
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
655
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">else</span></div>
656
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div>
657
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Memory object must be either (1) held by a pointer-typed ref value or (2) a constant value (e.g., 10).&quot;</span>);</div>
658
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; abort();</div>
659
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div>
660
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div>
661
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;}</div>
662
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; </div>
663
- <div class="line"><a name="l00625"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8"> 625</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SymbolTableBuilder::analyzeObjType</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeinfo, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
664
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;{</div>
665
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; </div>
666
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* refty = SVFUtil::dyn_cast&lt;PointerType&gt;(val-&gt;getType());</div>
667
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; assert(refty &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
668
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(refty);</div>
669
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div>
670
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// Find the inter nested array element</span></div>
671
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* AT = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div>
672
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div>
673
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; elemTy = AT-&gt;getElementType();</div>
674
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div>
675
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; isPtrObj = <span class="keyword">true</span>;</div>
676
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp;</div>
677
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer() &amp;&amp;</div>
678
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; SVFUtil::isa&lt;ConstantArray&gt;(</div>
679
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div>
680
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">ObjTypeInfo::CONST_ARRAY_OBJ</a>);</div>
681
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">else</span></div>
682
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">ObjTypeInfo::VAR_ARRAY_OBJ</a>);</div>
683
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div>
684
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</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;(elemTy))</div>
685
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; {</div>
686
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keyword">const</span> std::vector&lt;const SVFType*&gt;&amp; flattenFields =</div>
687
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; getOrAddSVFTypeInfo(ST)-&gt;getFlattenFieldTypes();</div>
688
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; isPtrObj |= std::any_of(flattenFields.begin(), flattenFields.end(),</div>
689
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; [](<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty)</div>
690
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div>
691
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; return ty-&gt;isPointerTy();</div>
692
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; });</div>
693
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp;</div>
694
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer() &amp;&amp;</div>
695
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; SVFUtil::isa&lt;ConstantStruct&gt;(</div>
696
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div>
697
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">ObjTypeInfo::CONST_STRUCT_OBJ</a>);</div>
698
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">else</span></div>
699
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">ObjTypeInfo::VAR_STRUCT_OBJ</a>);</div>
700
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div>
701
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div>
702
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
703
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; isPtrObj = <span class="keyword">true</span>;</div>
704
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
705
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; </div>
706
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">if</span>(isPtrObj)</div>
707
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div>
708
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;}</div>
709
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; </div>
710
- <div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c"> 686</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c">SymbolTableBuilder::analyzeHeapAllocByteSize</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
711
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;{</div>
712
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">llvm::CallInst</a>* callInst = llvm::dyn_cast&lt;llvm::CallInst&gt;(val))</div>
713
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div>
714
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* calledFunction =</div>
715
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; callInst-&gt;getCalledFunction())</div>
716
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; {</div>
717
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunction =</div>
718
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(</div>
719
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; calledFunction);</div>
720
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; std::vector&lt;const Value*&gt; args;</div>
721
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">// Heap alloc functions have annoation like &quot;AllocSize:Arg1&quot;</span></div>
722
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation : svfFunction-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">getAnnotations</a>())</div>
723
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div>
724
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;AllocSize:&quot;</span>) != std::string::npos)</div>
725
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
726
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> allocSize = annotation.substr(10);</div>
727
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; std::stringstream ss(allocSize);</div>
728
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> token;</div>
729
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="comment">// Analyaze annotation string and attract Arg list</span></div>
730
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">while</span> (std::getline(ss, token, <span class="charliteral">&#39;*&#39;</span>))</div>
731
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div>
732
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">if</span> (token.rfind(<span class="stringliteral">&quot;Arg&quot;</span>, 0) == 0)</div>
733
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div>
734
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> argIndex;</div>
735
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; std::istringstream(token.substr(3)) &gt;&gt; argIndex;</div>
736
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (argIndex &lt; callInst-&gt;getNumOperands() - 1)</div>
737
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
738
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; args.push_back(</div>
739
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; callInst-&gt;getArgOperand(argIndex));</div>
740
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
741
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; }</div>
742
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div>
743
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
744
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div>
745
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> product = 1;</div>
746
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (args.size() &gt; 0)</div>
747
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; {</div>
748
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// for annotations like &quot;AllocSize:Arg0*Arg1&quot;</span></div>
749
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::Value</a>* arg : args)</div>
750
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div>
751
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">llvm::ConstantInt</a>* constIntArg =</div>
752
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; llvm::dyn_cast&lt;llvm::ConstantInt&gt;(arg))</div>
753
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div>
754
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="comment">// Multiply the constant Value if all Args are const</span></div>
755
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; product *= constIntArg-&gt;getZExtValue();</div>
756
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; }</div>
757
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">else</span></div>
758
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div>
759
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="comment">// if Arg list has non-const value, return 0 to indicate it is non const byte size</span></div>
760
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> 0;</div>
761
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; }</div>
762
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div>
763
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="comment">// If all the Args are const, return product</span></div>
764
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">return</span> product;</div>
765
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div>
766
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">else</span></div>
767
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div>
768
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="comment">// for annotations like &quot;AllocSize:UNKNOWN&quot;</span></div>
769
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">return</span> 0;</div>
770
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; }</div>
771
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div>
772
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div>
773
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="comment">// if it is not CallInst or CallInst has no CalledFunction, return 0 to indicate it is non const byte size</span></div>
774
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">return</span> 0;</div>
775
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;}</div>
776
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; </div>
777
- <div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56"> 756</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">SymbolTableBuilder::analyzeHeapObjType</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeinfo, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
778
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;{</div>
779
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* castUse = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(val))</div>
780
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {</div>
781
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div>
782
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ae26937ca2107517e6ede8eb6d76b95d5">resetTypeForHeapStaticObj</a>(</div>
783
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(castUse-&gt;getType()));</div>
784
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; analyzeObjType(typeinfo,castUse);</div>
785
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div>
786
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">else</span></div>
787
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div>
788
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div>
789
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div>
790
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div>
791
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;}</div>
792
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; </div>
793
- <div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7"> 775</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SymbolTableBuilder::analyzeStaticObjType</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeinfo, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
794
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;{</div>
795
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* castUse = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(val))</div>
796
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; {</div>
797
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98">ObjTypeInfo::STATIC_OBJ</a>);</div>
798
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ae26937ca2107517e6ede8eb6d76b95d5">resetTypeForHeapStaticObj</a>(</div>
799
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(castUse-&gt;getType()));</div>
800
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; analyzeObjType(typeinfo,castUse);</div>
622
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* I = SVFUtil::dyn_cast&lt;Instruction&gt;(val);</div>
623
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; </div>
624
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="comment">// We consider two types of objects:</span></div>
625
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="comment">// (1) A heap/static object from a callsite</span></div>
626
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">if</span> (I &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">isNonInstricCallSite</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFInstruction(I)))</div>
627
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div>
628
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6c5f2f951463494af2e7b0d3267f2772">getRefTypeOfHeapAllocOrStatic</a>(I);</div>
629
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div>
630
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div>
631
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">else</span></div>
632
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; refTy = SVFUtil::dyn_cast&lt;PointerType&gt;(val-&gt;getType());</div>
633
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; </div>
634
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">if</span> (refTy)</div>
635
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; {</div>
636
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(refTy);</div>
637
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(</div>
638
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(objTy),</div>
639
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
640
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; initTypeInfo(typeInfo,val, objTy);</div>
641
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">return</span> typeInfo;</div>
642
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div>
643
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">else</span></div>
644
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div>
645
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create an object with a non-pointer type.&quot;</span>);</div>
646
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(val-&gt;getName().str());</div>
647
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2e0196e0ce547ab4a483cc6d2646b24">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFValue(val)-&gt;<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>() + <span class="stringliteral">&quot;)&quot;</span>);</div>
648
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
649
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div>
650
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(</div>
651
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(val-&gt;getType()),</div>
652
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; 0);</div>
653
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; initTypeInfo(typeInfo,val, val-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>());</div>
654
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">return</span> typeInfo;</div>
655
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
656
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">else</span></div>
657
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div>
658
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Memory object must be either (1) held by a pointer-typed ref value or (2) a constant value (e.g., 10).&quot;</span>);</div>
659
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; abort();</div>
660
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div>
661
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div>
662
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;}</div>
663
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
664
+ <div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8"> 627</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SymbolTableBuilder::analyzeObjType</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeinfo, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
665
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;{</div>
666
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; </div>
667
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* refty = SVFUtil::dyn_cast&lt;PointerType&gt;(val-&gt;getType());</div>
668
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; assert(refty &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div>
669
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">// TODO: getPtrElementType need type inference</span></div>
670
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(refty);</div>
671
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div>
672
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// Find the inter nested array element</span></div>
673
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* AT = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div>
674
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div>
675
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; elemTy = AT-&gt;getElementType();</div>
676
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div>
677
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; isPtrObj = <span class="keyword">true</span>;</div>
678
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp;</div>
679
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer() &amp;&amp;</div>
680
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; SVFUtil::isa&lt;ConstantArray&gt;(</div>
681
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div>
682
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">ObjTypeInfo::CONST_ARRAY_OBJ</a>);</div>
683
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">else</span></div>
684
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">ObjTypeInfo::VAR_ARRAY_OBJ</a>);</div>
685
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
686
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</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;(elemTy))</div>
687
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div>
688
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> std::vector&lt;const SVFType*&gt;&amp; flattenFields =</div>
689
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; getOrAddSVFTypeInfo(ST)-&gt;getFlattenFieldTypes();</div>
690
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; isPtrObj |= std::any_of(flattenFields.begin(), flattenFields.end(),</div>
691
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; [](<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty)</div>
692
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div>
693
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; return ty-&gt;isPointerTy();</div>
694
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; });</div>
695
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp;</div>
696
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer() &amp;&amp;</div>
697
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; SVFUtil::isa&lt;ConstantStruct&gt;(</div>
698
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div>
699
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">ObjTypeInfo::CONST_STRUCT_OBJ</a>);</div>
700
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span></div>
701
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">ObjTypeInfo::VAR_STRUCT_OBJ</a>);</div>
702
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div>
703
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div>
704
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {</div>
705
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; isPtrObj = <span class="keyword">true</span>;</div>
706
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div>
707
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; </div>
708
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">if</span>(isPtrObj)</div>
709
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div>
710
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;}</div>
711
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; </div>
712
+ <div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c"> 689</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c">SymbolTableBuilder::analyzeHeapAllocByteSize</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
713
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;{</div>
714
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">llvm::CallInst</a>* callInst = llvm::dyn_cast&lt;llvm::CallInst&gt;(val))</div>
715
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; {</div>
716
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">llvm::Function</a>* calledFunction =</div>
717
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; callInst-&gt;getCalledFunction())</div>
718
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div>
719
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFunction =</div>
720
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(</div>
721
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; calledFunction);</div>
722
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; std::vector&lt;const Value*&gt; args;</div>
723
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="comment">// Heap alloc functions have annoation like &quot;AllocSize:Arg1&quot;</span></div>
724
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> annotation : svfFunction-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">getAnnotations</a>())</div>
725
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; {</div>
726
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;AllocSize:&quot;</span>) != std::string::npos)</div>
727
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div>
728
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> allocSize = annotation.substr(10);</div>
729
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; std::stringstream ss(allocSize);</div>
730
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> token;</div>
731
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// Analyaze annotation string and attract Arg list</span></div>
732
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">while</span> (std::getline(ss, token, <span class="charliteral">&#39;*&#39;</span>))</div>
733
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div>
734
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span> (token.rfind(<span class="stringliteral">&quot;Arg&quot;</span>, 0) == 0)</div>
735
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; {</div>
736
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> argIndex;</div>
737
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; std::istringstream(token.substr(3)) &gt;&gt; argIndex;</div>
738
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span> (argIndex &lt; callInst-&gt;getNumOperands() - 1)</div>
739
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
740
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; args.push_back(</div>
741
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; callInst-&gt;getArgOperand(argIndex));</div>
742
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
743
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div>
744
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div>
745
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
746
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; }</div>
747
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> product = 1;</div>
748
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (args.size() &gt; 0)</div>
749
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div>
750
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="comment">// for annotations like &quot;AllocSize:Arg0*Arg1&quot;</span></div>
751
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">llvm::Value</a>* arg : args)</div>
752
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; {</div>
753
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">llvm::ConstantInt</a>* constIntArg =</div>
754
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; llvm::dyn_cast&lt;llvm::ConstantInt&gt;(arg))</div>
755
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div>
756
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="comment">// Multiply the constant Value if all Args are const</span></div>
757
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; product *= constIntArg-&gt;getZExtValue();</div>
758
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div>
759
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">else</span></div>
760
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div>
761
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="comment">// if Arg list has non-const value, return 0 to indicate it is non const byte size</span></div>
762
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">return</span> 0;</div>
763
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; }</div>
764
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div>
765
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="comment">// If all the Args are const, return product</span></div>
766
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">return</span> product;</div>
767
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
768
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">else</span></div>
769
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div>
770
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="comment">// for annotations like &quot;AllocSize:UNKNOWN&quot;</span></div>
771
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">return</span> 0;</div>
772
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
773
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; }</div>
774
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div>
775
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="comment">// if it is not CallInst or CallInst has no CalledFunction, return 0 to indicate it is non const byte size</span></div>
776
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">return</span> 0;</div>
777
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;}</div>
778
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; </div>
779
+ <div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a86e051b7423b9e6cc3c96ccddb0ad345"> 759</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a86e051b7423b9e6cc3c96ccddb0ad345">SymbolTableBuilder::analyzeHeapObjType</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeinfo, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
780
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;{</div>
781
+ <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#a90b263fd2f541eca78135078114cabda">Value</a>* castUse = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(val))</div>
782
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div>
783
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div>
784
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47">getTypeOfHeapAlloc</a>(SVFUtil::cast&lt;Instruction&gt;(val));</div>
785
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ae26937ca2107517e6ede8eb6d76b95d5">resetTypeForHeapStaticObj</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(objTy));</div>
786
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; analyzeObjType(typeinfo,castUse);</div>
787
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ArrayType&gt;(objTy))</div>
788
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">return</span> getNumOfElements(objTy);</div>
789
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">else</span> <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;(objTy))</div>
790
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; {</div>
791
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">getClassNameFromType</a>(st).empty())</div>
792
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">return</span> getNumOfElements(objTy);</div>
793
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">else</span></div>
794
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ae26937ca2107517e6ede8eb6d76b95d5">resetTypeForHeapStaticObj</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(castUse-&gt;getType()));</div>
795
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div>
796
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; }</div>
797
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">else</span></div>
798
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div>
799
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div>
800
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div>
801
801
  <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div>
802
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">else</span></div>
803
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; {</div>
804
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div>
805
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div>
806
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }</div>
807
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;}</div>
808
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; </div>
809
- <div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de"> 794</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de">SymbolTableBuilder::initTypeInfo</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeinfo, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val,</div>
810
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objTy)</div>
811
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;{</div>
812
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; </div>
813
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemNum = 1;</div>
814
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="comment">// init byteSize = 0, If byteSize is changed in the following process,</span></div>
815
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="comment">// it means that ObjTypeInfo has a Constant Byte Size</span></div>
816
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteSize = 0;</div>
817
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="comment">// Global variable</span></div>
818
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="comment">// if val is Function Obj, byteSize is not set</span></div>
819
- <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div>
820
- <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</div>
821
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div>
822
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; analyzeObjType(typeinfo,val);</div>
823
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; elemNum = getNumOfElements(objTy);</div>
824
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; }</div>
825
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</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;(val))</div>
826
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div>
827
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div>
828
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; analyzeObjType(typeinfo,val);</div>
829
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* sz = SVFUtil::dyn_cast&lt;ConstantInt&gt;(allocaInst-&gt;getArraySize()))</div>
830
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div>
831
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; elemNum = sz-&gt;getZExtValue() * getNumOfElements(objTy);</div>
832
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; byteSize = sz-&gt;getZExtValue() * typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
833
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div>
834
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">else</span></div>
835
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; {</div>
836
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; elemNum = getNumOfElements(objTy);</div>
837
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; byteSize = 0;</div>
838
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div>
839
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</div>
840
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div>
841
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div>
842
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div>
843
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
844
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">ObjTypeInfo::CONST_GLOBAL_OBJ</a>);</div>
845
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; analyzeObjType(typeinfo,val);</div>
846
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; elemNum = getNumOfElements(objTy);</div>
847
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; byteSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
848
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div>
849
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp;</div>
850
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(</div>
851
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFInstruction(</div>
852
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; SVFUtil::cast&lt;Instruction&gt;(val))))</div>
853
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; {</div>
854
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; analyzeHeapObjType(typeinfo,val);</div>
855
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="comment">// Heap object, label its field as infinite here</span></div>
856
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; elemNum = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div>
857
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="comment">// analyze heap alloc like (malloc/calloc/...), the alloc functions have</span></div>
858
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="comment">// annotation like &quot;AllocSize:Arg1&quot;. Please refer to extapi.c.</span></div>
859
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="comment">// e.g. calloc(4, 10), annotation is &quot;AllocSize:Arg0*Arg1&quot;,</span></div>
860
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="comment">// it means byteSize = 4 (Arg0) * 10 (Arg1) = 40</span></div>
861
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; byteSize = analyzeHeapAllocByteSize(val);</div>
862
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div>
863
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#adad59a953dd81e213db71babbbc9df2f">ArgInProgEntryFunction</a>(val))</div>
864
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; {</div>
865
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; analyzeStaticObjType(typeinfo,val);</div>
866
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div>
867
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; elemNum = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div>
868
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; byteSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
869
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div>
870
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</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>
871
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; {</div>
872
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">ObjTypeInfo::CONST_DATA</a>);</div>
873
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; elemNum = getNumOfFlattenElements(val-&gt;getType());</div>
874
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; byteSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
875
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; }</div>
876
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">else</span></div>
877
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; {</div>
878
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; assert(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div>
879
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; abort();</div>
880
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div>
881
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; </div>
882
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div>
883
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">if</span>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; elemNum)</div>
884
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">setNumOfElements</a>(elemNum);</div>
885
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; </div>
886
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="comment">// set ByteSize. If ByteSize &gt; 0, this typeinfo has constant type.</span></div>
887
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="comment">// If ByteSize == 0, this typeinfo has 1) zero byte 2) non-const byte size</span></div>
888
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="comment">// If ByteSize&gt;MaxFieldLimit, set MaxFieldLimit to the byteSize;</span></div>
889
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; byteSize = <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() &gt; byteSize? byteSize: <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
890
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ac093156bfb46c07675ae201f449cdca0">setByteSizeOfObj</a>(byteSize);</div>
891
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;}</div>
892
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; </div>
893
- <div class="line"><a name="l00889"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d"> 889</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">SymbolTableBuilder::getNumOfElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety)</div>
894
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;{</div>
895
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
896
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div>
897
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
898
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; {</div>
899
- <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; numOfFields = getNumOfFlattenElements(ety);</div>
900
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div>
901
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
902
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;}</div>
903
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; </div>
904
- <div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f"> 901</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f">SymbolTableBuilder::getNumOfFlattenElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
802
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div>
803
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;}</div>
804
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; </div>
805
+ <div class="line"><a name="l00790"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7"> 790</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SymbolTableBuilder::analyzeStaticObjType</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeinfo, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
806
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;{</div>
807
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* castUse = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a200539f965bff5627abac41920498ee8">getFirstUseViaCastInst</a>(val))</div>
808
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; {</div>
809
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98">ObjTypeInfo::STATIC_OBJ</a>);</div>
810
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ae26937ca2107517e6ede8eb6d76b95d5">resetTypeForHeapStaticObj</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFType(castUse-&gt;getType()));</div>
811
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; analyzeObjType(typeinfo,castUse);</div>
812
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; }</div>
813
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">else</span></div>
814
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; {</div>
815
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">ObjTypeInfo::HEAP_OBJ</a>);</div>
816
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div>
817
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div>
818
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;}</div>
819
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; </div>
820
+ <div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de"> 808</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de">SymbolTableBuilder::initTypeInfo</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeinfo, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val,</div>
821
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objTy)</div>
822
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;{</div>
823
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; </div>
824
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemNum = 1;</div>
825
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="comment">// init byteSize = 0, If byteSize is changed in the following process,</span></div>
826
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// it means that ObjTypeInfo has a Constant Byte Size</span></div>
827
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteSize = 0;</div>
828
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="comment">// Global variable</span></div>
829
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="comment">// if val is Function Obj, byteSize is not set</span></div>
830
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div>
831
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div>
832
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div>
833
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; analyzeObjType(typeinfo,val);</div>
834
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; elemNum = getNumOfElements(objTy);</div>
835
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; }</div>
836
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</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;(val))</div>
837
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; {</div>
838
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div>
839
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; analyzeObjType(typeinfo,val);</div>
840
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* sz = SVFUtil::dyn_cast&lt;ConstantInt&gt;(allocaInst-&gt;getArraySize()))</div>
841
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div>
842
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; elemNum = sz-&gt;getZExtValue() * getNumOfElements(objTy);</div>
843
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; byteSize = sz-&gt;getZExtValue() * typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
844
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div>
845
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">else</span></div>
846
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; {</div>
847
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; elemNum = getNumOfElements(objTy);</div>
848
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; byteSize = 0;</div>
849
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; }</div>
850
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; }</div>
851
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div>
852
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
853
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div>
854
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
855
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">ObjTypeInfo::CONST_GLOBAL_OBJ</a>);</div>
856
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; analyzeObjType(typeinfo,val);</div>
857
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; elemNum = getNumOfElements(objTy);</div>
858
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; byteSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
859
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div>
860
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp;</div>
861
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(</div>
862
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFInstruction(</div>
863
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; SVFUtil::cast&lt;Instruction&gt;(val))))</div>
864
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; {</div>
865
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; elemNum = analyzeHeapObjType(typeinfo,val);</div>
866
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="comment">// analyze heap alloc like (malloc/calloc/...), the alloc functions have</span></div>
867
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="comment">// annotation like &quot;AllocSize:Arg1&quot;. Please refer to extapi.c.</span></div>
868
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="comment">// e.g. calloc(4, 10), annotation is &quot;AllocSize:Arg0*Arg1&quot;,</span></div>
869
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="comment">// it means byteSize = 4 (Arg0) * 10 (Arg1) = 40</span></div>
870
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; byteSize = analyzeHeapAllocByteSize(val);</div>
871
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div>
872
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#adad59a953dd81e213db71babbbc9df2f">ArgInProgEntryFunction</a>(val))</div>
873
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; {</div>
874
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; analyzeStaticObjType(typeinfo,val);</div>
875
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div>
876
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; elemNum = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div>
877
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; byteSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
878
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div>
879
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</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>
880
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; {</div>
881
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">ObjTypeInfo::CONST_DATA</a>);</div>
882
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; elemNum = getNumOfFlattenElements(val-&gt;getType());</div>
883
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; byteSize = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aaffd94b311238f183031a525376c55a2">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
884
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
885
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">else</span></div>
886
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div>
887
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; assert(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div>
888
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; abort();</div>
889
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; }</div>
890
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; </div>
891
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div>
892
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">if</span>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; elemNum)</div>
893
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">setNumOfElements</a>(elemNum);</div>
894
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; </div>
895
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="comment">// set ByteSize. If ByteSize &gt; 0, this typeinfo has constant type.</span></div>
896
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="comment">// If ByteSize == 0, this typeinfo has 1) zero byte 2) non-const byte size</span></div>
897
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="comment">// If ByteSize&gt;MaxFieldLimit, set MaxFieldLimit to the byteSize;</span></div>
898
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; byteSize = <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() &gt; byteSize? byteSize: <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
899
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ac093156bfb46c07675ae201f449cdca0">setByteSizeOfObj</a>(byteSize);</div>
900
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;}</div>
901
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; </div>
902
+ <div class="line"><a name="l00901"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d"> 901</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">SymbolTableBuilder::getNumOfElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety)</div>
905
903
  <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;{</div>
906
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
907
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">return</span> getOrAddSVFTypeInfo(T)-&gt;getNumOfFlattenElements();</div>
908
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">else</span></div>
909
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">return</span> getOrAddSVFTypeInfo(T)-&gt;getNumOfFlattenFields();</div>
910
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;}</div>
911
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; </div>
912
- <div class="line"><a name="l00909"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca"> 909</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">SymbolTableBuilder::getOrAddSVFTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
913
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;{</div>
914
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(T)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>();</div>
915
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;}</div>
904
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
905
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div>
906
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
907
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; {</div>
908
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; numOfFields = getNumOfFlattenElements(ety);</div>
909
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; }</div>
910
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
911
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;}</div>
912
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; </div>
913
+ <div class="line"><a name="l00913"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f"> 913</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f">SymbolTableBuilder::getNumOfFlattenElements</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
914
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;{</div>
915
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
916
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">return</span> getOrAddSVFTypeInfo(T)-&gt;getNumOfFlattenElements();</div>
917
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">else</span></div>
918
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> getOrAddSVFTypeInfo(T)-&gt;getNumOfFlattenFields();</div>
919
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;}</div>
920
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; </div>
921
+ <div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca"> 921</a></span>&#160;<a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">SymbolTableBuilder::getOrAddSVFTypeInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* T)</div>
922
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;{</div>
923
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(T)-&gt;<a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>();</div>
924
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;}</div>
916
925
  </div><!-- fragment --></div><!-- contents -->
917
926
  <div class="ttc" id="aSVFType_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFType_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00585">SVFType.h:585</a></div></div>
918
- <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>
927
+ <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>
919
928
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a95b8031f1e15d49c7d68628be1d05aae"><div class="ttname"><a href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">SVF::SVFType::getByteSize</a></div><div class="ttdeci">u32_t getByteSize() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00323">SVFType.h:323</a></div></div>
920
929
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00101">LLVMModule.h:101</a></div></div>
921
930
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a4af4db2fe43846609d2ed1d7022b1be1"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4af4db2fe43846609d2ed1d7022b1be1">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00188">SVFUtil.h:188</a></div></div>
922
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_afe2806a0aef240ab313975decfe362f7"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SVF::SymbolTableBuilder::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00775">SymbolTableBuilder.cpp:775</a></div></div>
931
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_afe2806a0aef240ab313975decfe362f7"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">SVF::SymbolTableBuilder::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00790">SymbolTableBuilder.cpp:790</a></div></div>
923
932
  <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>
924
933
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">SVF::SymbolTableInfo::NullPtr</a></div><div class="ttdeci">@ NullPtr</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00058">SymbolTableInfo.h:58</a></div></div>
925
934
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aca11801ed6ef6ff8d2a1e85bc0fc5794"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">SVF::LLVMUtil::isObject</a></div><div class="ttdeci">bool isObject(const Value *ref)</div><div class="ttdoc">Return true if this value refers to a object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00054">LLVMUtil.cpp:54</a></div></div>
926
935
  <div class="ttc" id="anamespaceSVF_html_a292a6e8c5b4f2023b5575879c57eca62"><div class="ttname"><a href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">SVF::UnaryOperator</a></div><div class="ttdeci">llvm::UnaryOperator UnaryOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00178">BasicTypes.h:178</a></div></div>
927
936
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a3ddf7041e685da8ede81cd773dd47761"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3ddf7041e685da8ede81cd773dd47761">SVF::SVFUtil::cast</a></div><div class="ttdeci">std::enable_if_t&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt; cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00360">Casting.h:360</a></div></div>
928
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a35b36394af726c679fe2c1b6051db7c4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">SVF::LLVMUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00309">LLVMUtil.h:309</a></div></div>
937
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a35b36394af726c679fe2c1b6051db7c4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a35b36394af726c679fe2c1b6051db7c4">SVF::LLVMUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00314">LLVMUtil.h:314</a></div></div>
929
938
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_ae26937ca2107517e6ede8eb6d76b95d5"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#ae26937ca2107517e6ede8eb6d76b95d5">SVF::ObjTypeInfo::resetTypeForHeapStaticObj</a></div><div class="ttdeci">void resetTypeForHeapStaticObj(const SVFType *type)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00050">SymbolTableInfo.cpp:50</a></div></div>
930
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adad59a953dd81e213db71babbbc9df2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adad59a953dd81e213db71babbbc9df2f">SVF::LLVMUtil::ArgInProgEntryFunction</a></div><div class="ttdeci">bool ArgInProgEntryFunction(const Value *val)</div><div class="ttdoc">Return true if this is an argument of a program entry function (e.g. main)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00180">LLVMUtil.h:180</a></div></div>
939
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adad59a953dd81e213db71babbbc9df2f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adad59a953dd81e213db71babbbc9df2f">SVF::LLVMUtil::ArgInProgEntryFunction</a></div><div class="ttdeci">bool ArgInProgEntryFunction(const Value *val)</div><div class="ttdoc">Return true if this is an argument of a program entry function (e.g. main)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00185">LLVMUtil.h:185</a></div></div>
931
940
  <div class="ttc" id="aLLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
932
941
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">SVF::ObjTypeInfo::CONST_DATA</a></div><div class="ttdeci">@ CONST_DATA</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00499">SymbolTableInfo.h:499</a></div></div>
933
942
  <div class="ttc" id="anamespaceSVF_html_aad5d26ab07a5d1314bdb8f54e0fcdb22"><div class="ttname"><a href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">SVF::BinaryOperator</a></div><div class="ttdeci">llvm::BinaryOperator BinaryOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00177">BasicTypes.h:177</a></div></div>
934
943
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
935
944
  <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>
936
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a1efd9406182eb86b1ee4829c931b566d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00518">SymbolTableBuilder.cpp:518</a></div></div>
937
- <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>
945
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a1efd9406182eb86b1ee4829c931b566d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00519">SymbolTableBuilder.cpp:519</a></div></div>
946
+ <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>
938
947
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a0d7588578735679773493ff2d5e458e1"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVF::SVFUtil::increaseStackSize</a></div><div class="ttdeci">void increaseStackSize()</div><div class="ttdoc">Increase the stack size limit.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00227">SVFUtil.cpp:227</a></div></div>
939
948
  <div class="ttc" id="anamespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00153">BasicTypes.h:153</a></div></div>
940
949
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01275">LLVMModule.cpp:1275</a></div></div>
941
- <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>
942
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_abc8b35d432db78bd5282010c7c800d70"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SVF::SymbolTableBuilder::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00288">SymbolTableBuilder.cpp:288</a></div></div>
950
+ <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>
951
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_abc8b35d432db78bd5282010c7c800d70"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">SVF::SymbolTableBuilder::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00289">SymbolTableBuilder.cpp:289</a></div></div>
943
952
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00201">LLVMModule.h:201</a></div></div>
944
953
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SVF::SymbolTableInfo::BlackHole</a></div><div class="ttdeci">@ BlackHole</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00060">SymbolTableInfo.h:60</a></div></div>
945
954
  <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>
@@ -947,16 +956,16 @@ $(function() {
947
956
  <div class="ttc" id="anamespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00053">SVFType.h:53</a></div></div>
948
957
  <div class="ttc" id="anamespacellvm_html_acfe99e9d441434240c79f6d76b73fe0a"><div class="ttname"><a href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">llvm::bridge_gep_begin</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_begin(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00149">GEPTypeBridgeIterator.h:149</a></div></div>
949
958
  <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>
950
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_af7aae2e2851c948f85600066a5a394ca"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">SVF::SymbolTableBuilder::getOrAddSVFTypeInfo</a></div><div class="ttdeci">StInfo * getOrAddSVFTypeInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00909">SymbolTableBuilder.cpp:909</a></div></div>
959
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_af7aae2e2851c948f85600066a5a394ca"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca">SVF::SymbolTableBuilder::getOrAddSVFTypeInfo</a></div><div class="ttdeci">StInfo * getOrAddSVFTypeInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00921">SymbolTableBuilder.cpp:921</a></div></div>
951
960
  <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>
952
961
  <div class="ttc" id="aclassSVF_1_1Options_html_a52c06ea1c5dd347079f192f0cba3dcd3"><div class="ttname"><a href="classSVF_1_1Options.html#a52c06ea1c5dd347079f192f0cba3dcd3">SVF::Options::SymTabPrint</a></div><div class="ttdeci">static const Option&lt; bool &gt; SymTabPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00221">Options.h:221</a></div></div>
953
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a603cf580467b32df5fad94ade3287b0f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f">SVF::SymbolTableBuilder::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattened elements of an array or struct.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00901">SymbolTableBuilder.cpp:901</a></div></div>
962
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a603cf580467b32df5fad94ade3287b0f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f">SVF::SymbolTableBuilder::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattened elements of an array or struct.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00913">SymbolTableBuilder.cpp:913</a></div></div>
954
963
  <div class="ttc" id="anamespacellvm_html_a7cfc92a12082d69711c97bb3d1b99c48"><div class="ttname"><a href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">llvm::bridge_gep_end</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_end(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00157">GEPTypeBridgeIterator.h:157</a></div></div>
955
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a674b84d529c762af3a45e7d4ce4d543d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">SVF::SymbolTableBuilder::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00889">SymbolTableBuilder.cpp:889</a></div></div>
964
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a674b84d529c762af3a45e7d4ce4d543d"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d">SVF::SymbolTableBuilder::getNumOfElements</a></div><div class="ttdeci">u32_t getNumOfElements(const Type *ety)</div><div class="ttdoc">Return size of this object based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00901">SymbolTableBuilder.cpp:901</a></div></div>
956
965
  <div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
957
966
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">SVF::SymbolTableInfo::BlkPtr</a></div><div class="ttdeci">@ BlkPtr</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00059">SymbolTableInfo.h:59</a></div></div>
958
967
  <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>
959
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af983b0e1fbd371d8672e8f03f63084fc"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">SVF::LLVMUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00264">LLVMUtil.h:264</a></div></div>
968
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_af983b0e1fbd371d8672e8f03f63084fc"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">SVF::LLVMUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00269">LLVMUtil.h:269</a></div></div>
960
969
  <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>
961
970
  <div class="ttc" id="anamespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
962
971
  <div class="ttc" id="anamespaceSVF_html_ac7dcc6103dee3a0bbc2fd2e02716a154"><div class="ttname"><a href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">SVF::ReturnInst</a></div><div class="ttdeci">llvm::ReturnInst ReturnInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
@@ -974,52 +983,53 @@ $(function() {
974
983
  <div class="ttc" id="aSVFType_8h_html_aaff570bb354b8519a4852ffda413af7c"><div class="ttname"><a href="SVFType_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a></div><div class="ttdeci">#define DMemModelCE</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00586">SVFType.h:586</a></div></div>
975
984
  <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00026">NodeIDAllocator.cpp:26</a></div></div>
976
985
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_ac093156bfb46c07675ae201f449cdca0"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#ac093156bfb46c07675ae201f449cdca0">SVF::ObjTypeInfo::setByteSizeOfObj</a></div><div class="ttdeci">void setByteSizeOfObj(u32_t size)</div><div class="ttdoc">Set the byte size of this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00568">SymbolTableInfo.h:568</a></div></div>
977
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a891bfea437256d1b7aa957d32797e419"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">SVF::SymbolTableBuilder::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00317">SymbolTableBuilder.cpp:317</a></div></div>
986
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a891bfea437256d1b7aa957d32797e419"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a891bfea437256d1b7aa957d32797e419">SVF::SymbolTableBuilder::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00318">SymbolTableBuilder.cpp:318</a></div></div>
978
987
  <div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
979
988
  <div class="ttc" id="anamespaceSVF_html_ac8d4990439af7a2ecca7e15383119674"><div class="ttname"><a href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">SVF::PHINode</a></div><div class="ttdeci">llvm::PHINode PHINode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00163">BasicTypes.h:163</a></div></div>
980
989
  <div class="ttc" id="aclassSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00132">SVFType.h:132</a></div></div>
981
990
  <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>
982
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_ac2fa9a797e3e2a8885ccc488030659d5"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">SVF::SymbolTableBuilder::collectSym</a></div><div class="ttdeci">void collectSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00259">SymbolTableBuilder.cpp:259</a></div></div>
991
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_ac2fa9a797e3e2a8885ccc488030659d5"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">SVF::SymbolTableBuilder::collectSym</a></div><div class="ttdeci">void collectSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00260">SymbolTableBuilder.cpp:260</a></div></div>
983
992
  <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a85994a1cdb68036dde589aab0d7b3e82"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a85994a1cdb68036dde589aab0d7b3e82">SVF::SymbolTableBuilder::createConstantObj</a></div><div class="ttdeci">MemObj * createConstantObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00058">SymbolTableBuilder.cpp:58</a></div></div>
984
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a946a2b51b848c45c6c52f03581ee05b8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">SVF::LLVMUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00284">LLVMUtil.h:284</a></div></div>
985
- <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>
993
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a946a2b51b848c45c6c52f03581ee05b8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a946a2b51b848c45c6c52f03581ee05b8">SVF::LLVMUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00289">LLVMUtil.h:289</a></div></div>
994
+ <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>
986
995
  <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>
987
996
  <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>
988
997
  <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a92b053f79cfa1259603836cb0aacad7d"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a92b053f79cfa1259603836cb0aacad7d">SVF::NodeIDAllocator::endSymbolAllocation</a></div><div class="ttdeci">NodeID endSymbolAllocation(void)</div><div class="ttdoc">Notify the allocator that all symbols have had IDs allocated.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00163">NodeIDAllocator.cpp:163</a></div></div>
989
998
  <div class="ttc" id="aBasicTypes_8h_html"><div class="ttname"><a href="BasicTypes_8h.html">BasicTypes.h</a></div></div>
990
999
  <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>
991
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae59b0dc7f29dbd2018e819f77465f66e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">SVF::LLVMUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00274">LLVMUtil.h:274</a></div></div>
1000
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae59b0dc7f29dbd2018e819f77465f66e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae59b0dc7f29dbd2018e819f77465f66e">SVF::LLVMUtil::isSelectConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isSelectConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00279">LLVMUtil.h:279</a></div></div>
992
1001
  <div class="ttc" id="anamespaceSVF_html_a5d875a9d726bb9f68a17efa528dec0b4"><div class="ttname"><a href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">SVF::CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
993
1002
  <div class="ttc" id="anamespaceSVF_html_ab7fac9d4a4839be445c89777e21bc307"><div class="ttname"><a href="namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307">SVF::SelectInst</a></div><div class="ttdeci">llvm::SelectInst SelectInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
994
1003
  <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a6ce6b40b8291c6378dda07d943d66e53"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">SVF::NodeIDAllocator::allocateObjectId</a></div><div class="ttdeci">NodeID allocateObjectId(void)</div><div class="ttdoc">Allocate an object ID as determined by the strategy.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00050">NodeIDAllocator.cpp:50</a></div></div>
995
1004
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">SVF::ObjTypeInfo::HEAP_OBJ</a></div><div class="ttdeci">@ HEAP_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00493">SymbolTableInfo.h:493</a></div></div>
996
1005
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">SVF::ObjTypeInfo::STACK_OBJ</a></div><div class="ttdeci">@ STACK_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00492">SymbolTableInfo.h:492</a></div></div>
997
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_add1f3d59a4a8234fb398ed52d4b2115e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">SVF::SymbolTableBuilder::collectVararg</a></div><div class="ttdeci">void collectVararg(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00370">SymbolTableBuilder.cpp:370</a></div></div>
998
- <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>
1006
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_add1f3d59a4a8234fb398ed52d4b2115e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">SVF::SymbolTableBuilder::collectVararg</a></div><div class="ttdeci">void collectVararg(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00371">SymbolTableBuilder.cpp:371</a></div></div>
1007
+ <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>
999
1008
  <div class="ttc" id="aSVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
1000
1009
  <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>
1001
1010
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_ad6fb2bfae3d4b73a6821a87106f65f49"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">SVF::ObjTypeInfo::setFlag</a></div><div class="ttdeci">void setFlag(MEMTYPE mask)</div><div class="ttdoc">Flag for this object type.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00581">SymbolTableInfo.h:581</a></div></div>
1002
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2834d135a2385efff783e6e22d2eff1f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">SVF::LLVMUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00254">LLVMUtil.h:254</a></div></div>
1003
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9e0c786488dfdc4605d4cbcf9943c85a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00421">LLVMUtil.h:421</a></div></div>
1011
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2834d135a2385efff783e6e22d2eff1f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2834d135a2385efff783e6e22d2eff1f">SVF::LLVMUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00259">LLVMUtil.h:259</a></div></div>
1012
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9e0c786488dfdc4605d4cbcf9943c85a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9e0c786488dfdc4605d4cbcf9943c85a">SVF::LLVMUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00427">LLVMUtil.h:427</a></div></div>
1004
1013
  <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>
1005
1014
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00309">SVFType.h:309</a></div></div>
1006
1015
  <div class="ttc" id="anamespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
1007
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a2f5321b9a76ea833650f1391ecd8de5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">SVF::SymbolTableBuilder::collectRet</a></div><div class="ttdeci">void collectRet(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00353">SymbolTableBuilder.cpp:353</a></div></div>
1016
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a2f5321b9a76ea833650f1391ecd8de5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">SVF::SymbolTableBuilder::collectRet</a></div><div class="ttdeci">void collectRet(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00354">SymbolTableBuilder.cpp:354</a></div></div>
1017
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a86e051b7423b9e6cc3c96ccddb0ad345"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a86e051b7423b9e6cc3c96ccddb0ad345">SVF::SymbolTableBuilder::analyzeHeapObjType</a></div><div class="ttdeci">u32_t analyzeHeapObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00759">SymbolTableBuilder.cpp:759</a></div></div>
1008
1018
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdeci">@ CONST_ARRAY_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00497">SymbolTableInfo.h:497</a></div></div>
1009
1019
  <div class="ttc" id="aclassSVF_1_1Options_html_a429c3000ee2ac45119b8c241aa06762c"><div class="ttname"><a href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">SVF::Options::ModelArrays</a></div><div class="ttdeci">static const Option&lt; bool &gt; ModelArrays</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00219">Options.h:219</a></div></div>
1010
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00625">SymbolTableBuilder.cpp:625</a></div></div>
1020
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_af5c882c10cd46c669c5aededbdb510d8"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">SVF::SymbolTableBuilder::analyzeObjType</a></div><div class="ttdeci">void analyzeObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00627">SymbolTableBuilder.cpp:627</a></div></div>
1011
1021
  <div class="ttc" id="anamespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00160">BasicTypes.h:160</a></div></div>
1012
1022
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">SVF::ObjTypeInfo::FUNCTION_OBJ</a></div><div class="ttdeci">@ FUNCTION_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00489">SymbolTableInfo.h:489</a></div></div>
1013
1023
  <div class="ttc" id="anamespaceSVF_html_a8ad3aa124fabddc2fdd07c50403d70a9"><div class="ttname"><a href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">SVF::ConstantDataSequential</a></div><div class="ttdeci">llvm::ConstantDataSequential ConstantDataSequential</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
1014
1024
  <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a26b5e09e10448694435f74a8b622a7e8"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">SVF::NodeIDAllocator::allocateValueId</a></div><div class="ttdeci">NodeID allocateValueId(void)</div><div class="ttdoc">Allocate a value ID as determined by the strategy.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00128">NodeIDAllocator.cpp:128</a></div></div>
1015
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a31190ba1934f945abe8a1b4fcbb636b3"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">SVF::SymbolTableBuilder::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00576">SymbolTableBuilder.cpp:576</a></div></div>
1025
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a31190ba1934f945abe8a1b4fcbb636b3"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">SVF::SymbolTableBuilder::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00577">SymbolTableBuilder.cpp:577</a></div></div>
1016
1026
  <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a5db9e476132b0a653c7995b61def4065"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a5db9e476132b0a653c7995b61def4065">SVF::SymbolTableBuilder::createBlkObj</a></div><div class="ttdeci">MemObj * createBlkObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00046">SymbolTableBuilder.cpp:46</a></div></div>
1017
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00387">SymbolTableBuilder.cpp:387</a></div></div>
1027
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_abe39a7a3557899b4991bcc60d436dc50"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">SVF::SymbolTableBuilder::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00388">SymbolTableBuilder.cpp:388</a></div></div>
1018
1028
  <div class="ttc" id="anamespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
1019
1029
  <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>
1020
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a72732ec0392d9d5b900fc12177890779"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">SVF::SymbolTableBuilder::handleGlobalCE</a></div><div class="ttdeci">void handleGlobalCE(const GlobalVariable *G)</div><div class="ttdoc">Handle constant expression.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00479">SymbolTableBuilder.cpp:479</a></div></div>
1030
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a72732ec0392d9d5b900fc12177890779"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">SVF::SymbolTableBuilder::handleGlobalCE</a></div><div class="ttdeci">void handleGlobalCE(const GlobalVariable *G)</div><div class="ttdoc">Handle constant expression.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00480">SymbolTableBuilder.cpp:480</a></div></div>
1021
1031
  <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>
1022
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a889af96532c273bb91f59abf6433b04c"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c">SVF::SymbolTableBuilder::analyzeHeapAllocByteSize</a></div><div class="ttdeci">u32_t analyzeHeapAllocByteSize(const Value *val)</div><div class="ttdoc">Analyze byte size of heap alloc function (e.g. malloc/calloc/...)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00686">SymbolTableBuilder.cpp:686</a></div></div>
1032
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a889af96532c273bb91f59abf6433b04c"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a889af96532c273bb91f59abf6433b04c">SVF::SymbolTableBuilder::analyzeHeapAllocByteSize</a></div><div class="ttdeci">u32_t analyzeHeapAllocByteSize(const Value *val)</div><div class="ttdoc">Analyze byte size of heap alloc function (e.g. malloc/calloc/...)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00689">SymbolTableBuilder.cpp:689</a></div></div>
1023
1033
  <div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00040">SVFModule.h:40</a></div></div>
1024
1034
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">SVF::ObjTypeInfo::CONST_GLOBAL_OBJ</a></div><div class="ttdeci">@ CONST_GLOBAL_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00498">SymbolTableInfo.h:498</a></div></div>
1025
1035
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
@@ -1032,26 +1042,27 @@ $(function() {
1032
1042
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html">SVF::LLVMModuleSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00044">LLVMModule.h:44</a></div></div>
1033
1043
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdeci">@ HASPTR_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00500">SymbolTableInfo.h:500</a></div></div>
1034
1044
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_aff17d13e520a731accedd06350af6221"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">SVF::ObjTypeInfo::setNumOfElements</a></div><div class="ttdeci">void setNumOfElements(u32_t num)</div><div class="ttdoc">Set the number of elements of this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00548">SymbolTableInfo.h:548</a></div></div>
1045
+ <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>
1046
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae368713463c84425f9a1ad27ff401a47"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47">SVF::LLVMUtil::getTypeOfHeapAlloc</a></div><div class="ttdeci">const Type * getTypeOfHeapAlloc(const Instruction *inst)</div><div class="ttdoc">Get the type of the heap allocation.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00441">LLVMUtil.cpp:441</a></div></div>
1035
1047
  <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>
1036
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_a9fca576448cc1cb38c894a7ae3d9ec56"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">SVF::SymbolTableBuilder::analyzeHeapObjType</a></div><div class="ttdeci">void analyzeHeapObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00756">SymbolTableBuilder.cpp:756</a></div></div>
1037
1048
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">SVF::ObjTypeInfo::GLOBVAR_OBJ</a></div><div class="ttdeci">@ GLOBVAR_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00490">SymbolTableInfo.h:490</a></div></div>
1038
1049
  <div class="ttc" id="aNodeIDAllocator_8h_html"><div class="ttname"><a href="NodeIDAllocator_8h.html">NodeIDAllocator.h</a></div></div>
1039
1050
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a93ac673b885633849fa484938405ca75"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00454">SVFUtil.h:454</a></div></div>
1040
1051
  <div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_afdd77bc1fca91f70b2ec362f1dacd392"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#afdd77bc1fca91f70b2ec362f1dacd392">SVF::LLVMModuleSet::getSVFValue</a></div><div class="ttdeci">SVFValue * getSVFValue(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01238">LLVMModule.cpp:1238</a></div></div>
1041
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6c5f2f951463494af2e7b0d3267f2772"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6c5f2f951463494af2e7b0d3267f2772">SVF::LLVMUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const CallBase *cs)</div><div class="ttdoc">Get the reference type of heap/static object from an allocation site.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00131">LLVMUtil.h:131</a></div></div>
1042
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5fc50624b5fe83b676b14bec4b99685"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">SVF::LLVMUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00234">LLVMUtil.h:234</a></div></div>
1052
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6c5f2f951463494af2e7b0d3267f2772"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6c5f2f951463494af2e7b0d3267f2772">SVF::LLVMUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const CallBase *cs)</div><div class="ttdoc">Get the reference type of heap/static object from an allocation site.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00135">LLVMUtil.h:135</a></div></div>
1053
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab5fc50624b5fe83b676b14bec4b99685"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab5fc50624b5fe83b676b14bec4b99685">SVF::LLVMUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00239">LLVMUtil.h:239</a></div></div>
1043
1054
  <div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
1044
1055
  <div class="ttc" id="aclassSVF_1_1Options_html_a18dd95e01a50aa82165c46a3801053c5"><div class="ttname"><a href="classSVF_1_1Options.html#a18dd95e01a50aa82165c46a3801053c5">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const Option&lt; bool &gt; ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00218">Options.h:218</a></div></div>
1045
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a215cc9fd716798bbb7f96f5b64e01349"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">SVF::LLVMUtil::isUnaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isUnaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00320">LLVMUtil.h:320</a></div></div>
1056
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a215cc9fd716798bbb7f96f5b64e01349"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a215cc9fd716798bbb7f96f5b64e01349">SVF::LLVMUtil::isUnaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isUnaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00325">LLVMUtil.h:325</a></div></div>
1046
1057
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">SVF::ObjTypeInfo::VAR_ARRAY_OBJ</a></div><div class="ttdeci">@ VAR_ARRAY_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00495">SymbolTableInfo.h:495</a></div></div>
1047
1058
  <div class="ttc" id="aSVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DBUG model of each pass.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00576">SVFType.h:576</a></div></div>
1048
1059
  <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_aef0bb1e88d0b69313c673318f7b7cb5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#aef0bb1e88d0b69313c673318f7b7cb5f">SVF::SymbolTableBuilder::buildMemModel</a></div><div class="ttdeci">void buildMemModel(SVFModule *svfModule)</div><div class="ttdoc">Start building memory model.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00074">SymbolTableBuilder.cpp:74</a></div></div>
1049
- <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_ae938564e6a36848cb848a5badc15a1de"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value, const Type *ty)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00794">SymbolTableBuilder.cpp:794</a></div></div>
1060
+ <div class="ttc" id="aclassSVF_1_1SymbolTableBuilder_html_ae938564e6a36848cb848a5badc15a1de"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value, const Type *ty)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00808">SymbolTableBuilder.cpp:808</a></div></div>
1050
1061
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">SVF::ObjTypeInfo::VAR_STRUCT_OBJ</a></div><div class="ttdeci">@ VAR_STRUCT_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00494">SymbolTableInfo.h:494</a></div></div>
1051
1062
  <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abf4e75ba6236136399d45c85be2328fe"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abf4e75ba6236136399d45c85be2328fe">SVF::LLVMUtil::isBlackholeSym</a></div><div class="ttdeci">bool isBlackholeSym(const Value *val)</div><div class="ttdoc">Check whether this value is a black hole.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00108">LLVMUtil.h:108</a></div></div>
1052
1063
  <div class="ttc" id="aclassSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00380">SymbolTableInfo.h:380</a></div></div>
1053
1064
  <div class="ttc" id="aSymbolTableBuilder_8h_html"><div class="ttname"><a href="SymbolTableBuilder_8h.html">SymbolTableBuilder.h</a></div></div>
1054
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa0b3e34188f721ff7145e47cb607c79a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">SVF::LLVMUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00298">LLVMUtil.h:298</a></div></div>
1065
+ <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa0b3e34188f721ff7145e47cb607c79a"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa0b3e34188f721ff7145e47cb607c79a">SVF::LLVMUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00303">LLVMUtil.h:303</a></div></div>
1055
1066
  <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>
1056
1067
  <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>
1057
1068
  <div class="ttc" id="aclassSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">SVF::ObjTypeInfo::CONST_STRUCT_OBJ</a></div><div class="ttdeci">@ CONST_STRUCT_OBJ</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00496">SymbolTableInfo.h:496</a></div></div>