svf-tools 1.0.829 → 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 (386) 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 +1138 -1066
  29. package/SVF-doxygen/html/LLVMUtil_8h.html +2 -0
  30. package/SVF-doxygen/html/LLVMUtil_8h_source.html +419 -414
  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 +653 -651
  58. package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +17 -17
  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 -29
  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.html +634 -631
  141. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +125 -124
  142. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  143. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  144. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  145. package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
  146. package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +2 -2
  147. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  148. package/SVF-doxygen/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  149. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  150. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  151. package/SVF-doxygen/html/functions_func_g.html +10 -10
  152. package/SVF-doxygen/html/functions_func_p.html +1 -1
  153. package/SVF-doxygen/html/functions_g.html +6 -6
  154. package/SVF-doxygen/html/functions_r.html +2 -2
  155. package/SVF-doxygen/html/functions_s.html +5 -5
  156. package/SVF-doxygen/html/functions_t.html +7 -7
  157. package/SVF-doxygen/html/functions_v.html +3 -1
  158. package/SVF-doxygen/html/functions_w.html +8 -8
  159. package/SVF-doxygen/html/namespaceSVF.html +43 -25
  160. package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1233 -1138
  161. package/SVF-doxygen/html/namespacemembers_func_g.html +6 -3
  162. package/SVF-doxygen/html/namespacemembers_g.html +10 -4
  163. package/SVF-doxygen/html/namespacemembers_type_g.html +3 -0
  164. package/SVF-doxygen/html/search/all_10.js +324 -324
  165. package/SVF-doxygen/html/search/all_11.js +223 -223
  166. package/SVF-doxygen/html/search/all_12.js +553 -553
  167. package/SVF-doxygen/html/search/all_13.js +192 -192
  168. package/SVF-doxygen/html/search/all_14.js +67 -67
  169. package/SVF-doxygen/html/search/all_15.js +167 -167
  170. package/SVF-doxygen/html/search/all_16.js +63 -63
  171. package/SVF-doxygen/html/search/all_17.js +1 -1
  172. package/SVF-doxygen/html/search/all_18.js +1 -1
  173. package/SVF-doxygen/html/search/all_19.js +11 -11
  174. package/SVF-doxygen/html/search/all_1a.js +172 -172
  175. package/SVF-doxygen/html/search/all_7.js +895 -893
  176. package/SVF-doxygen/html/search/all_8.js +198 -198
  177. package/SVF-doxygen/html/search/all_9.js +607 -607
  178. package/SVF-doxygen/html/search/all_a.js +46 -46
  179. package/SVF-doxygen/html/search/all_b.js +26 -26
  180. package/SVF-doxygen/html/search/all_c.js +115 -115
  181. package/SVF-doxygen/html/search/all_d.js +198 -198
  182. package/SVF-doxygen/html/search/all_e.js +207 -207
  183. package/SVF-doxygen/html/search/all_f.js +116 -116
  184. package/SVF-doxygen/html/search/classes_0.js +26 -26
  185. package/SVF-doxygen/html/search/classes_1.js +9 -9
  186. package/SVF-doxygen/html/search/classes_10.js +73 -73
  187. package/SVF-doxygen/html/search/classes_11.js +15 -15
  188. package/SVF-doxygen/html/search/classes_12.js +2 -2
  189. package/SVF-doxygen/html/search/classes_13.js +10 -10
  190. package/SVF-doxygen/html/search/classes_14.js +14 -14
  191. package/SVF-doxygen/html/search/classes_15.js +1 -1
  192. package/SVF-doxygen/html/search/classes_2.js +80 -80
  193. package/SVF-doxygen/html/search/classes_3.js +37 -37
  194. package/SVF-doxygen/html/search/classes_4.js +9 -9
  195. package/SVF-doxygen/html/search/classes_5.js +28 -28
  196. package/SVF-doxygen/html/search/classes_6.js +104 -104
  197. package/SVF-doxygen/html/search/classes_7.js +34 -34
  198. package/SVF-doxygen/html/search/classes_8.js +56 -56
  199. package/SVF-doxygen/html/search/classes_9.js +1 -1
  200. package/SVF-doxygen/html/search/classes_a.js +12 -12
  201. package/SVF-doxygen/html/search/classes_b.js +29 -29
  202. package/SVF-doxygen/html/search/classes_c.js +6 -6
  203. package/SVF-doxygen/html/search/classes_d.js +18 -18
  204. package/SVF-doxygen/html/search/classes_e.js +36 -36
  205. package/SVF-doxygen/html/search/classes_f.js +25 -25
  206. package/SVF-doxygen/html/search/defines_0.js +3 -3
  207. package/SVF-doxygen/html/search/defines_1.js +2 -2
  208. package/SVF-doxygen/html/search/defines_2.js +30 -30
  209. package/SVF-doxygen/html/search/defines_3.js +21 -21
  210. package/SVF-doxygen/html/search/defines_4.js +2 -2
  211. package/SVF-doxygen/html/search/defines_5.js +4 -4
  212. package/SVF-doxygen/html/search/defines_6.js +2 -2
  213. package/SVF-doxygen/html/search/defines_7.js +5 -5
  214. package/SVF-doxygen/html/search/defines_8.js +11 -11
  215. package/SVF-doxygen/html/search/defines_9.js +9 -9
  216. package/SVF-doxygen/html/search/defines_a.js +2 -2
  217. package/SVF-doxygen/html/search/defines_b.js +1 -1
  218. package/SVF-doxygen/html/search/defines_c.js +3 -3
  219. package/SVF-doxygen/html/search/defines_d.js +2 -2
  220. package/SVF-doxygen/html/search/defines_e.js +7 -7
  221. package/SVF-doxygen/html/search/defines_f.js +3 -3
  222. package/SVF-doxygen/html/search/enums_0.js +3 -3
  223. package/SVF-doxygen/html/search/enums_1.js +2 -2
  224. package/SVF-doxygen/html/search/enums_10.js +1 -1
  225. package/SVF-doxygen/html/search/enums_11.js +1 -1
  226. package/SVF-doxygen/html/search/enums_2.js +8 -8
  227. package/SVF-doxygen/html/search/enums_3.js +1 -1
  228. package/SVF-doxygen/html/search/enums_4.js +3 -3
  229. package/SVF-doxygen/html/search/enums_5.js +1 -1
  230. package/SVF-doxygen/html/search/enums_6.js +2 -2
  231. package/SVF-doxygen/html/search/enums_7.js +2 -2
  232. package/SVF-doxygen/html/search/enums_8.js +4 -4
  233. package/SVF-doxygen/html/search/enums_9.js +1 -1
  234. package/SVF-doxygen/html/search/enums_a.js +1 -1
  235. package/SVF-doxygen/html/search/enums_b.js +7 -7
  236. package/SVF-doxygen/html/search/enums_c.js +1 -1
  237. package/SVF-doxygen/html/search/enums_d.js +4 -4
  238. package/SVF-doxygen/html/search/enums_e.js +2 -2
  239. package/SVF-doxygen/html/search/enums_f.js +4 -4
  240. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  241. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  242. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  243. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  244. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  245. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  246. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  247. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  248. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  249. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  250. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  251. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  252. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  253. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  254. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  255. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  256. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  257. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  258. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  259. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  260. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  261. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  262. package/SVF-doxygen/html/search/files_0.js +13 -13
  263. package/SVF-doxygen/html/search/files_1.js +7 -7
  264. package/SVF-doxygen/html/search/files_10.js +8 -8
  265. package/SVF-doxygen/html/search/files_11.js +8 -8
  266. package/SVF-doxygen/html/search/files_12.js +2 -2
  267. package/SVF-doxygen/html/search/files_2.js +55 -55
  268. package/SVF-doxygen/html/search/files_3.js +14 -14
  269. package/SVF-doxygen/html/search/files_4.js +5 -5
  270. package/SVF-doxygen/html/search/files_5.js +13 -13
  271. package/SVF-doxygen/html/search/files_6.js +9 -9
  272. package/SVF-doxygen/html/search/files_7.js +14 -14
  273. package/SVF-doxygen/html/search/files_8.js +13 -13
  274. package/SVF-doxygen/html/search/files_9.js +18 -18
  275. package/SVF-doxygen/html/search/files_a.js +3 -3
  276. package/SVF-doxygen/html/search/files_b.js +2 -2
  277. package/SVF-doxygen/html/search/files_c.js +20 -20
  278. package/SVF-doxygen/html/search/files_d.js +4 -4
  279. package/SVF-doxygen/html/search/files_e.js +62 -62
  280. package/SVF-doxygen/html/search/files_f.js +8 -8
  281. package/SVF-doxygen/html/search/functions_0.js +13 -13
  282. package/SVF-doxygen/html/search/functions_1.js +360 -360
  283. package/SVF-doxygen/html/search/functions_10.js +140 -140
  284. package/SVF-doxygen/html/search/functions_11.js +139 -139
  285. package/SVF-doxygen/html/search/functions_12.js +288 -288
  286. package/SVF-doxygen/html/search/functions_13.js +59 -59
  287. package/SVF-doxygen/html/search/functions_14.js +39 -39
  288. package/SVF-doxygen/html/search/functions_15.js +71 -71
  289. package/SVF-doxygen/html/search/functions_16.js +32 -32
  290. package/SVF-doxygen/html/search/functions_17.js +3 -3
  291. package/SVF-doxygen/html/search/functions_18.js +172 -172
  292. package/SVF-doxygen/html/search/functions_2.js +89 -89
  293. package/SVF-doxygen/html/search/functions_3.js +258 -258
  294. package/SVF-doxygen/html/search/functions_4.js +78 -78
  295. package/SVF-doxygen/html/search/functions_5.js +53 -53
  296. package/SVF-doxygen/html/search/functions_6.js +60 -60
  297. package/SVF-doxygen/html/search/functions_7.js +857 -856
  298. package/SVF-doxygen/html/search/functions_8.js +149 -149
  299. package/SVF-doxygen/html/search/functions_9.js +423 -423
  300. package/SVF-doxygen/html/search/functions_a.js +30 -30
  301. package/SVF-doxygen/html/search/functions_b.js +2 -2
  302. package/SVF-doxygen/html/search/functions_c.js +25 -25
  303. package/SVF-doxygen/html/search/functions_d.js +79 -79
  304. package/SVF-doxygen/html/search/functions_e.js +35 -35
  305. package/SVF-doxygen/html/search/functions_f.js +56 -56
  306. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  307. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  308. package/SVF-doxygen/html/search/related_0.js +2 -2
  309. package/SVF-doxygen/html/search/related_1.js +2 -2
  310. package/SVF-doxygen/html/search/related_2.js +2 -2
  311. package/SVF-doxygen/html/search/related_3.js +2 -2
  312. package/SVF-doxygen/html/search/related_4.js +2 -2
  313. package/SVF-doxygen/html/search/related_5.js +1 -1
  314. package/SVF-doxygen/html/search/related_6.js +2 -2
  315. package/SVF-doxygen/html/search/related_7.js +4 -4
  316. package/SVF-doxygen/html/search/related_8.js +2 -2
  317. package/SVF-doxygen/html/search/related_9.js +4 -4
  318. package/SVF-doxygen/html/search/related_a.js +19 -19
  319. package/SVF-doxygen/html/search/related_b.js +4 -4
  320. package/SVF-doxygen/html/search/related_c.js +2 -2
  321. package/SVF-doxygen/html/search/related_d.js +12 -12
  322. package/SVF-doxygen/html/search/related_e.js +2 -2
  323. package/SVF-doxygen/html/search/related_f.js +2 -2
  324. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  325. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  326. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  327. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  328. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  329. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  330. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  331. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  332. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  333. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  334. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  335. package/SVF-doxygen/html/search/typedefs_6.js +56 -55
  336. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  337. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  338. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  339. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  340. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  341. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  342. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  343. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  344. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  345. package/SVF-doxygen/html/search/variables_0.js +151 -151
  346. package/SVF-doxygen/html/search/variables_1.js +75 -75
  347. package/SVF-doxygen/html/search/variables_10.js +97 -97
  348. package/SVF-doxygen/html/search/variables_11.js +44 -44
  349. package/SVF-doxygen/html/search/variables_12.js +92 -92
  350. package/SVF-doxygen/html/search/variables_13.js +76 -76
  351. package/SVF-doxygen/html/search/variables_14.js +14 -14
  352. package/SVF-doxygen/html/search/variables_15.js +48 -48
  353. package/SVF-doxygen/html/search/variables_16.js +9 -9
  354. package/SVF-doxygen/html/search/variables_17.js +1 -1
  355. package/SVF-doxygen/html/search/variables_18.js +2 -2
  356. package/SVF-doxygen/html/search/variables_2.js +38 -38
  357. package/SVF-doxygen/html/search/variables_3.js +142 -142
  358. package/SVF-doxygen/html/search/variables_4.js +55 -55
  359. package/SVF-doxygen/html/search/variables_5.js +37 -37
  360. package/SVF-doxygen/html/search/variables_6.js +66 -66
  361. package/SVF-doxygen/html/search/variables_7.js +34 -34
  362. package/SVF-doxygen/html/search/variables_8.js +7 -7
  363. package/SVF-doxygen/html/search/variables_9.js +78 -78
  364. package/SVF-doxygen/html/search/variables_a.js +4 -4
  365. package/SVF-doxygen/html/search/variables_b.js +10 -10
  366. package/SVF-doxygen/html/search/variables_c.js +45 -45
  367. package/SVF-doxygen/html/search/variables_d.js +56 -56
  368. package/SVF-doxygen/html/search/variables_e.js +123 -123
  369. package/SVF-doxygen/html/search/variables_f.js +30 -30
  370. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  371. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  372. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  373. package/package.json +1 -1
  374. package/svf/include/MemoryModel/AccessPath.h +2 -2
  375. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +2 -2
  376. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +4 -4
  377. package/svf/lib/MemoryModel/AccessPath.cpp +6 -5
  378. package/svf/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  379. package/svf/lib/SVFIR/SVFType.cpp +1 -0
  380. package/svf/lib/SVFIR/SymbolTableInfo.cpp +1 -0
  381. package/svf-llvm/include/SVF-LLVM/BasicTypes.h +1 -0
  382. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +6 -0
  383. package/svf-llvm/lib/LLVMModule.cpp +1 -0
  384. package/svf-llvm/lib/LLVMUtil.cpp +70 -0
  385. package/svf-llvm/lib/SVFIRBuilder.cpp +3 -1
  386. package/svf-llvm/lib/SymbolTableBuilder.cpp +4 -1
