svf-tools 1.0.372 → 1.0.376

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 (254) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -6
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +10 -10
  4. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
  9. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +15 -15
  14. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +7 -7
  16. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +7 -7
  17. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -10
  20. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  21. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +6 -6
  22. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/LLVMUtil_8h.html +3 -3
  25. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +11 -11
  28. package/SVF-doxygen/html/html/LocationSet_8h_source.html +10 -11
  29. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +10 -10
  30. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/Options_8cpp_source.html +22 -21
  32. package/SVF-doxygen/html/html/Options_8h_source.html +22 -21
  33. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +17 -17
  35. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
  37. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  38. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +11 -11
  39. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +14 -14
  40. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -10
  42. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +72 -73
  43. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +37 -35
  44. package/SVF-doxygen/html/html/SVFIR_8h_source.html +66 -68
  45. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +5 -5
  48. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +18 -19
  50. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +121 -127
  51. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  52. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +39 -30
  54. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +10 -7
  55. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +93 -53
  56. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +82 -85
  57. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  58. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +17 -16
  60. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  62. package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -7
  63. package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
  64. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  65. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  66. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  67. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  69. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  70. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +8 -8
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +8 -8
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
  73. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -6
  74. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +3 -3
  75. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -13
  76. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  77. package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  79. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +22 -25
  81. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +16 -25
  82. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +22 -25
  83. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +17 -26
  84. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +23 -26
  85. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +17 -26
  86. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  87. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
  89. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +6 -6
  90. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  91. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  92. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +12 -12
  93. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +22 -25
  94. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +18 -27
  95. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +21 -24
  96. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +18 -27
  97. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +22 -25
  98. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +19 -28
  99. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  100. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +10 -10
  101. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
  102. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +17 -17
  103. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +24 -27
  107. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +42 -51
  108. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +12 -12
  109. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +30 -35
  110. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +34 -106
  111. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
  113. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  115. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +15 -16
  117. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +47 -81
  118. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
  119. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +87 -87
  120. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +7 -8
  123. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +162 -211
  124. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +22 -25
  125. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +23 -32
  126. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +55 -54
  128. package/SVF-doxygen/html/html/classSVF_1_1Options.html +47 -21
  129. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  130. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
  131. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +18 -18
  132. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +30 -30
  134. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +22 -25
  135. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +18 -27
  136. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +4 -4
  138. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +214 -227
  139. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +82 -83
  140. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +582 -529
  141. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +23 -26
  143. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +54 -151
  144. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
  145. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +43 -43
  147. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +10 -7
  148. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +182 -72
  149. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +9 -11
  150. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +131 -162
  151. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  152. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +26 -25
  154. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  155. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
  156. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +21 -24
  157. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +16 -25
  158. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +22 -25
  159. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +18 -27
  160. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +7 -7
  161. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +5 -5
  162. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
  163. package/SVF-doxygen/html/html/functions_a.html +24 -24
  164. package/SVF-doxygen/html/html/functions_c.html +1 -1
  165. package/SVF-doxygen/html/html/functions_f.html +19 -22
  166. package/SVF-doxygen/html/html/functions_func.html +24 -24
  167. package/SVF-doxygen/html/html/functions_func_c.html +1 -1
  168. package/SVF-doxygen/html/html/functions_func_g.html +20 -23
  169. package/SVF-doxygen/html/html/functions_func_h.html +1 -1
  170. package/SVF-doxygen/html/html/functions_func_i.html +11 -17
  171. package/SVF-doxygen/html/html/functions_func_l.html +2 -2
  172. package/SVF-doxygen/html/html/functions_func_o.html +4 -4
  173. package/SVF-doxygen/html/html/functions_func_r.html +5 -2
  174. package/SVF-doxygen/html/html/functions_g.html +18 -21
  175. package/SVF-doxygen/html/html/functions_h.html +1 -1
  176. package/SVF-doxygen/html/html/functions_i.html +12 -21
  177. package/SVF-doxygen/html/html/functions_l.html +8 -8
  178. package/SVF-doxygen/html/html/functions_m.html +4 -1
  179. package/SVF-doxygen/html/html/functions_o.html +22 -18
  180. package/SVF-doxygen/html/html/functions_p.html +3 -3
  181. package/SVF-doxygen/html/html/functions_r.html +5 -2
  182. package/SVF-doxygen/html/html/functions_rela.html +2 -1
  183. package/SVF-doxygen/html/html/functions_s.html +6 -5
  184. package/SVF-doxygen/html/html/functions_t.html +4 -4
  185. package/SVF-doxygen/html/html/functions_v.html +3 -3
  186. package/SVF-doxygen/html/html/functions_vars_f.html +0 -3
  187. package/SVF-doxygen/html/html/functions_vars_i.html +3 -6
  188. package/SVF-doxygen/html/html/functions_vars_m.html +3 -0
  189. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  190. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +8 -8
  191. package/SVF-doxygen/html/html/namespacemembers_func.html +1 -1
  192. package/SVF-doxygen/html/html/namespacemembers_s.html +1 -1
  193. package/SVF-doxygen/html/html/search/all_1.js +22 -22
  194. package/SVF-doxygen/html/html/search/all_10.js +4 -4
  195. package/SVF-doxygen/html/html/search/all_12.js +5 -4
  196. package/SVF-doxygen/html/html/search/all_13.js +6 -6
  197. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  198. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  199. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  200. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  201. package/SVF-doxygen/html/html/search/all_6.js +0 -1
  202. package/SVF-doxygen/html/html/search/all_7.js +9 -9
  203. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  204. package/SVF-doxygen/html/html/search/all_9.js +2 -5
  205. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  206. package/SVF-doxygen/html/html/search/all_d.js +1 -0
  207. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  208. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  209. package/SVF-doxygen/html/html/search/functions_0.js +22 -22
  210. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  211. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  212. package/SVF-doxygen/html/html/search/functions_6.js +9 -9
  213. package/SVF-doxygen/html/html/search/functions_7.js +1 -1
  214. package/SVF-doxygen/html/html/search/functions_8.js +1 -3
  215. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  216. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  217. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  218. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  219. package/SVF-doxygen/html/html/search/related_9.js +1 -1
  220. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  221. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  222. package/SVF-doxygen/html/html/search/variables_6.js +0 -1
  223. package/SVF-doxygen/html/html/search/variables_9.js +1 -2
  224. package/SVF-doxygen/html/html/search/variables_d.js +1 -0
  225. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  226. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  227. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +7 -21
  228. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
  229. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  230. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +4 -4
  231. package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
  232. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
  233. package/include/MemoryModel/LocationSet.h +0 -6
  234. package/include/MemoryModel/SVFIR.h +5 -37
  235. package/include/MemoryModel/SVFStatements.h +1 -1
  236. package/include/MemoryModel/SVFVariables.h +4 -21
  237. package/include/MemoryModel/SymbolTableInfo.h +8 -24
  238. package/include/SVF-FE/LLVMUtil.h +1 -1
  239. package/include/SVF-FE/SVFIRBuilder.h +91 -108
  240. package/include/SVF-FE/SymbolTableBuilder.h +9 -2
  241. package/include/Util/Options.h +1 -0
  242. package/lib/Graphs/ICFG.cpp +1 -47
  243. package/lib/MemoryModel/LocationSet.cpp +7 -3
  244. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  245. package/lib/MemoryModel/SVFIR.cpp +61 -19
  246. package/lib/MemoryModel/SVFVariables.cpp +6 -13
  247. package/lib/MemoryModel/SymbolTableInfo.cpp +57 -68
  248. package/lib/SVF-FE/LLVMUtil.cpp +3 -3
  249. package/lib/SVF-FE/SVFIRBuilder.cpp +83 -136
  250. package/lib/SVF-FE/SymbolTableBuilder.cpp +81 -23
  251. package/lib/Util/Options.cpp +6 -0
  252. package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
  253. package/lib/WPA/AndersenStat.cpp +1 -1
  254. package/package.json +1 -1
@@ -87,9 +87,18 @@ Public Member Functions</h2></td></tr>
87
87
  <tr class="memitem:a92ba9c9671e557ba950c14f418079696"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a> (<a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *typeinfo, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value)</td></tr>
88
88
  <tr class="memdesc:a92ba9c9671e557ba950c14f418079696"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize TypeInfo based on LLVM Value. <a href="#a92ba9c9671e557ba950c14f418079696">More...</a><br /></td></tr>
89
89
  <tr class="separator:a92ba9c9671e557ba950c14f418079696"><td class="memSeparator" colspan="2">&#160;</td></tr>
90
- <tr class="memitem:a403767d4aee3cf36ef9655e734e0b74f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a> (<a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *typeinfo, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
91
- <tr class="memdesc:a403767d4aee3cf36ef9655e734e0b74f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analyse types of all flattened fields of this object. <a href="#a403767d4aee3cf36ef9655e734e0b74f">More...</a><br /></td></tr>
92
- <tr class="separator:a403767d4aee3cf36ef9655e734e0b74f"><td class="memSeparator" colspan="2">&#160;</td></tr>
90
+ <tr class="memitem:af5c882c10cd46c669c5aededbdb510d8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a> (<a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *typeinfo, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
91
+ <tr class="memdesc:af5c882c10cd46c669c5aededbdb510d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analyse types of all flattened fields of this object. <a href="#af5c882c10cd46c669c5aededbdb510d8">More...</a><br /></td></tr>
92
+ <tr class="separator:af5c882c10cd46c669c5aededbdb510d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
93
+ <tr class="memitem:a9fca576448cc1cb38c894a7ae3d9ec56"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">analyzeHeapObjType</a> (<a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *typeinfo, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
94
+ <tr class="memdesc:a9fca576448cc1cb38c894a7ae3d9ec56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analyse types of heap and static objects. <a href="#a9fca576448cc1cb38c894a7ae3d9ec56">More...</a><br /></td></tr>
95
+ <tr class="separator:a9fca576448cc1cb38c894a7ae3d9ec56"><td class="memSeparator" colspan="2">&#160;</td></tr>
96
+ <tr class="memitem:afe2806a0aef240ab313975decfe362f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a> (<a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *typeinfo, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
97
+ <tr class="memdesc:afe2806a0aef240ab313975decfe362f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analyse types of heap and static objects. <a href="#afe2806a0aef240ab313975decfe362f7">More...</a><br /></td></tr>
98
+ <tr class="separator:afe2806a0aef240ab313975decfe362f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
99
+ <tr class="memitem:aa5c2b13b54ddb172816d1ee269ddbb81"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#aa5c2b13b54ddb172816d1ee269ddbb81">getUniqueUseViaCastInst</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
100
+ <tr class="memdesc:aa5c2b13b54ddb172816d1ee269ddbb81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the bitcast instruction which is val's only use site, otherwise return nullptr. <a href="#aa5c2b13b54ddb172816d1ee269ddbb81">More...</a><br /></td></tr>
101
+ <tr class="separator:aa5c2b13b54ddb172816d1ee269ddbb81"><td class="memSeparator" colspan="2">&#160;</td></tr>
93
102
  <tr class="memitem:a0f6e58467a6c280181c0366ca6331f98"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
94
103
  <tr class="memdesc:a0f6e58467a6c280181c0366ca6331f98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return size of this object based on LLVM value. <a href="#a0f6e58467a6c280181c0366ca6331f98">More...</a><br /></td></tr>
95
104
  <tr class="separator:a0f6e58467a6c280181c0366ca6331f98"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -109,8 +118,8 @@ Public Member Functions</h2></td></tr>
109
118
  <tr class="memitem:a72732ec0392d9d5b900fc12177890779"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#a72732ec0392d9d5b900fc12177890779">handleGlobalCE</a> (const <a class="el" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a> *G)</td></tr>
110
119
  <tr class="memdesc:a72732ec0392d9d5b900fc12177890779"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle constant expression. <a href="#a72732ec0392d9d5b900fc12177890779">More...</a><br /></td></tr>
111
120
  <tr class="separator:a72732ec0392d9d5b900fc12177890779"><td class="memSeparator" colspan="2">&#160;</td></tr>
112
- <tr class="memitem:ac17a325eac72cb01798cc7b06b0e6b6e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">handleGlobalInitializerCE</a> (const <a class="el" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *C, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> offset)</td></tr>
113
- <tr class="separator:ac17a325eac72cb01798cc7b06b0e6b6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
121
+ <tr class="memitem:a1efd9406182eb86b1ee4829c931b566d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a> (const <a class="el" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *C)</td></tr>
122
+ <tr class="separator:a1efd9406182eb86b1ee4829c931b566d"><td class="memSeparator" colspan="2">&#160;</td></tr>
114
123
  <tr class="memitem:abe39a7a3557899b4991bcc60d436dc50"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
115
124
  <tr class="separator:abe39a7a3557899b4991bcc60d436dc50"><td class="memSeparator" colspan="2">&#160;</td></tr>
116
125
  </table><table class="memberdecls">
@@ -155,14 +164,54 @@ Private Attributes</h2></td></tr>
155
164
  </div>
156
165
  </div>
157
166
  <h2 class="groupheader">Member Function Documentation</h2>
158
- <a id="a403767d4aee3cf36ef9655e734e0b74f"></a>
159
- <h2 class="memtitle"><span class="permalink"><a href="#a403767d4aee3cf36ef9655e734e0b74f">&#9670;&nbsp;</a></span>analyzeGlobalStackObjType()</h2>
167
+ <a id="a9fca576448cc1cb38c894a7ae3d9ec56"></a>
168
+ <h2 class="memtitle"><span class="permalink"><a href="#a9fca576448cc1cb38c894a7ae3d9ec56">&#9670;&nbsp;</a></span>analyzeHeapObjType()</h2>
160
169
 
161
170
  <div class="memitem">
162
171
  <div class="memproto">
163
172
  <table class="memname">
164
173
  <tr>