@@ -303,650 +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#a86e051b7423b9e6cc3c96ccddb0ad345"> 756</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>
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; <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>
783
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</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>
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; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ArrayType&gt;(objTy))</div>
786
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">return</span> getNumOfElements(objTy);</div>
787
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</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>
788
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; {</div>
789
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">getClassNameFromType</a>(st).empty())</div>
790
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">return</span> getNumOfElements(objTy);</div>
791
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">else</span></div>
792
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</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>
793
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; }</div>
794
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div>
795
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">else</span></div>
796
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; {</div>
797
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</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>
798
- <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#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div>
799
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div>
800
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">return</span> typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div>
801
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;}</div>
802
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; </div>
803
- <div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7"> 787</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>
804
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;{</div>
805
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</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>
806
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div>
807
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</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>
808
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</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>
809
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; analyzeObjType(typeinfo,castUse);</div>
810
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
811
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">else</span></div>
812
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
813
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</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>
814
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</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>
815
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; }</div>
816
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;}</div>
817
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; </div>
818
- <div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#ae938564e6a36848cb848a5badc15a1de"> 805</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>
819
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* objTy)</div>
820
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;{</div>
821
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; </div>
822
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemNum = 1;</div>
823
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="comment">// init byteSize = 0, If byteSize is changed in the following process,</span></div>
824
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// it means that ObjTypeInfo has a Constant Byte Size</span></div>
825
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteSize = 0;</div>
826
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="comment">// Global variable</span></div>
827
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// if val is Function Obj, byteSize is not set</span></div>
828
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div>
829
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; {</div>
830
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</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>
831
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; analyzeObjType(typeinfo,val);</div>
832
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; elemNum = getNumOfElements(objTy);</div>
833
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
834
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</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>
835
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; {</div>
836
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</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>
837
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; analyzeObjType(typeinfo,val);</div>
838
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</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>
839
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
840
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; elemNum = sz-&gt;getZExtValue() * getNumOfElements(objTy);</div>
841
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</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>
842
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div>
843
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">else</span></div>
844
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; {</div>
845
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; elemNum = getNumOfElements(objTy);</div>
846
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; byteSize = 0;</div>
847
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div>
848
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div>
849
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div>
850
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div>
851
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</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>
852
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(val))</div>
853
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</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>
854
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; analyzeObjType(typeinfo,val);</div>
855
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; elemNum = getNumOfElements(objTy);</div>
856
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</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>
857
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div>
858
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp;</div>
859
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(</div>
860
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getSVFInstruction(</div>
861
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; SVFUtil::cast&lt;Instruction&gt;(val))))</div>
862
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; {</div>
863
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; elemNum = analyzeHeapObjType(typeinfo,val);</div>
864
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="comment">// analyze heap alloc like (malloc/calloc/...), the alloc functions have</span></div>
865
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="comment">// annotation like &quot;AllocSize:Arg1&quot;. Please refer to extapi.c.</span></div>
866
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">// e.g. calloc(4, 10), annotation is &quot;AllocSize:Arg0*Arg1&quot;,</span></div>
867
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="comment">// it means byteSize = 4 (Arg0) * 10 (Arg1) = 40</span></div>
868
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; byteSize = analyzeHeapAllocByteSize(val);</div>
869
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; }</div>
870
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</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>
871
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; {</div>
872
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; analyzeStaticObjType(typeinfo,val);</div>
873
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div>
874
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; elemNum = typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>();</div>
875
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</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>
876
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; }</div>
877
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</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>
878
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; {</div>
879
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</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>
880
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; elemNum = getNumOfFlattenElements(val-&gt;getType());</div>
881
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</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>
882
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div>
883
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">else</span></div>
884
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; {</div>
885
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; assert(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div>
886
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; abort();</div>
887
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div>
888
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; </div>
889
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div>
890
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span>(typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; elemNum)</div>
891
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aff17d13e520a731accedd06350af6221">setNumOfElements</a>(elemNum);</div>
892
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; </div>
893
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="comment">// set ByteSize. If ByteSize &gt; 0, this typeinfo has constant type.</span></div>
894
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="comment">// If ByteSize == 0, this typeinfo has 1) zero byte 2) non-const byte size</span></div>
895
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="comment">// If ByteSize&gt;MaxFieldLimit, set MaxFieldLimit to the byteSize;</span></div>
896
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</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>
897
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ac093156bfb46c07675ae201f449cdca0">setByteSizeOfObj</a>(byteSize);</div>
898
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;}</div>
899
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; </div>
900
- <div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a674b84d529c762af3a45e7d4ce4d543d"> 898</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>
901
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;{</div>
902
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; assert(ety &amp;&amp; <span class="stringliteral">&quot;type is null?&quot;</span>);</div>
903
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div>
904
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType, ArrayType&gt;(ety))</div>
905
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; {</div>
906
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; numOfFields = getNumOfFlattenElements(ety);</div>
907
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; }</div>
908
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">return</span> numOfFields;</div>
909
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;}</div>
910
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; </div>
911
- <div class="line"><a name="l00910"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#a603cf580467b32df5fad94ade3287b0f"> 910</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>
912
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;{</div>
913
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
914
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">return</span> getOrAddSVFTypeInfo(T)-&gt;getNumOfFlattenElements();</div>
915
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">else</span></div>
916
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">return</span> getOrAddSVFTypeInfo(T)-&gt;getNumOfFlattenFields();</div>
917
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;}</div>
918
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; </div>
919
- <div class="line"><a name="l00918"></a><span class="lineno"><a class="line" href="classSVF_1_1SymbolTableBuilder.html#af7aae2e2851c948f85600066a5a394ca"> 918</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>
920
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;{</div>
921
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</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>
922
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;}</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
+ <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">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>
903
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</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>
923
925
  </div><!-- fragment --></div><!-- contents -->
924
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>
925
- <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>
926
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>
927
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>
928
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>
929
- <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#l00787">SymbolTableBuilder.cpp:787</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>
930
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>
931
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>
932
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>
933
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>
934
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>
935
- <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>
936
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>
937
- <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>
938
940
  <div class="ttc" id="aLLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
939
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>
940
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>
941
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>
942
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>
943
- <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>
944
- <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>
945
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>
946
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>
947
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>
948
- <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>
949
- <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>
950
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>
951
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>
952
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>
@@ -954,16 +956,16 @@ $(function() {
954
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>
955
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>
956
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>
957
- <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#l00918">SymbolTableBuilder.cpp:918</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>
958
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>
959
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>
960
- <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#l00910">SymbolTableBuilder.cpp:910</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>
961
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>
962
- <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#l00898">SymbolTableBuilder.cpp:898</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>
963
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>
964
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>
965
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>
966
- <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>
967
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>
968
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>
969
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>
@@ -981,53 +983,53 @@ $(function() {
981
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>
982
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>
983
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>
984
- <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>
985
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>
986
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>
987
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>
988
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>
989
- <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>
990
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>
991
- <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>
992
- <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>
993
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>
994
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>
995
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>
996
998
  <div class="ttc" id="aBasicTypes_8h_html"><div class="ttname"><a href="BasicTypes_8h.html">BasicTypes.h</a></div></div>
997
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>
998
- <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>
999
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>
1000
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>
1001
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>
1002
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>
1003
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>
1004
- <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>
1005
- <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>
1006
1008
  <div class="ttc" id="aSVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
1007
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>
1008
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>
1009
- <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>
1010
- <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>
1011
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>
1012
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>
1013
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>
1014
- <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>
1015
- <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#l00756">SymbolTableBuilder.cpp:756</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>
1016
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>
1017
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>
1018
- <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>
1019
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>
1020
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>
1021
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>
1022
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>
1023
- <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>
1024
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>
1025
- <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>
1026
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>
1027
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>
1028
- <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>
1029
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>
1030
- <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>
1031
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>
1032
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>
1033
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>
@@ -1040,27 +1042,27 @@ $(function() {
1040
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>
1041
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>
1042
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>
1043
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a207fe02ded216fd0412fc894e13bee6e"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a207fe02ded216fd0412fc894e13bee6e">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01171">LLVMUtil.cpp:1171</a></div></div>
1044
- <div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae368713463c84425f9a1ad27ff401a47"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47">SVF::LLVMUtil::getTypeOfHeapAlloc</a></div><div class="ttdeci">const Type * getTypeOfHeapAlloc(const Instruction *inst)</div><div class="ttdoc">Get the type of the heap allocation.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00375">LLVMUtil.cpp:375</a></div></div>
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>
1045
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>
1046
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>
1047
1049
  <div class="ttc" id="aNodeIDAllocator_8h_html"><div class="ttname"><a href="NodeIDAllocator_8h.html">NodeIDAllocator.h</a></div></div>
1048
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>
1049
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>
1050
- <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>
1051
- <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>
1052
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>
1053
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>
1054
- <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>
1055
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>
1056
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>
1057
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>
1058
- <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#l00805">SymbolTableBuilder.cpp:805</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>
1059
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>
1060
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>
1061
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>
1062
1064
  <div class="ttc" id="aSymbolTableBuilder_8h_html"><div class="ttname"><a href="SymbolTableBuilder_8h.html">SymbolTableBuilder.h</a></div></div>
1063
- <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>
1064
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>
1065
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>
1066
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>