165
- <td class="memname">void SymbolTableBuilder::analyzeGlobalStackObjType </td>
174
+ <td class="memname">void SymbolTableBuilder::analyzeHeapObjType </td>
175
+ <td>(</td>
176
+ <td class="paramtype"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *&#160;</td>
177
+ <td class="paramname"><em>typeinfo</em>, </td>
178
+ </tr>
179
+ <tr>
180
+ <td class="paramkey"></td>
181
+ <td></td>
182
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
183
+ <td class="paramname"><em>val</em>&#160;</td>
184
+ </tr>
185
+ <tr>
186
+ <td></td>
187
+ <td>)</td>
188
+ <td></td><td></td>
189
+ </tr>
190
+ </table>
191
+ </div><div class="memdoc">
192
+
193
+ <p>Analyse types of heap and static objects. </p>
194
+ <p>Analyse types of heap and static objects </p>
195
+
196
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00559">559</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
197
+ <div class="fragment"><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;{</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</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="classSVF_1_1SymbolTableBuilder.html#aa5c2b13b54ddb172816d1ee269ddbb81">getUniqueUseViaCastInst</a>(val)){</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</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><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a57d714a511273b8275374cd4c7f14373">resetTypeForHeapStaticObj</a>(castUse-&gt;getType());</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,castUse);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</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><div class="line"><a name="l00568"></a><span class="lineno"> 568</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><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">SVF::ObjTypeInfo::HEAP_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00603">SymbolTableInfo.h:603</a></div></div>
198
+ <div class="ttc" id="classSVF_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#l00513">SymbolTableBuilder.cpp:513</a></div></div>
199
+ <div class="ttc" id="classSVF_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#l00654">SymbolTableInfo.h:654</a></div></div>
200
+ <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_aa5c2b13b54ddb172816d1ee269ddbb81"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#aa5c2b13b54ddb172816d1ee269ddbb81">SVF::SymbolTableBuilder::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdoc">Return the bitcast instruction which is val&amp;#39;s only use site, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00593">SymbolTableBuilder.cpp:593</a></div></div>
201
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a57d714a511273b8275374cd4c7f14373"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a57d714a511273b8275374cd4c7f14373">SVF::ObjTypeInfo::resetTypeForHeapStaticObj</a></div><div class="ttdeci">void resetTypeForHeapStaticObj(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00053">SymbolTableInfo.cpp:53</a></div></div>
202
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00610">SymbolTableInfo.h:610</a></div></div>
203
+ <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
204
+ </div><!-- fragment -->
205
+ </div>
206
+ </div>
207
+ <a id="af5c882c10cd46c669c5aededbdb510d8"></a>
208
+ <h2 class="memtitle"><span class="permalink"><a href="#af5c882c10cd46c669c5aededbdb510d8">&#9670;&nbsp;</a></span>analyzeObjType()</h2>
209
+
210
+ <div class="memitem">
211
+ <div class="memproto">
212
+ <table class="memname">
213
+ <tr>
214
+ <td class="memname">void SymbolTableBuilder::analyzeObjType </td>
166
215
  <td>(</td>
167
216
  <td class="paramtype"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *&#160;</td>
168
217
  <td class="paramname"><em>typeinfo</em>, </td>
@@ -184,21 +233,62 @@ Private Attributes</h2></td></tr>
184
233
  <p>Analyse types of all flattened fields of this object. </p>
185
234
  <p>Analyse types of all flattened fields of this object </p>
186
235
 
187
- <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00503">503</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
188
- <div class="fragment"><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;{</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * refty = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;PointerType&gt;(refty) &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = refty-&gt;getElementType();</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="comment">// Find the inter nested array element</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</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><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; elemTy = AT-&gt;getElementType();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span>(elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</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><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</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><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div><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#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *ST= SVFUtil::dyn_cast&lt;StructType&gt;(elemTy))</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keyword">const</span> std::vector&lt;FlattenedFieldInfo&gt;&amp; flattenFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(ST);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FlattenedFieldInfo&gt;::const_iterator it = flattenFields.begin(), eit = flattenFields.end();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span>((*it).getFlattenElemTy()-&gt;isPointerTy())</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantStruct&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</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><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</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><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span>(isPtrObj)</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</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><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00611">SymbolTableInfo.h:611</a></div></div>
236
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00513">513</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
237
+ <div class="fragment"><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;{</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * refty = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(refty &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = refty-&gt;getElementType();</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">// Find the inter nested array element</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</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><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; elemTy = AT-&gt;getElementType();</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span>(elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</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><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</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><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</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><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keyword">const</span> std::vector&lt;FlattenedFieldInfo&gt;&amp; flattenFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a>(ST);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FlattenedFieldInfo&gt;::const_iterator it = flattenFields.begin(), eit = flattenFields.end();</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span>((*it).getFlattenElemTy()-&gt;isPointerTy())</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantStruct&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</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><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</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><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span>(isPtrObj)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</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><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00607">SymbolTableInfo.h:607</a></div></div>
189
238
  <div class="ttc" id="namespaceSVF_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#l00075">BasicTypes.h:75</a></div></div>
190
239
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
191
240
  <div class="ttc" id="namespaceSVF_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#l00108">BasicTypes.h:108</a></div></div>
192
241
  <div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
193
- <div class="ttc" id="classSVF_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#l00670">SymbolTableInfo.h:670</a></div></div>
242
+ <div class="ttc" id="classSVF_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#l00654">SymbolTableInfo.h:654</a></div></div>
194
243
  <div class="ttc" id="namespaceSVF_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#l00106">BasicTypes.h:106</a></div></div>
195
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">SVF::ObjTypeInfo::VAR_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00609">SymbolTableInfo.h:609</a></div></div>
196
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00614">SymbolTableInfo.h:614</a></div></div>
197
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
198
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9ca564bdc1f40a2ccd30d98e0e4075b0"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">SVF::SymbolTableInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">const std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec(const Type *T)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00400">SymbolTableInfo.cpp:400</a></div></div>
244
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">SVF::ObjTypeInfo::VAR_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00605">SymbolTableInfo.h:605</a></div></div>
245
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00610">SymbolTableInfo.h:610</a></div></div>
246
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00115">SymbolTableInfo.cpp:115</a></div></div>
247
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9ca564bdc1f40a2ccd30d98e0e4075b0"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">SVF::SymbolTableInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">const std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec(const Type *T)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00430">SymbolTableInfo.cpp:430</a></div></div>
199
248
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
200
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">SVF::ObjTypeInfo::VAR_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00608">SymbolTableInfo.h:608</a></div></div>
201
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">SVF::ObjTypeInfo::CONST_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00610">SymbolTableInfo.h:610</a></div></div>
249
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">SVF::ObjTypeInfo::VAR_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00604">SymbolTableInfo.h:604</a></div></div>
250
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">SVF::ObjTypeInfo::CONST_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00606">SymbolTableInfo.h:606</a></div></div>
251
+ </div><!-- fragment -->
252
+ </div>
253
+ </div>
254
+ <a id="afe2806a0aef240ab313975decfe362f7"></a>
255
+ <h2 class="memtitle"><span class="permalink"><a href="#afe2806a0aef240ab313975decfe362f7">&#9670;&nbsp;</a></span>analyzeStaticObjType()</h2>
256
+
257
+ <div class="memitem">
258
+ <div class="memproto">
259
+ <table class="memname">
260
+ <tr>
261
+ <td class="memname">void SymbolTableBuilder::analyzeStaticObjType </td>
262
+ <td>(</td>
263
+ <td class="paramtype"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *&#160;</td>
264
+ <td class="paramname"><em>typeinfo</em>, </td>
265
+ </tr>
266
+ <tr>
267
+ <td class="paramkey"></td>
268
+ <td></td>
269
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
270
+ <td class="paramname"><em>val</em>&#160;</td>
271
+ </tr>
272
+ <tr>
273
+ <td></td>
274
+ <td>)</td>
275
+ <td></td><td></td>
276
+ </tr>
277
+ </table>
278
+ </div><div class="memdoc">
279
+
280
+ <p>Analyse types of heap and static objects. </p>
281
+ <p>Analyse types of heap and static objects </p>
282
+
283
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00575">575</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
284
+ <div class="fragment"><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;{</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</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="classSVF_1_1SymbolTableBuilder.html#aa5c2b13b54ddb172816d1ee269ddbb81">getUniqueUseViaCastInst</a>(val)){</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</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><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a57d714a511273b8275374cd4c7f14373">resetTypeForHeapStaticObj</a>(castUse-&gt;getType());</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,castUse);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</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><div class="line"><a name="l00584"></a><span class="lineno"> 584</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><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a692b4b0df23bad19ea04d18b01bf445c">SVF::ObjTypeInfo::HEAP_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00603">SymbolTableInfo.h:603</a></div></div>
285
+ <div class="ttc" id="classSVF_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#l00513">SymbolTableBuilder.cpp:513</a></div></div>
286
+ <div class="ttc" id="classSVF_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#l00654">SymbolTableInfo.h:654</a></div></div>
287
+ <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_aa5c2b13b54ddb172816d1ee269ddbb81"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#aa5c2b13b54ddb172816d1ee269ddbb81">SVF::SymbolTableBuilder::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdoc">Return the bitcast instruction which is val&amp;#39;s only use site, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00593">SymbolTableBuilder.cpp:593</a></div></div>
288
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a57d714a511273b8275374cd4c7f14373"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a57d714a511273b8275374cd4c7f14373">SVF::ObjTypeInfo::resetTypeForHeapStaticObj</a></div><div class="ttdeci">void resetTypeForHeapStaticObj(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00053">SymbolTableInfo.cpp:53</a></div></div>
289
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00610">SymbolTableInfo.h:610</a></div></div>
290
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a4e7606afe2dabdef9c9836ae798a9d98">SVF::ObjTypeInfo::STATIC_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00601">SymbolTableInfo.h:601</a></div></div>
291
+ <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
202
292
  </div><!-- fragment -->
203
293
  </div>
204
294
  </div>
@@ -224,7 +314,7 @@ Private Attributes</h2></td></tr>
224
314
 
225
315
  <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00047">47</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
226
316
  <div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVFUtil::increaseStackSize</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">setModule</a>(svfModule);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">StInfo::setMaxFieldLimit</a>(<a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// Pointer #0 always represents the null pointer.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">SymbolTableInfo::NullPtr</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Pointer #1 always represents the pointer points-to black hole.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">SymbolTableInfo::BlkPtr</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// Object #2 is black hole the object that may point to any object</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SymbolTableInfo::BlackHole</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">createBlkObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SymbolTableInfo::BlackHole</a>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// Object #3 always represents the unique constant of a program (merging all constants if Options::ModelConsts is disabled)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++ == <a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SymbolTableInfo::ConstantObj</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">createConstantObj</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SymbolTableInfo::ConstantObj</a>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// Add symbols for all the globals .</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVFModule::global_iterator</a> I = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">global_begin</a>(), E =</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">global_end</a>(); I != E; ++I)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*I);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// Add symbols for all the global aliases</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVFModule::alias_iterator</a> I = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">alias_begin</a>(), E =</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">alias_end</a>(); I != E; I++)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*I);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>((*I)-&gt;getAliasee());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> F = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); F != E; ++F)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *F;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(fun);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a2f5321b9a76ea833650f1391ecd8de5f">collectRet</a>(fun);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (fun-&gt;getFunctionType()-&gt;isVarArg())</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#add1f3d59a4a8234fb398ed52d4b2115e">collectVararg</a>(fun);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Add symbols for all formal parameters.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span> (Function::arg_iterator I = fun-&gt;arg_begin(), E = fun-&gt;arg_end();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; I != E; ++I)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(&amp;*I);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(inst);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// initialization for some special instructions</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">//{@</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *st = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(st-&gt;getPointerOperand());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(st-&gt;getValueOperand());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a> *ld = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(ld-&gt;getPointerOperand());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">PHINode</a> *phi = SVFUtil::dyn_cast&lt;PHINode&gt;(inst))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; phi-&gt;getNumIncomingValues(); ++i)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(phi-&gt;getIncomingValue(i));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a> *gep = SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; inst))</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(gep-&gt;getPointerOperand());</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307">SelectInst</a> *sel = SVFUtil::dyn_cast&lt;SelectInst&gt;(inst))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel-&gt;getTrueValue());</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel-&gt;getFalseValue());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sel-&gt;getCondition());</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">BinaryOperator</a> *binary = SVFUtil::dyn_cast&lt;BinaryOperator&gt;(inst))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; binary-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(binary-&gt;getOperand(i));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">UnaryOperator</a> *unary = SVFUtil::dyn_cast&lt;UnaryOperator&gt;(inst))</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; unary-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(unary-&gt;getOperand(i));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a> *cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(inst))</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; cmp-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(cmp-&gt;getOperand(i));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a> = SVFUtil::dyn_cast&lt;CastInst&gt;(inst))</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>-&gt;getOperand(0));</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a> *ret = SVFUtil::dyn_cast&lt;ReturnInst&gt;(inst))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span>(ret-&gt;getReturnValue())</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(ret-&gt;getReturnValue());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *br = SVFUtil::dyn_cast&lt;BranchInst&gt;(inst))</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = br-&gt;isConditional() ? br-&gt;getCondition() : br-&gt;getOperand(0);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(opnd);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> *sw = SVFUtil::dyn_cast&lt;SwitchInst&gt;(inst))</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(sw-&gt;getCondition());</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>.insert(cs);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> it = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; it != cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>(); ++it)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(*it);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// Calls to inline asm need to be added as well because the callee isn&#39;t</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">// referenced anywhere else.</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *Callee = cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac2fa9a797e3e2a8885ccc488030659d5">collectSym</a>(Callee);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">//TODO handle inlineAsm</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a92b053f79cfa1259603836cb0aacad7d">endSymbolAllocation</a>();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">Options::SymTabPrint</a>) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">dump</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00138">SVFModule.h:138</a></div></div>
227
- <div class="ttc" id="classSVF_1_1Options_html_abbfd1d7e985483c486394d8db85b6a85"><div class="ttname"><a href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">SVF::Options::SymTabPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; SymTabPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
317
+ <div class="ttc" id="classSVF_1_1Options_html_abbfd1d7e985483c486394d8db85b6a85"><div class="ttname"><a href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">SVF::Options::SymTabPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; SymTabPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00215">Options.h:215</a></div></div>
228
318
  <div class="ttc" id="namespaceSVF_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#l00151">BasicTypes.h:151</a></div></div>
229
319
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba1e6cc9ef0abd047b183382f2681cd4c1">SVF::SymbolTableInfo::NullPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00056">SymbolTableInfo.h:56</a></div></div>
230
320
  <div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00161">BasicTypes.h:161</a></div></div>
@@ -236,7 +326,7 @@ Private Attributes</h2></td></tr>
236
326
  <div class="ttc" id="classSVF_1_1CallSite_html_a9526f6c3829f8897d1ca617feda8451a"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">SVF::CallSite::getCalledValue</a></div><div class="ttdeci">Value * getCalledValue() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00321">BasicTypes.h:321</a></div></div>
237
327
  <div class="ttc" id="namespaceSVF_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#l00153">BasicTypes.h:153</a></div></div>
238
328
  <div class="ttc" id="namespaceSVF_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#l00165">BasicTypes.h:165</a></div></div>
239
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a6ddf057415f641bd8ad15bded1415776"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">SVF::SymbolTableInfo::createBlkObj</a></div><div class="ttdeci">MemObj * createBlkObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00350">SymbolTableInfo.cpp:350</a></div></div>
329
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a6ddf057415f641bd8ad15bded1415776"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a6ddf057415f641bd8ad15bded1415776">SVF::SymbolTableInfo::createBlkObj</a></div><div class="ttdeci">MemObj * createBlkObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00373">SymbolTableInfo.cpp:373</a></div></div>
240
330
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89baa3ecb7c51e2cba67d1f9a5284c2f215f">SVF::SymbolTableInfo::ConstantObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00059">SymbolTableInfo.h:59</a></div></div>
241
331
  <div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &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#l00037">Options.h:37</a></div></div>
242
332
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a125faa0295b38d027b35bc3d76b3afdd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">SVF::SymbolTableInfo::totalSymNum</a></div><div class="ttdeci">SymID totalSymNum</div><div class="ttdoc">total number of symbols </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00111">SymbolTableInfo.h:111</a></div></div>
@@ -244,17 +334,17 @@ Private Attributes</h2></td></tr>
244
334
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
245
335
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a05a05894819e9cad6ee0033a6695e35e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">SVF::SymbolTableInfo::callSiteSet</a></div><div class="ttdeci">CallSiteSet callSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00093">SymbolTableInfo.h:93</a></div></div>
246
336
  <div class="ttc" id="classSVF_1_1SVFModule_html_a3cfd0983849950099d1e8f8e0fda42bc"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">SVF::SVFModule::alias_end</a></div><div class="ttdeci">alias_iterator alias_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00189">SVFModule.h:189</a></div></div>
247
- <div class="ttc" id="classSVF_1_1StInfo_html_aed9399cfe3ace00289f2a5265df80199"><div class="ttname"><a href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">SVF::StInfo::setMaxFieldLimit</a></div><div class="ttdeci">static void setMaxFieldLimit(u32_t limit)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00538">SymbolTableInfo.h:538</a></div></div>
337
+ <div class="ttc" id="classSVF_1_1StInfo_html_aed9399cfe3ace00289f2a5265df80199"><div class="ttname"><a href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">SVF::StInfo::setMaxFieldLimit</a></div><div class="ttdeci">static void setMaxFieldLimit(u32_t limit)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00534">SymbolTableInfo.h:534</a></div></div>
248
338
  <div class="ttc" id="classSVF_1_1SVFModule_html_a648542aa5c4b487ad5aa12a39d15e951"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">SVF::SVFModule::llvmFunBegin</a></div><div class="ttdeci">llvm_iterator llvmFunBegin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00130">SVFModule.h:130</a></div></div>
249
339
  <div class="ttc" id="classSVF_1_1SVFModule_html_aa5a0780c5c69a1e9a0ba902b4ad49714"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVF::SVFModule::llvm_iterator</a></div><div class="ttdeci">LLVMFunctionSetType::iterator llvm_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00053">SVFModule.h:53</a></div></div>
250
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9f4cf6914b400b9f69c7852f13c496a9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">SVF::SymbolTableInfo::dump</a></div><div class="ttdeci">virtual void dump()</div><div class="ttdoc">Another debug method. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00514">SymbolTableInfo.cpp:514</a></div></div>
340
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9f4cf6914b400b9f69c7852f13c496a9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">SVF::SymbolTableInfo::dump</a></div><div class="ttdeci">virtual void dump()</div><div class="ttdoc">Another debug method. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00544">SymbolTableInfo.cpp:544</a></div></div>
251
341
  <div class="ttc" id="namespaceSVF_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#l00157">BasicTypes.h:157</a></div></div>
252
342
  <div class="ttc" id="namespaceSVF_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#l00158">BasicTypes.h:158</a></div></div>
253
343
  <div class="ttc" id="namespaceSVF_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#l00076">BasicTypes.h:76</a></div></div>
254
344
  <div class="ttc" id="namespaceSVF_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#l00079">BasicTypes.h:79</a></div></div>
255
345
  <div class="ttc" id="classSVF_1_1CallSite_html_aabc0054b7f4e06b7ca0b6072746984e6"><div class="ttname"><a href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">SVF::CallSite::arg_begin</a></div><div class="ttdeci">User::const_op_iterator arg_begin() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00314">BasicTypes.h:314</a></div></div>
256
346
  <div class="ttc" id="classSVF_1_1SVFModule_html_a4cf1ca2e9f045a0520b0a8a6cd5993f2"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVF::SVFModule::global_iterator</a></div><div class="ttdeci">GlobalSetType::iterator global_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00055">SVFModule.h:55</a></div></div>
257
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
347
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00115">SymbolTableInfo.cpp:115</a></div></div>
258
348
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba9a9d3f03f58ccd4fdaaf08327a74aa03">SVF::SymbolTableInfo::BlkPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00057">SymbolTableInfo.h:57</a></div></div>
259
349
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#afd2cf6ef6d7f2a583c709a72067be89ba95734ab884566beab5cd3523c250b539">SVF::SymbolTableInfo::BlackHole</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00058">SymbolTableInfo.h:58</a></div></div>
260
350
  <div class="ttc" id="namespaceSVF_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#l00154">BasicTypes.h:154</a></div></div>
@@ -270,7 +360,7 @@ Private Attributes</h2></td></tr>
270
360
  <div class="ttc" id="classSVF_1_1CallSite_html_ac1cdfe5e54026960a23142e26b3150ff"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">SVF::CallSite::arg_iterator</a></div><div class="ttdeci">User::const_op_iterator arg_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00311">BasicTypes.h:311</a></div></div>
271
361
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *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#l00206">SVFUtil.h:206</a></div></div>
272
362
  <div class="ttc" id="classSVF_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="ttdoc">collect the syms </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00200">SymbolTableBuilder.cpp:200</a></div></div>
273
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab5c9d593aa68c7150cd382db230eec3e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">SVF::SymbolTableInfo::createConstantObj</a></div><div class="ttdeci">MemObj * createConstantObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00359">SymbolTableInfo.cpp:359</a></div></div>
363
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab5c9d593aa68c7150cd382db230eec3e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab5c9d593aa68c7150cd382db230eec3e">SVF::SymbolTableInfo::createConstantObj</a></div><div class="ttdeci">MemObj * createConstantObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00382">SymbolTableInfo.cpp:382</a></div></div>
274
364
  <div class="ttc" id="classSVF_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#l00296">SymbolTableBuilder.cpp:296</a></div></div>
275
365
  <div class="ttc" id="classSVF_1_1SVFModule_html_a8a34164634d6ad9a7b76175907c8c44b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">SVF::SVFModule::global_end</a></div><div class="ttdeci">global_iterator global_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00172">SVFModule.h:172</a></div></div>
276
366
  <div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00205">BasicTypes.h:205</a></div></div>
@@ -300,7 +390,7 @@ Private Attributes</h2></td></tr>
300
390
  <p>Get memory object sym, if not available create a new one </p>
301
391
 
302
392
  <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00249">249</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
303
- <div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; val = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">getGlobalRep</a>(val);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; SymbolTableInfo::ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.find(val);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.end())</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</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><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// then we treat them as one ConstantObj</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val) &amp;&amp; !<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>()))</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>()));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// otherwise, we will create an object for each abstract memory location</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// create obj sym and sym type</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">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><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// create a memory object </span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(<span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">createObjTypeInfo</a>(val), val);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(<span class="keywordtype">id</span>) == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[id] = mem;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;}</div><div class="ttc" id="classSVF_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#l00415">SymbolTableInfo.h:415</a></div></div>
393
+ <div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; val = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">getGlobalRep</a>(val);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; SymbolTableInfo::ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.find(val);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.end())</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</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><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// then we treat them as one ConstantObj</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val) &amp;&amp; !<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>()))</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>()));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// otherwise, we will create an object for each abstract memory location</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// create obj sym and sym type</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">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><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// create a memory object </span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(<span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a31190ba1934f945abe8a1b4fcbb636b3">createObjTypeInfo</a>(val), val);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(<span class="keywordtype">id</span>) == <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[id] = mem;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;}</div><div class="ttc" id="classSVF_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#l00411">SymbolTableInfo.h:411</a></div></div>
304
394
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
305
395
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4b55d5252da1f316f505cf6ce2078b28"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">SVF::SVFUtil::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="SVFUtil_8h_source.html#l00245">SVFUtil.h:245</a></div></div>
306
396
  <div class="ttc" id="classSVF_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#l00049">NodeIDAllocator.cpp:49</a></div></div>
@@ -311,10 +401,10 @@ Private Attributes</h2></td></tr>
311
401
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
312
402
  <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a3100246d9b0a58e53f2dbc8acf231afb"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">SVF::SymbolTableBuilder::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00046">SymbolTableBuilder.h:46</a></div></div>
313
403
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aeab14702eabde827923a692cba8f7f8a"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">SVF::SymbolTableInfo::objMap</a></div><div class="ttdeci">IDToMemMapTy objMap</div><div class="ttdoc">map a memory sym id to its obj </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00091">SymbolTableInfo.h:91</a></div></div>
314
- <div class="ttc" id="classSVF_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#l00461">SymbolTableBuilder.cpp:461</a></div></div>
404
+ <div class="ttc" id="classSVF_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#l00472">SymbolTableBuilder.cpp:472</a></div></div>
315
405
  <div class="ttc" id="classSVF_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#l00025">NodeIDAllocator.cpp:25</a></div></div>
316
406
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a89e9c6da843e5eef25c51afd5d0937e5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">SVF::SymbolTableInfo::getModelConstants</a></div><div class="ttdeci">bool getModelConstants() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00143">SymbolTableInfo.h:143</a></div></div>
317
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00318">SymbolTableInfo.cpp:318</a></div></div>
407
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00341">SymbolTableInfo.cpp:341</a></div></div>
318
408
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
319
409
  </div><!-- fragment -->
320
410
  </div>
@@ -372,10 +462,10 @@ Private Attributes</h2></td></tr>
372
462
  <div class="ttc" id="classSVF_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#l00249">SymbolTableBuilder.cpp:249</a></div></div>
373
463
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_acc9fd07cb66dbdeef696c3c745856094"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#acc9fd07cb66dbdeef696c3c745856094">SVF::SVFUtil::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#l00041">LLVMUtil.cpp:41</a></div></div>
374
464
  <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
375
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00310">SymbolTableInfo.cpp:310</a></div></div>
465
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab15112d3900f28525848cbe5fad37deb"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">SVF::SymbolTableInfo::isBlackholeSym</a></div><div class="ttdeci">static bool isBlackholeSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00333">SymbolTableInfo.cpp:333</a></div></div>
376
466
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
377
467
  <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a3100246d9b0a58e53f2dbc8acf231afb"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">SVF::SymbolTableBuilder::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00046">SymbolTableBuilder.h:46</a></div></div>
378
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a65a7e9d6d238a04291cb7d0aa15ece90"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SVF::SymbolTableInfo::isNullPtrSym</a></div><div class="ttdeci">static bool isNullPtrSym(const Value *val)</div><div class="ttdoc">special value </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00298">SymbolTableInfo.cpp:298</a></div></div>
468
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a65a7e9d6d238a04291cb7d0aa15ece90"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">SVF::SymbolTableInfo::isNullPtrSym</a></div><div class="ttdeci">static bool isNullPtrSym(const Value *val)</div><div class="ttdoc">special value </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00321">SymbolTableInfo.cpp:321</a></div></div>
379
469
  <div class="ttc" id="classSVF_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#l00227">SymbolTableBuilder.cpp:227</a></div></div>
380
470
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
381
471
  </div><!-- fragment -->
@@ -408,7 +498,7 @@ Private Attributes</h2></td></tr>
408
498
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
409
499
  <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a3100246d9b0a58e53f2dbc8acf231afb"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">SVF::SymbolTableBuilder::symInfo</a></div><div class="ttdeci">SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00046">SymbolTableBuilder.h:46</a></div></div>
410
500
  <div class="ttc" id="classSVF_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#l00025">NodeIDAllocator.cpp:25</a></div></div>
411
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00318">SymbolTableInfo.cpp:318</a></div></div>
501
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00341">SymbolTableInfo.cpp:341</a></div></div>
412
502
  <div class="ttc" id="classSVF_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#l00129">NodeIDAllocator.cpp:129</a></div></div>
413
503
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
414
504
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5054f95a7b77257ffb283044aab17b08"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">SVF::SymbolTableInfo::valSymMap</a></div><div class="ttdeci">ValueToIDMapTy valSymMap</div><div class="ttdoc">map a value to its sym id </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00087">SymbolTableInfo.h:87</a></div></div>
@@ -462,8 +552,8 @@ Private Attributes</h2></td></tr>
462
552
 
463
553
  <p>Create an objectInfo based on LLVM value. </p>
464
554
 
465
- <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00461">461</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
466
- <div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refTy = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(val);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">// We consider two types of objects:</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// (1) A heap/static object from a callsite</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (I &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(I))</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a>(I);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (refTy)</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy = refTy-&gt;getElementType();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</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>(val, objTy, <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create an object with a non-pointer type.&quot;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(val-&gt;getName().str());</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(val) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val)){</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</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>(val, val-&gt;getType(), 0);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<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><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;}</div><div class="ttc" id="namespaceSVF_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#l00075">BasicTypes.h:75</a></div></div>
555
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00472">472</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
556
+ <div class="fragment"><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;{</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refTy = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(val);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="comment">// We consider two types of objects:</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="comment">// (1) A heap/static object from a callsite</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (I &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(I))</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a>(I);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (refTy)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy = refTy-&gt;getElementType();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</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>(objTy, <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create an object with a non-pointer type.&quot;</span>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(val-&gt;getName().str());</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(val) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableBuilder.html#a3100246d9b0a58e53f2dbc8acf231afb">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val)){</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</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>(val-&gt;getType(), 0);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<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><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;}</div><div class="ttc" id="namespaceSVF_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#l00075">BasicTypes.h:75</a></div></div>
467
557
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
468
558
  <div class="ttc" id="namespaceSVF_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#l00108">BasicTypes.h:108</a></div></div>
469
559
  <div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &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#l00037">Options.h:37</a></div></div>
@@ -475,9 +565,9 @@ Private Attributes</h2></td></tr>
475
565
  <div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
476
566
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
477
567
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *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#l00206">SVFUtil.h:206</a></div></div>
478
- <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a92ba9c9671e557ba950c14f418079696"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00551">SymbolTableBuilder.cpp:551</a></div></div>
479
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00318">SymbolTableInfo.cpp:318</a></div></div>
480
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html">SVF::ObjTypeInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00597">SymbolTableInfo.h:597</a></div></div>
568
+ <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a92ba9c9671e557ba950c14f418079696"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a92ba9c9671e557ba950c14f418079696">SVF::SymbolTableBuilder::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00609">SymbolTableBuilder.cpp:609</a></div></div>
569
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00341">SymbolTableInfo.cpp:341</a></div></div>
570
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html">SVF::ObjTypeInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00593">SymbolTableInfo.h:593</a></div></div>
481
571
  </div><!-- fragment -->
482
572
  </div>
483
573
  </div>
@@ -500,11 +590,40 @@ Private Attributes</h2></td></tr>
500
590
  <p>Return size of this object based on LLVM value. </p>
501
591
  <p>Return size of this Object </p>
502
592
 
503
- <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00610">610</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
504
- <div class="fragment"><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;{</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety = SVFUtil::cast&lt;PointerType&gt;(val-&gt;getType())-&gt;getElementType();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(ety) || SVFUtil::isa&lt;ArrayType&gt;(ety))</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a747073d433e05e15085a2675f6a1e18f">getNumOfFlattenElements</a>(ety);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;}</div><div class="ttc" id="namespaceSVF_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#l00075">BasicTypes.h:75</a></div></div>
593
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00668">668</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
594
+ <div class="fragment"><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;{</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety = SVFUtil::cast&lt;PointerType&gt;(val-&gt;getType())-&gt;getElementType();</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(ety) || SVFUtil::isa&lt;ArrayType&gt;(ety))</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(ety);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;}</div><div class="ttc" id="namespaceSVF_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#l00075">BasicTypes.h:75</a></div></div>
505
595
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
506
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
507
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a747073d433e05e15085a2675f6a1e18f"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a747073d433e05e15085a2675f6a1e18f">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">const u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattenned elements of an array or struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00377">SymbolTableInfo.cpp:377</a></div></div>
596
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00115">SymbolTableInfo.cpp:115</a></div></div>
597
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aec579894eed558ea89740b68360187aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattenned elements of an array or struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00400">SymbolTableInfo.cpp:400</a></div></div>
598
+ </div><!-- fragment -->
599
+ </div>
600
+ </div>
601
+ <a id="aa5c2b13b54ddb172816d1ee269ddbb81"></a>
602
+ <h2 class="memtitle"><span class="permalink"><a href="#aa5c2b13b54ddb172816d1ee269ddbb81">&#9670;&nbsp;</a></span>getUniqueUseViaCastInst()</h2>
603
+
604
+ <div class="memitem">
605
+ <div class="memproto">
606
+ <table class="memname">
607
+ <tr>
608
+ <td class="memname">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> * SymbolTableBuilder::getUniqueUseViaCastInst </td>
609
+ <td>(</td>
610
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
611
+ <td class="paramname"><em>val</em></td><td>)</td>
612
+ <td></td>
613
+ </tr>
614
+ </table>
615
+ </div><div class="memdoc">
616
+
617
+ <p>Return the bitcast instruction which is val's only use site, otherwise return nullptr. </p>
618
+ <p>If type is void* (i8*) and val is only used at a bitcast instruction </p>
619
+
620
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00593">593</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
621
+ <div class="fragment"><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast&lt;IntegerType&gt;(type-&gt;getPointerElementType())){</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (IT-&gt;getBitWidth() == 8 &amp;&amp; val-&gt;getNumUses()==1){</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &amp;*val-&gt;use_begin();</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">BitCastInst</a>&gt;(u-&gt;getUser());</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00087">BasicTypes.h:87</a></div></div>
622
+ <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
623
+ <div class="ttc" id="namespaceSVF_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#l00108">BasicTypes.h:108</a></div></div>
624
+ <div class="ttc" id="namespaceSVF_html_afc50da46a6ea7c2cf61683bbec4d7c8d"><div class="ttname"><a href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">SVF::BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
625
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
626
+ <div class="ttc" id="namespaceSVF_html_a3d9e7f32dc17fe8d40f8d6a011403b91"><div class="ttname"><a href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">SVF::IntegerType</a></div><div class="ttdeci">llvm::IntegerType IntegerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00217">BasicTypes.h:217</a></div></div>
508
627
  </div><!-- fragment -->
509
628
  </div>
510
629
  </div>
@@ -566,16 +685,16 @@ Private Attributes</h2></td></tr>
566
685
  <p>Handle global constant expression </p>
567
686
 
568
687
  <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00378">378</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
569
- <div class="fragment"><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;{</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(G);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">//The type this global points to</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = G-&gt;getType()-&gt;getContainedType(0);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordtype">bool</span> is_array = 0;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="comment">//An array is considered a single variable of its type.</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</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><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; T = AT-&gt;getElementType();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; is_array = 1;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(T))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">//A struct may be used in constant GEP expr.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator it = G-&gt;user_begin(), ie = G-&gt;user_end();</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(*it);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">if</span> (is_array)</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator it = G-&gt;user_begin(), ie =</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; G-&gt;user_end(); it != ie; ++it)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(*it);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (G-&gt;hasInitializer())</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">handleGlobalInitializerCE</a>(G-&gt;getInitializer(), 0);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div><div class="ttc" id="classSVF_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#l00312">SymbolTableBuilder.cpp:312</a></div></div>
688
+ <div class="fragment"><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;{</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(G);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">//The type this global points to</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = G-&gt;getType()-&gt;getContainedType(0);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordtype">bool</span> is_array = 0;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="comment">//An array is considered a single variable of its type.</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</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><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; T = AT-&gt;getElementType();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; is_array = 1;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(T))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">//A struct may be used in constant GEP expr.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator it = G-&gt;user_begin(), ie = G-&gt;user_end();</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(*it);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">if</span> (is_array)</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator it = G-&gt;user_begin(), ie =</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; G-&gt;user_end(); it != ie; ++it)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(*it);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (G-&gt;hasInitializer())</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(G-&gt;getInitializer());</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;}</div><div class="ttc" id="classSVF_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#l00312">SymbolTableBuilder.cpp:312</a></div></div>
570
689
  <div class="ttc" id="namespaceSVF_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#l00075">BasicTypes.h:75</a></div></div>
571
690
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
572
691
  <div class="ttc" id="namespaceSVF_html_a146d286041987860388da3d8bc85cee3"><div class="ttname"><a href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF::ArrayType</a></div><div class="ttdeci">llvm::ArrayType ArrayType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00107">BasicTypes.h:107</a></div></div>
573
- <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_ac17a325eac72cb01798cc7b06b0e6b6e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00422">SymbolTableBuilder.cpp:422</a></div></div>
692
+ <div class="ttc" id="classSVF_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#l00422">SymbolTableBuilder.cpp:422</a></div></div>
574
693
  </div><!-- fragment -->
575
694
  </div>
576
695
  </div>
577
- <a id="ac17a325eac72cb01798cc7b06b0e6b6e"></a>
578
- <h2 class="memtitle"><span class="permalink"><a href="#ac17a325eac72cb01798cc7b06b0e6b6e">&#9670;&nbsp;</a></span>handleGlobalInitializerCE()</h2>
696
+ <a id="a1efd9406182eb86b1ee4829c931b566d"></a>
697
+ <h2 class="memtitle"><span class="permalink"><a href="#a1efd9406182eb86b1ee4829c931b566d">&#9670;&nbsp;</a></span>handleGlobalInitializerCE()</h2>
579
698
 
580
699
  <div class="memitem">
581
700
  <div class="memproto">
@@ -584,31 +703,22 @@ Private Attributes</h2></td></tr>
584
703
  <td class="memname">void SymbolTableBuilder::handleGlobalInitializerCE </td>
585
704
  <td>(</td>
586
705
  <td class="paramtype">const <a class="el" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *&#160;</td>
587
- <td class="paramname"><em>C</em>, </td>
588
- </tr>
589
- <tr>
590
- <td class="paramkey"></td>
591
- <td></td>
592
- <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
593
- <td class="paramname"><em>offset</em>&#160;</td>
594
- </tr>
595
- <tr>
706
+ <td class="paramname"><em>C</em></td><td>)</td>
596
707
  <td></td>
597
- <td>)</td>
598
- <td></td><td></td>
599
708
  </tr>
600
709
  </table>
601
710
  </div><div class="memdoc">
602
711
  <p>Handle global variable initialization </p>
603
712
 
604
713
  <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00422">422</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
605
- <div class="fragment"><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;{</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</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><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(E);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(C);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray&gt;(C))</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</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><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)), offset);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantStruct&gt;(C))</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty = SVFUtil::cast&lt;StructType&gt;(C-&gt;getType());</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; offsetvect =</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#af0477d1e8af9ad51a9884e687fcdf29b">getFlattenedFieldIdxVec</a>(sty);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</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><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = offsetvect[i];</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)),</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; offset + off);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="ttc" id="classSVF_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#l00312">SymbolTableBuilder.cpp:312</a></div></div>
714
+ <div class="fragment"><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;{</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</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><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abe39a7a3557899b4991bcc60d436dc50">handleCE</a>(E);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#abc8b35d432db78bd5282010c7c800d70">collectVal</a>(C);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray&gt;(C))</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</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><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantStruct&gt;(C))</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</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><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)));</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</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><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">Options::ModelConsts</a>){</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8ad3aa124fabddc2fdd07c50403d70a9">ConstantDataSequential</a>* seq = SVFUtil::dyn_cast&lt;ConstantDataSequential&gt;(data)){</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</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><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ct = seq-&gt;getElementAsConstant(i);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(ct);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a1efd9406182eb86b1ee4829c931b566d">handleGlobalInitializerCE</a>(data);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">//TODO:assert(SVFUtil::isa&lt;ConstantVector&gt;(C),&quot;what else do we have&quot;);</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;}</div><div class="ttc" id="classSVF_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#l00312">SymbolTableBuilder.cpp:312</a></div></div>
715
+ <div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00213">Options.h:213</a></div></div>
606
716
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
607
- <div class="ttc" id="namespaceSVF_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#l00106">BasicTypes.h:106</a></div></div>
608
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
609
- <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_ac17a325eac72cb01798cc7b06b0e6b6e"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#ac17a325eac72cb01798cc7b06b0e6b6e">SVF::SymbolTableBuilder::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00422">SymbolTableBuilder.cpp:422</a></div></div>
717
+ <div class="ttc" id="namespaceSVF_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#l00124">BasicTypes.h:124</a></div></div>
718
+ <div class="ttc" id="namespaceSVF_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#l00123">BasicTypes.h:123</a></div></div>
719
+ <div class="ttc" id="namespaceSVF_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#l00127">BasicTypes.h:127</a></div></div>
610
720
  <div class="ttc" id="namespaceSVF_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#l00131">BasicTypes.h:131</a></div></div>
611
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af0477d1e8af9ad51a9884e687fcdf29b"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af0477d1e8af9ad51a9884e687fcdf29b">SVF::SymbolTableInfo::getFlattenedFieldIdxVec</a></div><div class="ttdeci">const std::vector&lt; u32_t &gt; &amp; getFlattenedFieldIdxVec(const StructType *T)</div><div class="ttdoc">Flatterned field index information of a struct ignoring any array field. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00395">SymbolTableInfo.cpp:395</a></div></div>
721
+ <div class="ttc" id="classSVF_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#l00422">SymbolTableBuilder.cpp:422</a></div></div>
612
722
  <div class="ttc" id="classSVF_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#l00227">SymbolTableBuilder.cpp:227</a></div></div>
613
723
  </div><!-- fragment -->
614
724
  </div>
@@ -642,27 +752,27 @@ Private Attributes</h2></td></tr>
642
752
  <p>Initialize TypeInfo based on LLVM Value. </p>
643
753
  <p>Initialize the type info of an object </p>
644
754
 
645
- <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00551">551</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
646
- <div class="fragment"><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> objSize = 1;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// Global variable</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</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><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;AllocaInst&gt;(val))</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</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><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</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><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;isConstantObjSym(val))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</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><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; objSize = -1;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; objSize = -1;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; objSize = -1;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</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><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">if</span>(objSize &gt; 0 &amp;&amp; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; objSize)</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(objSize);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a0f6e58467a6c280181c0366ca6331f98"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Value *val)</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#l00610">SymbolTableBuilder.cpp:610</a></div></div>
647
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a9fff869c63776c6ebeff78933e0f6092"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">SVF::ObjTypeInfo::setMaxFieldOffsetLimit</a></div><div class="ttdeci">void setMaxFieldOffsetLimit(u32_t limit)</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00663">SymbolTableInfo.h:663</a></div></div>
648
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">SVF::ObjTypeInfo::CONST_DATA</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00613">SymbolTableInfo.h:613</a></div></div>
755
+ <p class="definition">Definition at line <a class="el" href="SymbolTableBuilder_8cpp_source.html#l00609">609</a> of file <a class="el" href="SymbolTableBuilder_8cpp_source.html">SymbolTableBuilder.cpp</a>.</p>
756
+ <div class="fragment"><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a> objSize = 1;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="comment">// Global variable</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</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><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;AllocaInst&gt;(val))</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</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><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</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><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;isConstantObjSym(val))</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</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><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#af5c882c10cd46c669c5aededbdb510d8">analyzeObjType</a>(typeinfo,val);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">getObjSize</a>(val);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">analyzeHeapObjType</a>(typeinfo,val);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; objSize = -1;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; objSize = -1;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html#afe2806a0aef240ab313975decfe362f7">analyzeStaticObjType</a>(typeinfo,val);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; objSize = -1;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</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><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span>(objSize &gt; 0 &amp;&amp; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; objSize)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(objSize);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a0f6e58467a6c280181c0366ca6331f98"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a0f6e58467a6c280181c0366ca6331f98">SVF::SymbolTableBuilder::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Value *val)</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#l00668">SymbolTableBuilder.cpp:668</a></div></div>
757
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a9fff869c63776c6ebeff78933e0f6092"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">SVF::ObjTypeInfo::setMaxFieldOffsetLimit</a></div><div class="ttdeci">void setMaxFieldOffsetLimit(u32_t limit)</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00647">SymbolTableInfo.h:647</a></div></div>
758
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a5e5bc3a1838476fbd80c52720c9d103e">SVF::ObjTypeInfo::CONST_DATA</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00609">SymbolTableInfo.h:609</a></div></div>
649
759
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4d4191a1c81d80bf26aac120ed880135"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">SVF::SVFUtil::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#l00452">LLVMUtil.h:452</a></div></div>
650
760
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
651
- <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a403767d4aee3cf36ef9655e734e0b74f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a403767d4aee3cf36ef9655e734e0b74f">SVF::SymbolTableBuilder::analyzeGlobalStackObjType</a></div><div class="ttdeci">void analyzeGlobalStackObjType(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#l00503">SymbolTableBuilder.cpp:503</a></div></div>
652
761
  <div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
653
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a81bc3d785062c7e527ecf8e564cd52a4"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">SVF::ObjTypeInfo::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit()</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00657">SymbolTableInfo.h:657</a></div></div>
654
- <div class="ttc" id="classSVF_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#l00670">SymbolTableInfo.h:670</a></div></div>
655
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_aa8b97a2cbd2de56b3c6c5c0e2e0a2211"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">SVF::ObjTypeInfo::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(const Type *type)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00597">SymbolTableInfo.cpp:597</a></div></div>
656
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">SVF::ObjTypeInfo::GLOBVAR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00604">SymbolTableInfo.h:604</a></div></div>
762
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a81bc3d785062c7e527ecf8e564cd52a4"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">SVF::ObjTypeInfo::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit()</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00641">SymbolTableInfo.h:641</a></div></div>
763
+ <div class="ttc" id="classSVF_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#l00513">SymbolTableBuilder.cpp:513</a></div></div>
764
+ <div class="ttc" id="classSVF_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#l00654">SymbolTableInfo.h:654</a></div></div>
765
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">SVF::ObjTypeInfo::GLOBVAR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00600">SymbolTableInfo.h:600</a></div></div>
657
766
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00193">LLVMUtil.h:193</a></div></div>
658
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00101">SymbolTableInfo.cpp:101</a></div></div>
767
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00115">SymbolTableInfo.cpp:115</a></div></div>
659
768
  <div class="ttc" id="namespaceSVF_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="LLVMUtil_8h_source.html#l00115">LLVMUtil.h:115</a></div></div>
660
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">SVF::ObjTypeInfo::CONST_GLOBAL_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00612">SymbolTableInfo.h:612</a></div></div>
769
+ <div class="ttc" id="classSVF_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#l00575">SymbolTableBuilder.cpp:575</a></div></div>
770
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a84c1bc6eaff950330a102afca1efc04c">SVF::ObjTypeInfo::CONST_GLOBAL_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00608">SymbolTableInfo.h:608</a></div></div>
661
771
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(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#l00392">LLVMUtil.h:392</a></div></div>
662
772
  <div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
663
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">SVF::ObjTypeInfo::STACK_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00606">SymbolTableInfo.h:606</a></div></div>
664
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">SVF::ObjTypeInfo::FUNCTION_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00603">SymbolTableInfo.h:603</a></div></div>
665
- <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a66692043a56c327ac7ac00cc3126cd78"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">SVF::ObjTypeInfo::analyzeHeapObjType</a></div><div class="ttdeci">void analyzeHeapObjType(const Type *type)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00586">SymbolTableInfo.cpp:586</a></div></div>
773
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">SVF::ObjTypeInfo::STACK_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00602">SymbolTableInfo.h:602</a></div></div>
774
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">SVF::ObjTypeInfo::FUNCTION_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00599">SymbolTableInfo.h:599</a></div></div>
775
+ <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_a9fca576448cc1cb38c894a7ae3d9ec56"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#a9fca576448cc1cb38c894a7ae3d9ec56">SVF::SymbolTableBuilder::analyzeHeapObjType</a></div><div class="ttdeci">void analyzeHeapObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00559">SymbolTableBuilder.cpp:559</a></div></div>
666
776
  </div><!-- fragment -->
667
777
  </div>
668
778
  </div>