svf-tools 1.0.327 → 1.0.331

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 (270) hide show
  1. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +4 -4
  5. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +38 -38
  7. package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -6
  8. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -3
  9. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
  10. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  12. package/SVF-doxygen/html/html/ConsG_8h_source.html +4 -4
  13. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  14. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +6 -7
  25. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/LocationSet_8cpp.html +1 -0
  28. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -15
  29. package/SVF-doxygen/html/html/LocationSet_8h.html +1 -1
  30. package/SVF-doxygen/html/html/LocationSet_8h_source.html +26 -40
  31. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +5 -5
  32. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +10 -10
  36. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +28 -29
  38. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +29 -29
  39. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +11 -3
  40. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +71 -70
  41. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +12 -12
  42. package/SVF-doxygen/html/html/SVFIR_8h_source.html +13 -13
  43. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +3 -3
  44. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  45. package/SVF-doxygen/html/html/SVFVariables_8h.html +1 -1
  46. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +69 -69
  47. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +4 -4
  48. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +21 -21
  50. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +52 -63
  52. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +72 -79
  53. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  54. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  55. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
  56. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/annotated.html +6 -6
  59. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +79 -79
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  62. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +23 -24
  63. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +1 -1
  64. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +9 -9
  65. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +4 -4
  67. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +11 -11
  69. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +13 -13
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +13 -13
  73. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +11 -11
  75. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
  76. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +17 -17
  77. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +11 -11
  79. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +11 -11
  80. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +56 -55
  81. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +44 -41
  82. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
  83. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +7 -7
  85. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
  86. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  87. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  88. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +9 -9
  90. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
  91. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +11 -11
  94. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +11 -11
  95. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +13 -13
  96. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
  98. package/SVF-doxygen/html/html/classSVF_1_1FlattenedFieldInfo-members.html +85 -0
  99. package/SVF-doxygen/html/html/classSVF_1_1FlattenedFieldInfo.html +254 -0
  100. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +7 -7
  102. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +9 -9
  104. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  105. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +10 -10
  107. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -23
  109. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  110. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +3 -3
  111. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +173 -0
  112. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +813 -0
  113. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.png +0 -0
  114. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
  115. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator-members.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +8 -8
  117. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +17 -21
  118. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +150 -326
  119. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
  120. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +84 -84
  121. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +2 -2
  123. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +96 -96
  124. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +5 -5
  125. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
  126. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  127. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  128. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +75 -73
  130. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +11 -11
  131. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +31 -31
  133. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +57 -56
  134. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +301 -229
  135. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  136. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
  137. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +4 -4
  138. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +11 -14
  139. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +70 -168
  140. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +4 -4
  142. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +30 -30
  143. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +20 -24
  144. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +110 -291
  145. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +9 -9
  148. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +18 -18
  149. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +11 -11
  150. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  152. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  153. package/SVF-doxygen/html/html/classes.html +6 -6
  154. package/SVF-doxygen/html/html/functions_a.html +13 -10
  155. package/SVF-doxygen/html/html/functions_b.html +1 -5
  156. package/SVF-doxygen/html/html/functions_c.html +19 -20
  157. package/SVF-doxygen/html/html/functions_d.html +1 -1
  158. package/SVF-doxygen/html/html/functions_e.html +0 -16
  159. package/SVF-doxygen/html/html/functions_f.html +21 -19
  160. package/SVF-doxygen/html/html/functions_func.html +15 -12
  161. package/SVF-doxygen/html/html/functions_func_c.html +16 -17
  162. package/SVF-doxygen/html/html/functions_func_d.html +1 -1
  163. package/SVF-doxygen/html/html/functions_func_e.html +2 -8
  164. package/SVF-doxygen/html/html/functions_func_f.html +4 -4
  165. package/SVF-doxygen/html/html/functions_func_g.html +36 -58
  166. package/SVF-doxygen/html/html/functions_func_i.html +11 -14
  167. package/SVF-doxygen/html/html/functions_func_r.html +3 -3
  168. package/SVF-doxygen/html/html/functions_func_s.html +6 -9
  169. package/SVF-doxygen/html/html/functions_func_t.html +1 -1
  170. package/SVF-doxygen/html/html/functions_func_w.html +1 -1
  171. package/SVF-doxygen/html/html/functions_g.html +41 -63
  172. package/SVF-doxygen/html/html/functions_i.html +6 -9
  173. package/SVF-doxygen/html/html/functions_l.html +4 -4
  174. package/SVF-doxygen/html/html/functions_n.html +4 -7
  175. package/SVF-doxygen/html/html/functions_o.html +25 -20
  176. package/SVF-doxygen/html/html/functions_p.html +12 -16
  177. package/SVF-doxygen/html/html/functions_r.html +4 -4
  178. package/SVF-doxygen/html/html/functions_s.html +15 -18
  179. package/SVF-doxygen/html/html/functions_t.html +1 -1
  180. package/SVF-doxygen/html/html/functions_type_e.html +0 -4
  181. package/SVF-doxygen/html/html/functions_type_o.html +3 -0
  182. package/SVF-doxygen/html/html/functions_v.html +3 -3
  183. package/SVF-doxygen/html/html/functions_vars_b.html +1 -5
  184. package/SVF-doxygen/html/html/functions_vars_c.html +1 -1
  185. package/SVF-doxygen/html/html/functions_vars_e.html +0 -6
  186. package/SVF-doxygen/html/html/functions_vars_f.html +9 -7
  187. package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
  188. package/SVF-doxygen/html/html/functions_vars_n.html +0 -3
  189. package/SVF-doxygen/html/html/functions_vars_o.html +2 -2
  190. package/SVF-doxygen/html/html/functions_w.html +1 -1
  191. package/SVF-doxygen/html/html/hierarchy.html +64 -64
  192. package/SVF-doxygen/html/html/namespaceSVF.html +3 -3
  193. package/SVF-doxygen/html/html/search/all_1.js +3 -2
  194. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  195. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  196. package/SVF-doxygen/html/html/search/all_13.js +5 -6
  197. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  198. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  199. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  200. package/SVF-doxygen/html/html/search/all_2.js +2 -3
  201. package/SVF-doxygen/html/html/search/all_3.js +5 -5
  202. package/SVF-doxygen/html/html/search/all_4.js +1 -1
  203. package/SVF-doxygen/html/html/search/all_5.js +0 -5
  204. package/SVF-doxygen/html/html/search/all_6.js +6 -5
  205. package/SVF-doxygen/html/html/search/all_7.js +15 -23
  206. package/SVF-doxygen/html/html/search/all_9.js +2 -3
  207. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  208. package/SVF-doxygen/html/html/search/all_e.js +1 -2
  209. package/SVF-doxygen/html/html/search/all_f.js +5 -4
  210. package/SVF-doxygen/html/html/search/classes_5.js +1 -1
  211. package/SVF-doxygen/html/html/search/classes_6.js +1 -1
  212. package/SVF-doxygen/html/html/search/functions_0.js +3 -2
  213. package/SVF-doxygen/html/html/search/functions_10.js +2 -3
  214. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  215. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  216. package/SVF-doxygen/html/html/search/functions_2.js +3 -3
  217. package/SVF-doxygen/html/html/search/functions_3.js +1 -1
  218. package/SVF-doxygen/html/html/search/functions_4.js +0 -2
  219. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  220. package/SVF-doxygen/html/html/search/functions_6.js +15 -23
  221. package/SVF-doxygen/html/html/search/functions_8.js +1 -2
  222. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  223. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  224. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  225. package/SVF-doxygen/html/html/search/typedefs_4.js +0 -1
  226. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
  227. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  228. package/SVF-doxygen/html/html/search/variables_2.js +2 -3
  229. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  230. package/SVF-doxygen/html/html/search/variables_5.js +0 -2
  231. package/SVF-doxygen/html/html/search/variables_6.js +5 -4
  232. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  233. package/SVF-doxygen/html/html/search/variables_e.js +0 -1
  234. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  235. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  236. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  237. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  238. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +5 -5
  239. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  240. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  241. package/include/Graphs/ConsG.h +1 -1
  242. package/include/Graphs/ConsGEdge.h +1 -1
  243. package/include/MemoryModel/LocationSet.h +39 -126
  244. package/include/MemoryModel/PointerAnalysis.h +1 -1
  245. package/include/MemoryModel/SVFIR.h +2 -2
  246. package/include/MemoryModel/SVFStatements.h +1 -1
  247. package/include/MemoryModel/SVFVariables.h +17 -11
  248. package/include/MemoryModel/SymbolTableInfo.h +27 -31
  249. package/include/SVF-FE/SVFIRBuilder.h +6 -1
  250. package/include/Util/IRAnnotator.h +3 -3
  251. package/lib/DDA/ContextDDA.cpp +1 -1
  252. package/lib/Graphs/ConsG.cpp +1 -1
  253. package/lib/Graphs/IRGraph.cpp +1 -1
  254. package/lib/Graphs/OfflineConsG.cpp +1 -1
  255. package/lib/MemoryModel/LocationSet.cpp +53 -95
  256. package/lib/MemoryModel/PointerAnalysis.cpp +4 -2
  257. package/lib/MemoryModel/PointerAnalysisImpl.cpp +4 -4
  258. package/lib/MemoryModel/SVFIR.cpp +4 -4
  259. package/lib/MemoryModel/SVFVariables.cpp +2 -2
  260. package/lib/MemoryModel/SymbolTableInfo.cpp +44 -212
  261. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  262. package/lib/SVF-FE/SVFIRBuilder.cpp +135 -7
  263. package/lib/SVF-FE/SymbolTableBuilder.cpp +4 -4
  264. package/lib/Util/TypeBasedHeapCloning.cpp +10 -10
  265. package/lib/WPA/Andersen.cpp +1 -5
  266. package/lib/WPA/AndersenSFR.cpp +2 -2
  267. package/lib/WPA/CSC.cpp +1 -1
  268. package/lib/WPA/FlowSensitiveTBHC.cpp +6 -6
  269. package/package.json +1 -1
  270. package/tools/Example/svf-ex.cpp +1 -2
@@ -123,15 +123,6 @@ Public Member Functions</h2></td></tr>
123
123
  <tr class="memitem:a4f916c64ca04c4db30bd19fb8505724d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a4f916c64ca04c4db30bd19fb8505724d">setModule</a> (<a class="el" href="classSVF_1_1SVFModule.html">SVFModule</a> *m)</td></tr>
124
124
  <tr class="memdesc:a4f916c64ca04c4db30bd19fb8505724d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Module. <a href="#a4f916c64ca04c4db30bd19fb8505724d">More...</a><br /></td></tr>
125
125
  <tr class="separator:a4f916c64ca04c4db30bd19fb8505724d"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
- <tr class="memitem:a86b742ca197b3505b3246d6bed2484db"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a86b742ca197b3505b3246d6bed2484db">computeGepOffset</a> (const <a class="el" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a> *V, <a class="el" href="classSVF_1_1LocationSet.html">LocationSet</a> &amp;ls)</td></tr>
127
- <tr class="memdesc:a86b742ca197b3505b3246d6bed2484db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute gep offset. <a href="#a86b742ca197b3505b3246d6bed2484db">More...</a><br /></td></tr>
128
- <tr class="separator:a86b742ca197b3505b3246d6bed2484db"><td class="memSeparator" colspan="2">&#160;</td></tr>
129
- <tr class="memitem:a6243a2a002784b2ee1f0b1cfe9d3ea0f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a6243a2a002784b2ee1f0b1cfe9d3ea0f">getBaseTypeAndFlattenedFields</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *V, std::vector&lt; <a class="el" href="classSVF_1_1LocationSet.html">LocationSet</a> &gt; &amp;fields)</td></tr>
130
- <tr class="memdesc:a6243a2a002784b2ee1f0b1cfe9d3ea0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the base type and max offset. <a href="#a6243a2a002784b2ee1f0b1cfe9d3ea0f">More...</a><br /></td></tr>
131
- <tr class="separator:a6243a2a002784b2ee1f0b1cfe9d3ea0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
132
- <tr class="memitem:ac26583169a343e7a9f751e4ec60f7b3d"><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_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a> (std::vector&lt; <a class="el" href="classSVF_1_1LocationSet.html">LocationSet</a> &gt; &amp;fields, const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> msz)</td></tr>
133
- <tr class="memdesc:ac26583169a343e7a9f751e4ec60f7b3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Replace fields with flatten fields of T if the number of its fields is larger than msz. <a href="#ac26583169a343e7a9f751e4ec60f7b3d">More...</a><br /></td></tr>
134
- <tr class="separator:ac26583169a343e7a9f751e4ec60f7b3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
135
126
  <tr class="memitem:aa99cab5480116905dd41ab0ad24b9462"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
136
127
  <tr class="memdesc:aa99cab5480116905dd41ab0ad24b9462"><td class="mdescLeft">&#160;</td><td class="mdescRight">Collect type info. <a href="#aa99cab5480116905dd41ab0ad24b9462">More...</a><br /></td></tr>
137
128
  <tr class="separator:aa99cab5480116905dd41ab0ad24b9462"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -199,17 +190,15 @@ Public Member Functions</h2></td></tr>
199
190
  <tr class="memitem:a90bca8ff906ea48fb5e3a69da463ccab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1StInfo.html">StInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
200
191
  <tr class="memdesc:a90bca8ff906ea48fb5e3a69da463ccab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a reference to StructInfo. <a href="#a90bca8ff906ea48fb5e3a69da463ccab">More...</a><br /></td></tr>
201
192
  <tr class="separator:a90bca8ff906ea48fb5e3a69da463ccab"><td class="memSeparator" colspan="2">&#160;</td></tr>
202
- <tr class="memitem:ae57d9e939164a25bad4a84a25c9b35e6"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#ae57d9e939164a25bad4a84a25c9b35e6">getFattenFieldIdxVec</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
203
- <tr class="memdesc:ae57d9e939164a25bad4a84a25c9b35e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a reference to the components of struct_info. <a href="#ae57d9e939164a25bad4a84a25c9b35e6">More...</a><br /></td></tr>
204
- <tr class="separator:ae57d9e939164a25bad4a84a25c9b35e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
205
- <tr class="memitem:adfea906ce463903c365abca5ea1b45d1"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#adfea906ce463903c365abca5ea1b45d1">getFattenFieldOffsetVec</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
206
- <tr class="separator:adfea906ce463903c365abca5ea1b45d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
207
- <tr class="memitem:a3fa4043c6e33a5b1daaa65f206b6a843"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="classSVF_1_1FieldInfo.html">FieldInfo</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a3fa4043c6e33a5b1daaa65f206b6a843">getFlattenFieldInfoVec</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
208
- <tr class="separator:a3fa4043c6e33a5b1daaa65f206b6a843"><td class="memSeparator" colspan="2">&#160;</td></tr>
209
- <tr class="memitem:ad7dec8a89931ef96a26c7f1d23062702"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#ad7dec8a89931ef96a26c7f1d23062702">getOrigSubTypeWithFldInx</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *baseType, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</td></tr>
210
- <tr class="separator:ad7dec8a89931ef96a26c7f1d23062702"><td class="memSeparator" colspan="2">&#160;</td></tr>
211
- <tr class="memitem:a573bd5208467b2f905f5b2b1684feac8"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a573bd5208467b2f905f5b2b1684feac8">getOrigSubTypeWithByteOffset</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *baseType, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> byteOffset)</td></tr>
212
- <tr class="separator:a573bd5208467b2f905f5b2b1684feac8"><td class="memSeparator" colspan="2">&#160;</td></tr>
193
+ <tr class="memitem:ac50e1d8f8b8e514d098a55bfbac86010"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#ac50e1d8f8b8e514d098a55bfbac86010">getFlattenedFieldIdxVec</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
194
+ <tr class="memdesc:ac50e1d8f8b8e514d098a55bfbac86010"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a reference to the components of struct_info. <a href="#ac50e1d8f8b8e514d098a55bfbac86010">More...</a><br /></td></tr>
195
+ <tr class="separator:ac50e1d8f8b8e514d098a55bfbac86010"><td class="memSeparator" colspan="2">&#160;</td></tr>
196
+ <tr class="memitem:a9ca564bdc1f40a2ccd30d98e0e4075b0"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a9ca564bdc1f40a2ccd30d98e0e4075b0">getFlattenedFieldInfoVec</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
197
+ <tr class="separator:a9ca564bdc1f40a2ccd30d98e0e4075b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
198
+ <tr class="memitem:a866085ff37b7841606c523817c621f49"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a866085ff37b7841606c523817c621f49">getOriginalFieldType</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *baseType, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</td></tr>
199
+ <tr class="separator:a866085ff37b7841606c523817c621f49"><td class="memSeparator" colspan="2">&#160;</td></tr>
200
+ <tr class="memitem:a666d1dff7a629bd34abbd2031c1037a4"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a666d1dff7a629bd34abbd2031c1037a4">getFlatternedFieldType</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *baseType, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</td></tr>
201
+ <tr class="separator:a666d1dff7a629bd34abbd2031c1037a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
213
202
  </table><table class="memberdecls">
214
203
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
215
204
  Static Public Member Functions</h2></td></tr>
@@ -533,10 +522,10 @@ Friends</h2></td></tr>
533
522
  <p>Constructor. </p>
534
523
 
535
524
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00115">115</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
536
- <div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; :</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">modelConstants</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>(0), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>(0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4e33a01e203f07a8154af6ee65f5ba46"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const Type * maxStruct</div><div class="ttdoc">The struct type with the most fields. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00411">SymbolTableInfo.h:411</a></div></div>
525
+ <div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; :</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">modelConstants</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>(0), <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>(0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4e33a01e203f07a8154af6ee65f5ba46"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const Type * maxStruct</div><div class="ttdoc">The struct type with the most fields. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
537
526
  <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>
538
527
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af8fdaaa03cd2ae9b7d50f57bc678b8ba"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">SVF::SymbolTableInfo::mod</a></div><div class="ttdeci">SVFModule * mod</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00099">SymbolTableInfo.h:99</a></div></div>
539
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00414">SymbolTableInfo.h:414</a></div></div>
528
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00411">SymbolTableInfo.h:411</a></div></div>
540
529
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad20ccb90e8f9dee488a8aec0600399dc"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad20ccb90e8f9dee488a8aec0600399dc">SVF::SymbolTableInfo::modelConstants</a></div><div class="ttdeci">bool modelConstants</div><div class="ttdoc">Whether to model constants. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00108">SymbolTableInfo.h:108</a></div></div>
541
530
  </div><!-- fragment -->
542
531
  </div>
@@ -565,7 +554,7 @@ Friends</h2></td></tr>
565
554
  </div><div class="memdoc">
566
555
 
567
556
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00131">131</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
568
- <div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87cc3289dd69e5378487dd9ae2c9e82e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">SVF::SymbolTableInfo::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00380">SymbolTableInfo.cpp:380</a></div></div>
557
+ <div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87cc3289dd69e5378487dd9ae2c9e82e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87cc3289dd69e5378487dd9ae2c9e82e">SVF::SymbolTableInfo::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00218">SymbolTableInfo.cpp:218</a></div></div>
569
558
  </div><!-- fragment -->
570
559
  </div>
571
560
  </div>
@@ -653,21 +642,19 @@ Friends</h2></td></tr>
653
642
  <p>Collect the array info. </p>
654
643
  <p>Fill in <a class="el" href="classSVF_1_1StInfo.html">StInfo</a> for an array type. </p>
655
644
  <p>Array itself only has one field which is the inner most element</p>
656
- <p>Array's flatten field infor is the same as its element's flatten infor.</p>
657
- <p>append the additional number </p>
645
+ <p>Array's flatten field infor is the same as its element's flatten infor. </p>
658
646
 
659
647
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00088">88</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
660
- <div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</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; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> out_num = ty-&gt;getNumElements();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">llvm::Type</a>* elemTy = ty-&gt;getElementType();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; out_num *= aty-&gt;getNumElements();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; elemTy = aty-&gt;getElementType();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">addFldWithType</a>(0, 0, elemTy);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(elemTy);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().size();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>()[j].getFlattenFldIdx();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>()[j].getFlattenByteOffset();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>()[j].getFlattenElemTy();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> pair = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>()[j].getElemNumStridePairVect();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; pair.push_back(std::make_pair(out_num, out_stride));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(idx, off, fieldTy, pair);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</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;}</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>
661
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
662
- <div class="ttc" id="classSVF_1_1FieldInfo_html"><div class="ttname"><a href="classSVF_1_1FieldInfo.html">SVF::FieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
648
+ <div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</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; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> out_num = ty-&gt;getNumElements();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">llvm::Type</a>* elemTy = ty-&gt;getElementType();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; out_num *= aty-&gt;getNumElements();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; elemTy = aty-&gt;getElementType();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">addFldWithType</a>(0,elemTy);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* elemStInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(elemTy);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().size();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>()[j].getFlattenFldIdx();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* fieldTy = elemStInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>()[j].getFlattenElemTy();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(idx, fieldTy);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</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;}</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>
649
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00405">SymbolTableInfo.h:405</a></div></div>
663
650
  <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>
664
651
  <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>
665
- <div class="ttc" id="classSVF_1_1StInfo_html_ac8483f7707339d3ba53fa2ae0127ec98"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, u32_t offset, const llvm::Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00571">SymbolTableInfo.h:571</a></div></div>
666
- <div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FieldInfo &gt; &amp; getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00564">SymbolTableInfo.h:564</a></div></div>
652
+ <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html">SVF::FlattenedFieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
667
653
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a90bca8ff906ea48fb5e3a69da463ccab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">SVF::SymbolTableInfo::getStructInfo</a></div><div class="ttdeci">StInfo * getStructInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00361">SymbolTableInfo.h:361</a></div></div>
668
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af4239ff717303dee25f1f4ba60070f9e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">SVF::SymbolTableInfo::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00658">SymbolTableInfo.cpp:658</a></div></div>
669
- <div class="ttc" id="classSVF_1_1FieldInfo_html_aba172e9c0989824c8ff79134d7952197"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">SVF::FieldInfo::ElemNumStridePairVec</a></div><div class="ttdeci">std::vector&lt; NodePair &gt; ElemNumStridePairVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
670
- <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00508">SymbolTableInfo.h:508</a></div></div>
654
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af4239ff717303dee25f1f4ba60070f9e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">SVF::SymbolTableInfo::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00490">SymbolTableInfo.cpp:490</a></div></div>
655
+ <div class="ttc" id="classSVF_1_1StInfo_html_ab5908115f11eccee61bd0759a51d5af0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">SVF::StInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00562">SymbolTableInfo.h:562</a></div></div>
656
+ <div class="ttc" id="classSVF_1_1StInfo_html_a7011600965de6fe5401b87f5c71e684f"><div class="ttname"><a href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00569">SymbolTableInfo.h:569</a></div></div>
657
+ <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00505">SymbolTableInfo.h:505</a></div></div>
671
658
  <div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00076">SVFBasicTypes.h:76</a></div></div>
672
659
  </div><!-- fragment -->
673
660
  </div>
@@ -700,13 +687,12 @@ Friends</h2></td></tr>
700
687
  <p>Collect simple type (non-aggregate) info </p>
701
688
  <p>Only one field </p>
702
689
 
703
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00188">188</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
704
- <div class="fragment"><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; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">addFldWithType</a>(0,0, ty);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> pair;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; pair.push_back(std::make_pair(1,0));</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(0, 0, ty, pair);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
705
- <div class="ttc" id="classSVF_1_1FieldInfo_html"><div class="ttname"><a href="classSVF_1_1FieldInfo.html">SVF::FieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
706
- <div class="ttc" id="classSVF_1_1StInfo_html_ac8483f7707339d3ba53fa2ae0127ec98"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, u32_t offset, const llvm::Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00571">SymbolTableInfo.h:571</a></div></div>
707
- <div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FieldInfo &gt; &amp; getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00564">SymbolTableInfo.h:564</a></div></div>
708
- <div class="ttc" id="classSVF_1_1FieldInfo_html_aba172e9c0989824c8ff79134d7952197"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">SVF::FieldInfo::ElemNumStridePairVec</a></div><div class="ttdeci">std::vector&lt; NodePair &gt; ElemNumStridePairVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
709
- <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00508">SymbolTableInfo.h:508</a></div></div>
690
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00175">175</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
691
+ <div class="fragment"><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">addFldWithType</a>(0, ty);</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; <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(0, ty);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00405">SymbolTableInfo.h:405</a></div></div>
692
+ <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html">SVF::FlattenedFieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
693
+ <div class="ttc" id="classSVF_1_1StInfo_html_ab5908115f11eccee61bd0759a51d5af0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">SVF::StInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00562">SymbolTableInfo.h:562</a></div></div>
694
+ <div class="ttc" id="classSVF_1_1StInfo_html_a7011600965de6fe5401b87f5c71e684f"><div class="ttname"><a href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00569">SymbolTableInfo.h:569</a></div></div>
695
+ <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00505">SymbolTableInfo.h:505</a></div></div>
710
696
  </div><!-- fragment -->
711
697
  </div>
712
698
  </div>
@@ -737,22 +723,19 @@ Friends</h2></td></tr>
737
723
  <p>Collect the struct info. </p>
738
724
  <p>Fill in struct_info for T. Given a Struct type, we recursively extend and record its fields and types. </p>
739
725
  <p>The struct info should not be processed before</p>
740
- <p>FIXME: As the layout size is uint_64, here we assume offset with uint_32 (Size_t) is large enough and will not cause overflow </p>
726
+ <p>offset with uint_32 (Size_t) is large enough and will not cause overflow </p>
741
727
 
742
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00128">128</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
743
- <div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[sty] = stinfo;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf = 0;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// field of the current struct</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span> (StructType::element_iterator it = sty-&gt;element_begin(), ie =</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; sty-&gt;element_end(); it != ie; ++it, ++field_idx)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *et = *it;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// This offset is computed after alignment with the current struct</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> eOffsetInBytes = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(sty, field_idx);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">//The offset is where this element will be placed in the exp. struct.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"></span> stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">addFldWithType</a>(nf, static_cast&lt;u32_t&gt;(eOffsetInBytes), et);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(et) || SVFUtil::isa&lt;ArrayType&gt;(et))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> * subStinfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(et);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().size();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">//Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx = nf + subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>()[j].getFlattenFldIdx();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = eOffsetInBytes + subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>()[j].getFlattenByteOffset();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>()[j].getFlattenElemTy();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> pair = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>()[j].getElemNumStridePairVect();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; pair.push_back(std::make_pair(1, 0));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(fldIdx, off,elemTy,pair);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</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; nf += nfE;</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; <span class="keywordflow">else</span> <span class="comment">//simple type</span></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; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> pair;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; pair.push_back(std::make_pair(1,0));</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(nf, eOffsetInBytes, et,pair);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; ++nf;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</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; <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a> = sty;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4e33a01e203f07a8154af6ee65f5ba46"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const Type * maxStruct</div><div class="ttdoc">The struct type with the most fields. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00411">SymbolTableInfo.h:411</a></div></div>
728
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00124">124</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
729
+ <div class="fragment"><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>* stinfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StInfo.html">StInfo</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[sty] = stinfo;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">// field of the current struct</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span> (StructType::element_iterator it = sty-&gt;element_begin(), ie =</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; sty-&gt;element_end(); it != ie; ++it, ++field_idx)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *et = *it;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">addFldWithType</a>(nf, et);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(et) || SVFUtil::isa&lt;ArrayType&gt;(et))</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> * subStinfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(et);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nfE = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().size();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">//Copy ST&#39;s info, whose element 0 is the size of ST itself.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0; j &lt; nfE; j++)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx = nf + subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>()[j].getFlattenFldIdx();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = subStinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>()[j].getFlattenElemTy();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(fldIdx, elemTy);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; nf += nfE;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> field(nf, et);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; ++nf;</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; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (nf &gt; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>)</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_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a> = sty;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4e33a01e203f07a8154af6ee65f5ba46"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">SVF::SymbolTableInfo::maxStruct</a></div><div class="ttdeci">const Type * maxStruct</div><div class="ttdoc">The struct type with the most fields. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
744
730
  <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>
745
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
746
- <div class="ttc" id="classSVF_1_1FieldInfo_html"><div class="ttname"><a href="classSVF_1_1FieldInfo.html">SVF::FieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
731
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00405">SymbolTableInfo.h:405</a></div></div>
747
732
  <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>
748
- <div class="ttc" id="classSVF_1_1StInfo_html_ac8483f7707339d3ba53fa2ae0127ec98"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, u32_t offset, const llvm::Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00571">SymbolTableInfo.h:571</a></div></div>
749
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00414">SymbolTableInfo.h:414</a></div></div>
750
- <div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FieldInfo &gt; &amp; getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00564">SymbolTableInfo.h:564</a></div></div>
733
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00411">SymbolTableInfo.h:411</a></div></div>
734
+ <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html">SVF::FlattenedFieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
751
735
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a90bca8ff906ea48fb5e3a69da463ccab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">SVF::SymbolTableInfo::getStructInfo</a></div><div class="ttdeci">StInfo * getStructInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00361">SymbolTableInfo.h:361</a></div></div>
752
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af4239ff717303dee25f1f4ba60070f9e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">SVF::SymbolTableInfo::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00658">SymbolTableInfo.cpp:658</a></div></div>
753
- <div class="ttc" id="classSVF_1_1FieldInfo_html_aba172e9c0989824c8ff79134d7952197"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">SVF::FieldInfo::ElemNumStridePairVec</a></div><div class="ttdeci">std::vector&lt; NodePair &gt; ElemNumStridePairVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
754
- <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00508">SymbolTableInfo.h:508</a></div></div>
755
- <div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00076">SVFBasicTypes.h:76</a></div></div>
736
+ <div class="ttc" id="classSVF_1_1StInfo_html_ab5908115f11eccee61bd0759a51d5af0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">SVF::StInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00562">SymbolTableInfo.h:562</a></div></div>
737
+ <div class="ttc" id="classSVF_1_1StInfo_html_a7011600965de6fe5401b87f5c71e684f"><div class="ttname"><a href="classSVF_1_1StInfo.html#a7011600965de6fe5401b87f5c71e684f">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const Type *type)</div><div class="ttdoc">Add field (index and offset) with its corresponding type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00569">SymbolTableInfo.h:569</a></div></div>
738
+ <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00505">SymbolTableInfo.h:505</a></div></div>
756
739
  </div><!-- fragment -->
757
740
  </div>
758
741
  </div>
@@ -776,73 +759,13 @@ Friends</h2></td></tr>
776
759
  <p>Collect a LLVM type info </p>
777
760
 
778
761
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00072">72</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
779
- <div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(ty) == <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end() &amp;&amp; <span class="stringliteral">&quot;this type has been collected before&quot;</span>);</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="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(ty))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(aty);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast&lt;StructType&gt;(ty))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(sty);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(ty);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
762
+ <div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(ty) == <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end() &amp;&amp; <span class="stringliteral">&quot;this type has been collected before&quot;</span>);</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="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(ty))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(aty);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a>* sty = SVFUtil::dyn_cast&lt;StructType&gt;(ty))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(sty);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(ty);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00405">SymbolTableInfo.h:405</a></div></div>
780
763
  <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>
781
764
  <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>
782
765
  <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>
783
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab5297b79a02d8afce647a8b61bdab804"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">SVF::SymbolTableInfo::collectStructInfo</a></div><div class="ttdeci">virtual void collectStructInfo(const StructType *T)</div><div class="ttdoc">Collect the struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00128">SymbolTableInfo.cpp:128</a></div></div>
766
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab5297b79a02d8afce647a8b61bdab804"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">SVF::SymbolTableInfo::collectStructInfo</a></div><div class="ttdeci">virtual void collectStructInfo(const StructType *T)</div><div class="ttdoc">Collect the struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00124">SymbolTableInfo.cpp:124</a></div></div>
784
767
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aea1c4ec32c307feb5da455a41cc51b5e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">SVF::SymbolTableInfo::collectArrayInfo</a></div><div class="ttdeci">virtual void collectArrayInfo(const ArrayType *T)</div><div class="ttdoc">Collect the array info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00088">SymbolTableInfo.cpp:88</a></div></div>
785
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abf7567c655499d6744de8df689c11fad"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">SVF::SymbolTableInfo::collectSimpleTypeInfo</a></div><div class="ttdeci">virtual void collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00188">SymbolTableInfo.cpp:188</a></div></div>
786
- </div><!-- fragment -->
787
- </div>
788
- </div>
789
- <a id="a86b742ca197b3505b3246d6bed2484db"></a>
790
- <h2 class="memtitle"><span class="permalink"><a href="#a86b742ca197b3505b3246d6bed2484db">&#9670;&nbsp;</a></span>computeGepOffset()</h2>
791
-
792
- <div class="memitem">
793
- <div class="memproto">
794
- <table class="mlabels">
795
- <tr>
796
- <td class="mlabels-left">
797
- <table class="memname">
798
- <tr>
799
- <td class="memname">bool SymbolTableInfo::computeGepOffset </td>
800
- <td>(</td>
801
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a> *&#160;</td>
802
- <td class="paramname"><em>V</em>, </td>
803
- </tr>
804
- <tr>
805
- <td class="paramkey"></td>
806
- <td></td>
807
- <td class="paramtype"><a class="el" href="classSVF_1_1LocationSet.html">LocationSet</a> &amp;&#160;</td>
808
- <td class="paramname"><em>ls</em>&#160;</td>
809
- </tr>
810
- <tr>
811
- <td></td>
812
- <td>)</td>
813
- <td></td><td></td>
814
- </tr>
815
- </table>
816
- </td>
817
- <td class="mlabels-right">
818
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
819
- </tr>
820
- </table>
821
- </div><div class="memdoc">
822
-
823
- <p>Compute gep offset. </p>
824
- <p>Compute gep offset </p>
825
- <p>given a gep edge p = q + i, </p>
826
-
827
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00205">205</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
828
- <div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">const</span> llvm::GEPOperator *gepOp = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<span class="keyword">const</span> llvm::GEPOperator&gt;(V);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">DataLayout</a> * dataLayout = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule());</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; llvm::APInt byteOffset(dataLayout-&gt;getIndexSizeInBits(gepOp-&gt;getPointerAddressSpace()),0,<span class="keyword">true</span>);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span>(gepOp &amp;&amp; dataLayout &amp;&amp; gepOp-&gt;accumulateConstantOffset(*dataLayout,byteOffset))</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> bo = byteOffset.getSExtValue();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#a6c5b8c1a9f765de8bcbefb681ca6a92c">setByteOffset</a>(bo + ls.<a class="code" href="classSVF_1_1LocationSet.html#a5322dcda48d6980c3f7aafa169fcd77d">getByteOffset</a>());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1generic__bridge__gep__type__iterator.html">bridge_gep_iterator</a> gi = <a class="code" href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">bridge_gep_begin</a>(*V), ge = <a class="code" href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">bridge_gep_end</a>(*V);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; gi != ge; ++gi)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// Handling array types, skipe array handling here</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="comment">// We treat whole array as one, then we can distinguish different field of an array of struct</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// e.g. s[1].f1 is differet from s[0].f2</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ArrayType&gt;(*gi))</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">//The int-value object of the current index operand</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="comment">// (may not be constant for arrays).</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *op = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>&gt;(gi.getOperand());</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span>(!op)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">//The actual index</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> idx = op-&gt;getSExtValue();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// Handling pointer types</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">// These GEP instructions are simply making address computations from the base pointer address</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="comment">// e.g. idx = (char*) &amp;p + 4, at this case gep only one offset index (idx)</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// Case 1: This operation is likely accessing an array through pointer p.</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// Case 2: It may also be used to access a field of a struct (which is not ANSI-compliant)</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Since this is a field-index based memory model,</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// for case 1: we consider the whole array as one element, This can be improved by LocMemModel as it can distinguish different</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// elements of the same array.</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// for case 2: we treat idx the same as &amp;p by ignoring const 4 (This handling is unsound since the program itself is not ANSI-compliant).</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(*gi))</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">//off += idx;</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</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;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// Handling struct here</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</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;(*gi) )</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="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(op &amp;&amp; <span class="stringliteral">&quot;non-const struct index in GEP&quot;</span>);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">const</span> vector&lt;u32_t&gt; &amp;so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#ae57d9e939164a25bad4a84a25c9b35e6">getFattenFieldIdxVec</a>(ST);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)idx &gt;= so.size())</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;!! Struct index out of bounds&quot;</span> &lt;&lt; idx &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="comment">//add the translated offset</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#acc8d400f4715e05d8d4174d7bf722346">setFldIdx</a>(ls.<a class="code" href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">getOffset</a>() + so[idx]);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</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="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div><div class="ttc" id="classSVF_1_1LocationSet_html_a6c5b8c1a9f765de8bcbefb681ca6a92c"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a6c5b8c1a9f765de8bcbefb681ca6a92c">SVF::LocationSet::setByteOffset</a></div><div class="ttdeci">void setByteOffset(Size_t os)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00205">LocationSet.h:205</a></div></div>
829
- <div class="ttc" id="classSVF_1_1LocationSet_html_a5322dcda48d6980c3f7aafa169fcd77d"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5322dcda48d6980c3f7aafa169fcd77d">SVF::LocationSet::getByteOffset</a></div><div class="ttdeci">Size_t getByteOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00197">LocationSet.h:197</a></div></div>
830
- <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>
831
- <div class="ttc" id="classSVF_1_1LocationSet_html_acc8d400f4715e05d8d4174d7bf722346"><div class="ttname"><a href="classSVF_1_1LocationSet.html#acc8d400f4715e05d8d4174d7bf722346">SVF::LocationSet::setFldIdx</a></div><div class="ttdeci">void setFldIdx(Size_t idx)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00201">LocationSet.h:201</a></div></div>
832
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae57d9e939164a25bad4a84a25c9b35e6"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae57d9e939164a25bad4a84a25c9b35e6">SVF::SymbolTableInfo::getFattenFieldIdxVec</a></div><div class="ttdeci">const std::vector&lt; u32_t &gt; &amp; getFattenFieldIdxVec(const Type *T)</div><div class="ttdoc">Get a reference to the components of struct_info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00481">SymbolTableInfo.cpp:481</a></div></div>
833
- <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
834
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5fad3e11fbba831ed0940fb715e7dc2d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">SVF::SymbolTableInfo::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdoc">Get target machine data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00169">SymbolTableInfo.h:169</a></div></div>
835
- <div class="ttc" id="namespacellvm_html_acfe99e9d441434240c79f6d76b73fe0a"><div class="ttname"><a href="namespacellvm.html#acfe99e9d441434240c79f6d76b73fe0a">llvm::bridge_gep_begin</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_begin(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00149">GEPTypeBridgeIterator.h:149</a></div></div>
836
- <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>
837
- <div class="ttc" id="namespaceSVF_html_a2db29836a72e8d86e9baa6d8d55d2978"><div class="ttname"><a href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a></div><div class="ttdeci">signed long Size_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
838
- <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#l00059">SymbolTableInfo.cpp:59</a></div></div>
839
- <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>
840
- <div class="ttc" id="namespacellvm_html_a7cfc92a12082d69711c97bb3d1b99c48"><div class="ttname"><a href="namespacellvm.html#a7cfc92a12082d69711c97bb3d1b99c48">llvm::bridge_gep_end</a></div><div class="ttdeci">bridge_gep_iterator bridge_gep_end(const User *GEP)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00157">GEPTypeBridgeIterator.h:157</a></div></div>
841
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
842
- <div class="ttc" id="classSVF_1_1LocationSet_html_ab85c3707152e03722bd631b2525f223e"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">SVF::LocationSet::getOffset</a></div><div class="ttdeci">Size_t getOffset() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00193">LocationSet.h:193</a></div></div>
843
- <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>
844
- <div class="ttc" id="namespaceSVF_html_a03db82b8a7914367024723dba4d6ca3c"><div class="ttname"><a href="namespaceSVF.html#a03db82b8a7914367024723dba4d6ca3c">SVF::DataLayout</a></div><div class="ttdeci">llvm::DataLayout DataLayout</div><div class="ttdoc">LLVM data layout. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00115">BasicTypes.h:115</a></div></div>
845
- <div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html">llvm::generic_bridge_gep_type_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00017">GEPTypeBridgeIterator.h:17</a></div></div>
768
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abf7567c655499d6744de8df689c11fad"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">SVF::SymbolTableInfo::collectSimpleTypeInfo</a></div><div class="ttdeci">virtual void collectSimpleTypeInfo(const Type *T)</div><div class="ttdoc">Collect simple type (non-aggregate) info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00175">SymbolTableInfo.cpp:175</a></div></div>
846
769
  </div><!-- fragment -->
847
770
  </div>
848
771
  </div>
@@ -890,9 +813,9 @@ Friends</h2></td></tr>
890
813
  </table>
891
814
  </div><div class="memdoc">
892
815
 
893
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00455">455</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
894
- <div class="fragment"><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;{</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">isBlkObj</a>(symId));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>());</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = obj;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> obj;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad9cdb21e20182f3bc95f04bbb97712f3"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">SVF::SymbolTableInfo::isBlkObj</a></div><div class="ttdeci">static bool isBlkObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00198">SymbolTableInfo.h:198</a></div></div>
895
- <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#l00421">SymbolTableInfo.h:421</a></div></div>
816
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00299">299</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
817
+ <div class="fragment"><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">isBlkObj</a>(symId));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>());</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = obj;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">return</span> obj;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad9cdb21e20182f3bc95f04bbb97712f3"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">SVF::SymbolTableInfo::isBlkObj</a></div><div class="ttdeci">static bool isBlkObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00198">SymbolTableInfo.h:198</a></div></div>
818
+ <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#l00418">SymbolTableInfo.h:418</a></div></div>
896
819
  <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>
897
820
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a76971ba9b579907ef937cd7adda89562"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type=nullptr)</div><div class="ttdoc">Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00049">SymbolTableInfo.cpp:49</a></div></div>
898
821
  <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>
@@ -915,8 +838,8 @@ Friends</h2></td></tr>
915
838
  </table>
916
839
  </div><div class="memdoc">
917
840
 
918
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00464">464</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
919
- <div class="fragment"><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;{</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">isConstantObj</a>(symId));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>());</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = obj;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> obj;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</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#l00421">SymbolTableInfo.h:421</a></div></div>
841
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00308">308</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
842
+ <div class="fragment"><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">isConstantObj</a>(symId));</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>());</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = obj;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> obj;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</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#l00418">SymbolTableInfo.h:418</a></div></div>
920
843
  <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>
921
844
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a704b917b1e1dbaf9cd758fa9acc1083b"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">SVF::SymbolTableInfo::isConstantObj</a></div><div class="ttdeci">static bool isConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00202">SymbolTableInfo.h:202</a></div></div>
922
845
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a76971ba9b579907ef937cd7adda89562"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type=nullptr)</div><div class="ttdoc">Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00049">SymbolTableInfo.cpp:49</a></div></div>
@@ -952,8 +875,8 @@ Friends</h2></td></tr>
952
875
 
953
876
  <p>Can only be invoked by SVFIR::addDummyNode() when creaing <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> from file. </p>
954
877
 
955
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00473">473</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
956
- <div class="fragment"><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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;this dummy obj has been created before&quot;</span>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* memObj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>(type));</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = memObj;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">return</span> memObj;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</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#l00421">SymbolTableInfo.h:421</a></div></div>
878
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00317">317</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
879
+ <div class="fragment"><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;{</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(symId)==<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;this dummy obj has been created before&quot;</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* memObj = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a>(type));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = memObj;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> memObj;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</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#l00418">SymbolTableInfo.h:418</a></div></div>
957
880
  <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>
958
881
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a76971ba9b579907ef937cd7adda89562"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Type *type=nullptr)</div><div class="ttdoc">Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00049">SymbolTableInfo.cpp:49</a></div></div>
959
882
  <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>
@@ -987,9 +910,9 @@ Friends</h2></td></tr>
987
910
  <p>Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy object) </p>
988
911
 
989
912
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00049">49</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
990
- <div class="fragment"><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_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(<a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>(),type);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; typeInfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(type);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="ttc" id="classSVF_1_1StInfo_html_ad6e599717952f8ccc2771cd72254b6b2"><div class="ttname"><a href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">SVF::StInfo::getMaxFieldLimit</a></div><div class="ttdeci">static u32_t getMaxFieldLimit()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00541">SymbolTableInfo.h:541</a></div></div>
991
- <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#l00583">SymbolTableInfo.h:583</a></div></div>
992
- <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#l00684">SymbolTableInfo.cpp:684</a></div></div>
913
+ <div class="fragment"><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_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(<a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>(),type);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; typeInfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(type);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="ttc" id="classSVF_1_1StInfo_html_ad6e599717952f8ccc2771cd72254b6b2"><div class="ttname"><a href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">SVF::StInfo::getMaxFieldLimit</a></div><div class="ttdeci">static u32_t getMaxFieldLimit()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00534">SymbolTableInfo.h:534</a></div></div>
914
+ <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#l00579">SymbolTableInfo.h:579</a></div></div>
915
+ <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#l00516">SymbolTableInfo.cpp:516</a></div></div>
993
916
  </div><!-- fragment -->
994
917
  </div>
995
918
  </div>
@@ -1019,9 +942,10 @@ Friends</h2></td></tr>
1019
942
  <p>Clean up memory. </p>
1020
943
  <p>Destroy the memory for this symbol table after use </p>
1021
944
 
1022
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00380">380</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1023
- <div class="fragment"><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;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">for</span> (IDToMemMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; ++iter)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (iter-&gt;second)</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">delete</span> iter-&gt;second;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">for</span> (TypeToFieldInfoMap::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.begin();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end(); ++iter)</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> (iter-&gt;second)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">delete</span> iter-&gt;second;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
945
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00218">218</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
946
+ <div class="fragment"><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">for</span> (IDToMemMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; ++iter)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (iter-&gt;second)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">delete</span> iter-&gt;second;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (TypeToFieldInfoMap::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.begin();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end(); ++iter)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (iter-&gt;second)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">delete</span> iter-&gt;second;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>){</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>){</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00405">SymbolTableInfo.h:405</a></div></div>
1024
947
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae577a32079a8e95d0185bfc45d919635"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">SVF::SymbolTableInfo::dl</a></div><div class="ttdeci">static DataLayout * dl</div><div class="ttdoc">Data layout on a target machine. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00085">SymbolTableInfo.h:85</a></div></div>
948
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af8fdaaa03cd2ae9b7d50f57bc678b8ba"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">SVF::SymbolTableInfo::mod</a></div><div class="ttdeci">SVFModule * mod</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00099">SymbolTableInfo.h:99</a></div></div>
1025
949
  <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>
1026
950
  </div><!-- fragment -->
1027
951
  </div>
@@ -1051,8 +975,8 @@ Friends</h2></td></tr>
1051
975
 
1052
976
  <p>Another debug method. </p>
1053
977
 
1054
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00612">612</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1055
- <div class="fragment"><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;{</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;SymID, Value*&gt;</a> idmap;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> maxid = 0;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">for</span> (ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; ++iter)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter-&gt;second;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter-&gt;first;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; idmap[i] = val;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">for</span> (ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.end();</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; ++iter)</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter-&gt;second;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter-&gt;first;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; idmap[i] = val;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">for</span> (FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.end();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; ++iter)</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter-&gt;second;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter-&gt;first;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; idmap[i] = val;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">for</span> (FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.end();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; ++iter)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter-&gt;second;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter-&gt;first;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; idmap[i] = val;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;{SymbolTableInfo \n&quot;</span>;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter : idmap) {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; iter.first &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(iter.second) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
978
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00444">444</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
979
+ <div class="fragment"><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; <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;SymID, Value*&gt;</a> idmap;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> maxid = 0;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">for</span> (ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end();</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; ++iter)</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter-&gt;second;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter-&gt;first;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; idmap[i] = val;</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; <span class="keywordflow">for</span> (ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.end();</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; ++iter)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter-&gt;second;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter-&gt;first;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; idmap[i] = val;</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">for</span> (FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.end();</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; ++iter)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter-&gt;second;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter-&gt;first;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; idmap[i] = val;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">for</span> (FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.begin(); iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.end();</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; ++iter)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> i = iter-&gt;second;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = (<a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*) iter-&gt;first;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; idmap[i] = val;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;{SymbolTableInfo \n&quot;</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter : idmap) {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; iter.first &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(iter.second) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</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#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
1056
980
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a94c06e5ac0b50989743a9e63c9a6d5b9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">SVF::SymbolTableInfo::varargSymMap</a></div><div class="ttdeci">FunToIDMapTy varargSymMap</div><div class="ttdoc">vararg map </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00090">SymbolTableInfo.h:90</a></div></div>
1057
981
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00388">SVFUtil.cpp:388</a></div></div>
1058
982
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5840b742ed8c73ece548b9b4aede07ec"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">SVF::SymbolTableInfo::objSymMap</a></div><div class="ttdeci">ValueToIDMapTy objSymMap</div><div class="ttdoc">map a obj reference to its sym id </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00088">SymbolTableInfo.h:88</a></div></div>
@@ -1064,47 +988,6 @@ Friends</h2></td></tr>
1064
988
  </div><!-- fragment -->
1065
989
  </div>
1066
990
  </div>
1067
- <a id="a6243a2a002784b2ee1f0b1cfe9d3ea0f"></a>
1068
- <h2 class="memtitle"><span class="permalink"><a href="#a6243a2a002784b2ee1f0b1cfe9d3ea0f">&#9670;&nbsp;</a></span>getBaseTypeAndFlattenedFields()</h2>
1069
-
1070
- <div class="memitem">
1071
- <div class="memproto">
1072
- <table class="memname">
1073
- <tr>
1074
- <td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::getBaseTypeAndFlattenedFields </td>
1075
- <td>(</td>
1076
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
1077
- <td class="paramname"><em>V</em>, </td>
1078
- </tr>
1079
- <tr>
1080
- <td class="paramkey"></td>
1081
- <td></td>
1082
- <td class="paramtype">std::vector&lt; <a class="el" href="classSVF_1_1LocationSet.html">LocationSet</a> &gt; &amp;&#160;</td>
1083
- <td class="paramname"><em>fields</em>&#160;</td>
1084
- </tr>
1085
- <tr>
1086
- <td></td>
1087
- <td>)</td>
1088
- <td></td><td></td>
1089
- </tr>
1090
- </table>
1091
- </div><div class="memdoc">
1092
-
1093
- <p>Get the base type and max offset. </p>
1094
- <p>Find the base type and the max possible offset for an object pointed to by (V). </p>
1095
-
1096
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00300">300</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1097
- <div class="fragment"><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;{</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; fields.push_back(<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0));</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = V-&gt;getType();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="comment">// Use the biggest struct type out of all operands.</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">User</a> *U = SVFUtil::dyn_cast&lt;User&gt;(V))</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> msz = 1; <span class="comment">//the max size seen so far</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// In case of BitCast, try the target type itself</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(V))</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a>(fields, T, msz);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; msz = sz;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// Try the types of all operands</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">for</span> (User::const_op_iterator it = U-&gt;op_begin(), ie = U-&gt;op_end();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *operandtype = it-&gt;get()-&gt;getType();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a>(fields, operandtype, msz);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; msz = sz;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; T = operandtype;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// If V is a CE, the actual pointer type is its operand.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *E = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(V))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; T = E-&gt;getOperand(0)-&gt;getType();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a>(fields, T, 0);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="comment">// Handle Argument case</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Argument&gt;(V))</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a>(fields, T, 0);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *ptype = SVFUtil::dyn_cast&lt;PointerType&gt;(T))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; T = ptype-&gt;getElementType();</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> T;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</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>
1098
- <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>
1099
- <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>
1100
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ac26583169a343e7a9f751e4ec60f7b3d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">SVF::SymbolTableInfo::getFields</a></div><div class="ttdeci">u32_t getFields(std::vector&lt; LocationSet &gt; &amp;fields, const Type *T, u32_t msz)</div><div class="ttdoc">Replace fields with flatten fields of T if the number of its fields is larger than msz...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00277">SymbolTableInfo.cpp:277</a></div></div>
1101
- <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>
1102
- <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00093">LocationSet.h:93</a></div></div>
1103
- <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>
1104
- <div class="ttc" id="namespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
1105
- </div><!-- fragment -->
1106
- </div>
1107
- </div>
1108
991
  <a id="aebf96274e1ad2a523981487839a3025e"></a>
1109
992
  <h2 class="memtitle"><span class="permalink"><a href="#aebf96274e1ad2a523981487839a3025e">&#9670;&nbsp;</a></span>getBlkObj()</h2>
1110
993
 
@@ -1226,14 +1109,14 @@ Friends</h2></td></tr>
1226
1109
  </div><!-- fragment -->
1227
1110
  </div>
1228
1111
  </div>
1229
- <a id="ae57d9e939164a25bad4a84a25c9b35e6"></a>
1230
- <h2 class="memtitle"><span class="permalink"><a href="#ae57d9e939164a25bad4a84a25c9b35e6">&#9670;&nbsp;</a></span>getFattenFieldIdxVec()</h2>
1112
+ <a id="ac50e1d8f8b8e514d098a55bfbac86010"></a>
1113
+ <h2 class="memtitle"><span class="permalink"><a href="#ac50e1d8f8b8e514d098a55bfbac86010">&#9670;&nbsp;</a></span>getFlattenedFieldIdxVec()</h2>
1231
1114
 
1232
1115
  <div class="memitem">
1233
1116
  <div class="memproto">
1234
1117
  <table class="memname">
1235
1118
  <tr>
1236
- <td class="memname">const std::vector&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> &gt; &amp; SymbolTableInfo::getFattenFieldIdxVec </td>
1119
+ <td class="memname">const std::vector&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> &gt; &amp; SymbolTableInfo::getFlattenedFieldIdxVec </td>
1237
1120
  <td>(</td>
1238
1121
  <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
1239
1122
  <td class="paramname"><em>T</em></td><td>)</td>
@@ -1244,19 +1127,19 @@ Friends</h2></td></tr>
1244
1127
 
1245
1128
  <p>Get a reference to the components of struct_info. </p>
1246
1129
 
1247
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00481">481</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1248
- <div class="fragment"><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;{</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(T)-&gt;second-&gt;getFieldIdxVec();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1130
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00325">325</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1131
+ <div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;{</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(T)-&gt;second-&gt;getFlattenedFieldIdxVec();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1249
1132
  </div><!-- fragment -->
1250
1133
  </div>
1251
1134
  </div>
1252
- <a id="adfea906ce463903c365abca5ea1b45d1"></a>
1253
- <h2 class="memtitle"><span class="permalink"><a href="#adfea906ce463903c365abca5ea1b45d1">&#9670;&nbsp;</a></span>getFattenFieldOffsetVec()</h2>
1135
+ <a id="a9ca564bdc1f40a2ccd30d98e0e4075b0"></a>
1136
+ <h2 class="memtitle"><span class="permalink"><a href="#a9ca564bdc1f40a2ccd30d98e0e4075b0">&#9670;&nbsp;</a></span>getFlattenedFieldInfoVec()</h2>
1254
1137
 
1255
1138
  <div class="memitem">
1256
1139
  <div class="memproto">
1257
1140
  <table class="memname">
1258
1141
  <tr>
1259
- <td class="memname">const std::vector&lt; <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> &gt; &amp; SymbolTableInfo::getFattenFieldOffsetVec </td>
1142
+ <td class="memname">const std::vector&lt; <a class="el" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> &gt; &amp; SymbolTableInfo::getFlattenedFieldInfoVec </td>
1260
1143
  <td>(</td>
1261
1144
  <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
1262
1145
  <td class="paramname"><em>T</em></td><td>)</td>
@@ -1265,34 +1148,28 @@ Friends</h2></td></tr>
1265
1148
  </table>
1266
1149
  </div><div class="memdoc">
1267
1150
 
1268
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00486">486</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1269
- <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(T)-&gt;second-&gt;getFieldOffsetVec();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1151
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00330">330</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1152
+ <div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;{</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(T)-&gt;second-&gt;getFlattenedFieldInfoVec();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1270
1153
  </div><!-- fragment -->
1271
1154
  </div>
1272
1155
  </div>
1273
- <a id="ac26583169a343e7a9f751e4ec60f7b3d"></a>
1274
- <h2 class="memtitle"><span class="permalink"><a href="#ac26583169a343e7a9f751e4ec60f7b3d">&#9670;&nbsp;</a></span>getFields()</h2>
1156
+ <a id="a666d1dff7a629bd34abbd2031c1037a4"></a>
1157
+ <h2 class="memtitle"><span class="permalink"><a href="#a666d1dff7a629bd34abbd2031c1037a4">&#9670;&nbsp;</a></span>getFlatternedFieldType()</h2>
1275
1158
 
1276
1159
  <div class="memitem">
1277
1160
  <div class="memproto">
1278
1161
  <table class="memname">
1279
1162
  <tr>
1280
- <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SymbolTableInfo::getFields </td>
1163
+ <td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::getFlatternedFieldType </td>
1281
1164
  <td>(</td>
1282
- <td class="paramtype">std::vector&lt; <a class="el" href="classSVF_1_1LocationSet.html">LocationSet</a> &gt; &amp;&#160;</td>
1283
- <td class="paramname"><em>fields</em>, </td>
1284
- </tr>
1285
- <tr>
1286
- <td class="paramkey"></td>
1287
- <td></td>
1288
1165
  <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
1289
- <td class="paramname"><em>T</em>, </td>
1166
+ <td class="paramname"><em>baseType</em>, </td>
1290
1167
  </tr>
1291
1168
  <tr>
1292
1169
  <td class="paramkey"></td>
1293
1170
  <td></td>
1294
1171
  <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1295
- <td class="paramname"><em>msz</em>&#160;</td>
1172
+ <td class="paramname"><em>field_idx</em>&#160;</td>
1296
1173
  </tr>
1297
1174
  <tr>
1298
1175
  <td></td>
@@ -1302,36 +1179,8 @@ Friends</h2></td></tr>
1302
1179
  </table>
1303
1180
  </div><div class="memdoc">
1304
1181
 
1305
- <p>Replace fields with flatten fields of T if the number of its fields is larger than msz. </p>
1306
- <p>Replace fields with flatten fields of T if the number of its fields is larger than msz. </p>
1307
- <p>Replace fields with T's flatten fields. </p>
1308
-
1309
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00277">277</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1310
- <div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;PointerType&gt;(T))</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; T = T-&gt;getContainedType(0);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">const</span> std::vector&lt;FieldInfo&gt;&amp; stVec = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a3fa4043c6e33a5b1daaa65f206b6a843">getFlattenFieldInfoVec</a>(T);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = stVec.size();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; fields.clear();</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FieldInfo&gt;::const_iterator it = stVec.begin(), eit = stVec.end(); it!=eit; ++it)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; fields.push_back(<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(*it));</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> sz;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;}</div><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>
1311
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a3fa4043c6e33a5b1daaa65f206b6a843"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a3fa4043c6e33a5b1daaa65f206b6a843">SVF::SymbolTableInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">const std::vector&lt; FieldInfo &gt; &amp; getFlattenFieldInfoVec(const Type *T)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00491">SymbolTableInfo.cpp:491</a></div></div>
1312
- <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#l00059">SymbolTableInfo.cpp:59</a></div></div>
1313
- <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00093">LocationSet.h:93</a></div></div>
1314
- </div><!-- fragment -->
1315
- </div>
1316
- </div>
1317
- <a id="a3fa4043c6e33a5b1daaa65f206b6a843"></a>
1318
- <h2 class="memtitle"><span class="permalink"><a href="#a3fa4043c6e33a5b1daaa65f206b6a843">&#9670;&nbsp;</a></span>getFlattenFieldInfoVec()</h2>
1319
-
1320
- <div class="memitem">
1321
- <div class="memproto">
1322
- <table class="memname">
1323
- <tr>
1324
- <td class="memname">const std::vector&lt; <a class="el" href="classSVF_1_1FieldInfo.html">FieldInfo</a> &gt; &amp; SymbolTableInfo::getFlattenFieldInfoVec </td>
1325
- <td>(</td>
1326
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
1327
- <td class="paramname"><em>T</em></td><td>)</td>
1328
- <td></td>
1329
- </tr>
1330
- </table>
1331
- </div><div class="memdoc">
1332
-
1333
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00491">491</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1334
- <div class="fragment"><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">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(T)-&gt;second-&gt;getFlattenFieldInfoVec();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1182
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00340">340</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1183
+ <div class="fragment"><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(baseType)-&gt;second-&gt;getFlatternedFieldType(field_idx);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1335
1184
  </div><!-- fragment -->
1336
1185
  </div>
1337
1186
  </div>
@@ -1359,7 +1208,7 @@ Friends</h2></td></tr>
1359
1208
  </div><div class="memdoc">
1360
1209
 
1361
1210
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00309">309</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
1362
- <div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00414">SymbolTableInfo.h:414</a></div></div>
1211
+ <div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abb8550c9ef856e45cb7675c3796f9a35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">SVF::SymbolTableInfo::maxStSize</a></div><div class="ttdeci">u32_t maxStSize</div><div class="ttdoc">The number of fields in max_struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00411">SymbolTableInfo.h:411</a></div></div>
1363
1212
  </div><!-- fragment -->
1364
1213
  </div>
1365
1214
  </div>
@@ -1459,13 +1308,13 @@ Friends</h2></td></tr>
1459
1308
  <p>Get modulus offset given the type information </p>
1460
1309
  <p>if the offset is negative, it's possible that we're looking for an obj node out of range of current struct. Make the offset positive so we can still get a node within current struct to represent this obj. </p>
1461
1310
 
1462
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00353">353</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1463
- <div class="fragment"><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;{</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> offset = ls.<a class="code" href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">getOffset</a>();</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span>(offset &lt; 0)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create a gep node with negative offset.&quot;</span>);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; offset = abs(offset);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; offset = offset % maxOffset;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; offset = 0;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;}</div><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>
1311
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00191">191</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1312
+ <div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> offset = ls.<a class="code" href="classSVF_1_1LocationSet.html#ac098bc95299002b9016684fa7f2799ca">accumulateConstantOffset</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span>(offset &lt; 0)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create a gep node with negative offset.&quot;</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; offset = abs(offset);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; offset = offset % maxOffset;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; offset = 0;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;}</div><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>
1464
1313
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00069">SVFUtil.cpp:69</a></div></div>
1465
1314
  <div class="ttc" id="namespaceSVF_html_a2db29836a72e8d86e9baa6d8d55d2978"><div class="ttname"><a href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a></div><div class="ttdeci">signed long Size_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
1466
- <div class="ttc" id="classSVF_1_1MemObj_html_afccbd809fe7c2acf4741383987036807"><div class="ttname"><a href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">Size_t getMaxFieldOffsetLimit() const</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00811">SymbolTableInfo.cpp:811</a></div></div>
1467
- <div class="ttc" id="classSVF_1_1LocationSet_html_ab85c3707152e03722bd631b2525f223e"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">SVF::LocationSet::getOffset</a></div><div class="ttdeci">Size_t getOffset() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00193">LocationSet.h:193</a></div></div>
1468
- <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00093">LocationSet.h:93</a></div></div>
1315
+ <div class="ttc" id="classSVF_1_1MemObj_html_afccbd809fe7c2acf4741383987036807"><div class="ttname"><a href="classSVF_1_1MemObj.html#afccbd809fe7c2acf4741383987036807">SVF::MemObj::getMaxFieldOffsetLimit</a></div><div class="ttdeci">Size_t getMaxFieldOffsetLimit() const</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00643">SymbolTableInfo.cpp:643</a></div></div>
1316
+ <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
1317
+ <div class="ttc" id="classSVF_1_1LocationSet_html_ac098bc95299002b9016684fa7f2799ca"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ac098bc95299002b9016684fa7f2799ca">SVF::LocationSet::accumulateConstantOffset</a></div><div class="ttdeci">Size_t accumulateConstantOffset() const</div><div class="ttdoc">Get methods. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00154">LocationSet.h:154</a></div></div>
1469
1318
  </div><!-- fragment -->
1470
1319
  </div>
1471
1320
  </div>
@@ -1530,45 +1379,14 @@ Friends</h2></td></tr>
1530
1379
  </div><!-- fragment -->
1531
1380
  </div>
1532
1381
  </div>
1533
- <a id="a573bd5208467b2f905f5b2b1684feac8"></a>
1534
- <h2 class="memtitle"><span class="permalink"><a href="#a573bd5208467b2f905f5b2b1684feac8">&#9670;&nbsp;</a></span>getOrigSubTypeWithByteOffset()</h2>
1382
+ <a id="a866085ff37b7841606c523817c621f49"></a>
1383
+ <h2 class="memtitle"><span class="permalink"><a href="#a866085ff37b7841606c523817c621f49">&#9670;&nbsp;</a></span>getOriginalFieldType()</h2>
1535
1384
 
1536
1385
  <div class="memitem">
1537
1386
  <div class="memproto">
1538
1387
  <table class="memname">
1539
1388
  <tr>
1540
- <td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::getOrigSubTypeWithByteOffset </td>
1541
- <td>(</td>
1542
- <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
1543
- <td class="paramname"><em>baseType</em>, </td>
1544
- </tr>
1545
- <tr>
1546
- <td class="paramkey"></td>
1547
- <td></td>
1548
- <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1549
- <td class="paramname"><em>byteOffset</em>&#160;</td>
1550
- </tr>
1551
- <tr>
1552
- <td></td>
1553
- <td>)</td>
1554
- <td></td><td></td>
1555
- </tr>
1556
- </table>
1557
- </div><div class="memdoc">
1558
-
1559
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00501">501</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1560
- <div class="fragment"><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">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(baseType)-&gt;second-&gt;getFieldTypeWithByteOffset(byteOffset);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1561
- </div><!-- fragment -->
1562
- </div>
1563
- </div>
1564
- <a id="ad7dec8a89931ef96a26c7f1d23062702"></a>
1565
- <h2 class="memtitle"><span class="permalink"><a href="#ad7dec8a89931ef96a26c7f1d23062702">&#9670;&nbsp;</a></span>getOrigSubTypeWithFldInx()</h2>
1566
-
1567
- <div class="memitem">
1568
- <div class="memproto">
1569
- <table class="memname">
1570
- <tr>
1571
- <td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::getOrigSubTypeWithFldInx </td>
1389
+ <td class="memname">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> * SymbolTableInfo::getOriginalFieldType </td>
1572
1390
  <td>(</td>
1573
1391
  <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
1574
1392
  <td class="paramname"><em>baseType</em>, </td>
@@ -1586,9 +1404,10 @@ Friends</h2></td></tr>
1586
1404
  </tr>
1587
1405
  </table>
1588
1406
  </div><div class="memdoc">
1407
+ <p>struct A { int id; int salary; }; struct B { char name[20]; struct A a;} B b; OriginalFieldType of b with field_idx 1 : Struct A FlatternedFieldType of b with field_idx 1 : int </p>
1589
1408
 
1590
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00496">496</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1591
- <div class="fragment"><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(baseType)-&gt;second-&gt;getFieldTypeWithFldIdx(field_idx);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1409
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00335">335</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1410
+ <div class="fragment"><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">getStructInfoIter</a>(baseType)-&gt;second-&gt;getOriginalFieldType(field_idx);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a075a16b154514e282fcdd6f116a99e43"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a075a16b154514e282fcdd6f116a99e43">SVF::SymbolTableInfo::getStructInfoIter</a></div><div class="ttdeci">TypeToFieldInfoMap::iterator getStructInfoIter(const Type *T)</div><div class="ttdoc">Get struct info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00347">SymbolTableInfo.h:347</a></div></div>
1592
1411
  </div><!-- fragment -->
1593
1412
  </div>
1594
1413
  </div>
@@ -1681,7 +1500,7 @@ Friends</h2></td></tr>
1681
1500
  <p>Get an iterator for StructInfo, designed as internal methods </p>
1682
1501
 
1683
1502
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00347">347</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
1684
- <div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(T);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; TypeToFieldInfoMap::iterator it = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end())</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> it;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(T);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
1503
+ <div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(T);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; TypeToFieldInfoMap::iterator it = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end())</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> it;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(T);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad8b9fa0a4e4b91efb80586e692bd0dcd"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">SVF::SymbolTableInfo::typeToFieldInfo</a></div><div class="ttdeci">TypeToFieldInfoMap typeToFieldInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00405">SymbolTableInfo.h:405</a></div></div>
1685
1504
  <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>
1686
1505
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aa99cab5480116905dd41ab0ad24b9462"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">SVF::SymbolTableInfo::collectTypeInfo</a></div><div class="ttdeci">void collectTypeInfo(const Type *T)</div><div class="ttdoc">Collect type info. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00072">SymbolTableInfo.cpp:72</a></div></div>
1687
1506
  </div><!-- fragment -->
@@ -1735,8 +1554,8 @@ Friends</h2></td></tr>
1735
1554
 
1736
1555
  <p>Helper method to get the size of the type from target data layout. </p>
1737
1556
 
1738
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00658">658</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1739
- <div class="fragment"><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;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span>(type-&gt;isSized())</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>())-&gt;getTypeStoreSize(const_cast&lt;Type*&gt;(type));</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5fad3e11fbba831ed0940fb715e7dc2d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">SVF::SymbolTableInfo::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdoc">Get target machine data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00169">SymbolTableInfo.h:169</a></div></div>
1557
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00490">490</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1558
+ <div class="fragment"><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;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span>(type-&gt;isSized())</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>())-&gt;getTypeStoreSize(const_cast&lt;Type*&gt;(type));</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5fad3e11fbba831ed0940fb715e7dc2d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">SVF::SymbolTableInfo::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdoc">Get target machine data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00169">SymbolTableInfo.h:169</a></div></div>
1740
1559
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00193">LLVMModule.h:193</a></div></div>
1741
1560
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
1742
1561
  </div><!-- fragment -->
@@ -1769,8 +1588,8 @@ Friends</h2></td></tr>
1769
1588
  </div><div class="memdoc">
1770
1589
  <p>if this struct type does not have any element, i.e., opaque </p>
1771
1590
 
1772
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00668">668</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1773
- <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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getStructLayout( const_cast&lt;StructType *&gt;(sty) );</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5fad3e11fbba831ed0940fb715e7dc2d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">SVF::SymbolTableInfo::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdoc">Get target machine data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00169">SymbolTableInfo.h:169</a></div></div>
1591
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00500">500</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1592
+ <div class="fragment"><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;{</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getMainLLVMModule())-&gt;getStructLayout( const_cast&lt;StructType *&gt;(sty) );</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a5fad3e11fbba831ed0940fb715e7dc2d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5fad3e11fbba831ed0940fb715e7dc2d">SVF::SymbolTableInfo::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdoc">Get target machine data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00169">SymbolTableInfo.h:169</a></div></div>
1774
1593
  <div class="ttc" id="namespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00116">BasicTypes.h:116</a></div></div>
1775
1594
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
1776
1595
  </div><!-- fragment -->
@@ -1805,9 +1624,9 @@ Friends</h2></td></tr>
1805
1624
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00250">250</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
1806
1625
  <div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val))</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">else</span></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; ValueToIDMapTy::const_iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(iter!=<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end() &amp;&amp;<span class="stringliteral">&quot;value sym not found&quot;</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><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>
1807
1626
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_adaed6e68c2f53260ed4c4fc38b5c4721"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">SVF::SymbolTableInfo::nullPtrSymID</a></div><div class="ttdeci">SymID nullPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00229">SymbolTableInfo.h:229</a></div></div>
1808
- <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#l00415">SymbolTableInfo.cpp:415</a></div></div>
1627
+ <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#l00259">SymbolTableInfo.cpp:259</a></div></div>
1809
1628
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a1689fa03795200b501ae3887906e7e72"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">SVF::SymbolTableInfo::blkPtrSymID</a></div><div class="ttdeci">SymID blkPtrSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00224">SymbolTableInfo.h:224</a></div></div>
1810
- <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#l00403">SymbolTableInfo.cpp:403</a></div></div>
1629
+ <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#l00247">SymbolTableInfo.cpp:247</a></div></div>
1811
1630
  <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>
1812
1631
  </div><!-- fragment -->
1813
1632
  </div>
@@ -1867,8 +1686,8 @@ Friends</h2></td></tr>
1867
1686
  </div><div class="memdoc">
1868
1687
 
1869
1688
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00265">265</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
1870
- <div class="fragment"><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val) != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><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#l00415">SymbolTableInfo.cpp:415</a></div></div>
1871
- <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#l00403">SymbolTableInfo.cpp:403</a></div></div>
1689
+ <div class="fragment"><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val) || <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab15112d3900f28525848cbe5fad37deb">isBlackholeSym</a>(val))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val) != <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><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#l00259">SymbolTableInfo.cpp:259</a></div></div>
1690
+ <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#l00247">SymbolTableInfo.cpp:247</a></div></div>
1872
1691
  <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>
1873
1692
  </div><!-- fragment -->
1874
1693
  </div>
@@ -1926,8 +1745,8 @@ Friends</h2></td></tr>
1926
1745
  </div><div class="memdoc">
1927
1746
  <p>Check whether this value is a black hole </p>
1928
1747
 
1929
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00415">415</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1930
- <div class="fragment"><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; <span class="keywordflow">return</span> (SVFUtil::isa&lt;UndefValue&gt;(val));</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div></div><!-- fragment -->
1748
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00259">259</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1749
+ <div class="fragment"><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="keywordflow">return</span> (SVFUtil::isa&lt;UndefValue&gt;(val));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;}</div></div><!-- fragment -->
1931
1750
  </div>
1932
1751
  </div>
1933
1752
  <a id="ad9cdb21e20182f3bc95f04bbb97712f3"></a>
@@ -2064,17 +1883,17 @@ Friends</h2></td></tr>
2064
1883
  </div><div class="memdoc">
2065
1884
  <p>Check whether this value points-to a constant object </p>
2066
1885
 
2067
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00423">423</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2068
- <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; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div><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> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">cppUtil::isValVtbl</a>(const_cast&lt;GlobalVariable*&gt;(v)))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer()){</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">if</span>(v-&gt;isExternalLinkage(v-&gt;getLinkage()))</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(v-&gt;getInitializer()-&gt;getType());</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">const</span> std::vector&lt;FieldInfo&gt; &amp;fields = stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;FieldInfo&gt;::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> &amp;field = *it;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *elemTy = field.<a class="code" href="classSVF_1_1FieldInfo.html#a779ef81046fd403804f74a8562afad63">getFlattenElemTy</a>();</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!SVFUtil::isa&lt;FunctionType&gt;(elemTy) &amp;&amp; <span class="stringliteral">&quot;Initializer of a global is a function?&quot;</span>);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(elemTy))</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</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; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;}</div><div class="ttc" id="classSVF_1_1FieldInfo_html_a779ef81046fd403804f74a8562afad63"><div class="ttname"><a href="classSVF_1_1FieldInfo.html#a779ef81046fd403804f74a8562afad63">SVF::FieldInfo::getFlattenElemTy</a></div><div class="ttdeci">const Type * getFlattenElemTy() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00068">LocationSet.h:68</a></div></div>
2069
- <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>
1886
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00267">267</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1887
+ <div class="fragment"><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;{</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">cppUtil::isValVtbl</a>(const_cast&lt;GlobalVariable*&gt;(v)))</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer()){</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span>(v-&gt;isExternalLinkage(v-&gt;getLinkage()))</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(v-&gt;getInitializer()-&gt;getType());</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> std::vector&lt;FlattenedFieldInfo&gt; &amp;fields = stInfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">for</span> (std::vector&lt;FlattenedFieldInfo&gt;::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FlattenedFieldInfo.html">FlattenedFieldInfo</a> &amp;field = *it;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *elemTy = field.<a class="code" href="classSVF_1_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14">getFlattenElemTy</a>();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!SVFUtil::isa&lt;FunctionType&gt;(elemTy) &amp;&amp; <span class="stringliteral">&quot;Initializer of a global is a function?&quot;</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(elemTy))</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</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>
2070
1888
  <div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
1889
+ <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html_a92c1b65c36feeabf09541c9af4650f14"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html#a92c1b65c36feeabf09541c9af4650f14">SVF::FlattenedFieldInfo::getFlattenElemTy</a></div><div class="ttdeci">const Type * getFlattenElemTy() const</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00059">LocationSet.h:59</a></div></div>
2071
1890
  <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>
2072
- <div class="ttc" id="classSVF_1_1FieldInfo_html"><div class="ttname"><a href="classSVF_1_1FieldInfo.html">SVF::FieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
2073
- <div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FieldInfo &gt; &amp; getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00564">SymbolTableInfo.h:564</a></div></div>
1891
+ <div class="ttc" id="classSVF_1_1FlattenedFieldInfo_html"><div class="ttname"><a href="classSVF_1_1FlattenedFieldInfo.html">SVF::FlattenedFieldInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00045">LocationSet.h:45</a></div></div>
2074
1892
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00123">CPPUtil.cpp:123</a></div></div>
2075
1893
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a90bca8ff906ea48fb5e3a69da463ccab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">SVF::SymbolTableInfo::getStructInfo</a></div><div class="ttdeci">StInfo * getStructInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00361">SymbolTableInfo.h:361</a></div></div>
2076
1894
  <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>
2077
- <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00508">SymbolTableInfo.h:508</a></div></div>
1895
+ <div class="ttc" id="classSVF_1_1StInfo_html_ab5908115f11eccee61bd0759a51d5af0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">SVF::StInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00562">SymbolTableInfo.h:562</a></div></div>
1896
+ <div class="ttc" id="classSVF_1_1StInfo_html"><div class="ttname"><a href="classSVF_1_1StInfo.html">SVF::StInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00505">SymbolTableInfo.h:505</a></div></div>
2078
1897
  </div><!-- fragment -->
2079
1898
  </div>
2080
1899
  </div>
@@ -2134,8 +1953,8 @@ Friends</h2></td></tr>
2134
1953
  <p>special value </p>
2135
1954
  <p>Check whether this value is null pointer </p>
2136
1955
 
2137
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00403">403</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2138
- <div class="fragment"><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">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* v = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">return</span> v-&gt;isNullValue() &amp;&amp; v-&gt;getType()-&gt;isPointerTy();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;}</div><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>
1956
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00247">247</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1957
+ <div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;{</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* v = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div><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; <span class="keywordflow">return</span> v-&gt;isNullValue() &amp;&amp; v-&gt;getType()-&gt;isPointerTy();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div><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>
2139
1958
  </div><!-- fragment -->
2140
1959
  </div>
2141
1960
  </div>
@@ -2214,17 +2033,17 @@ Friends</h2></td></tr>
2214
2033
  <p>Debug method. </p>
2215
2034
  <p>All rest types are scalar type? </p>
2216
2035
 
2217
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00509">509</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2218
- <div class="fragment"><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;{</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *at = SVFUtil::dyn_cast&lt;ArrayType&gt; (type))</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; at-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\tarray type &quot;</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t [element size = &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(at-&gt;getElementType()) &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *st = SVFUtil::dyn_cast&lt;StructType&gt; (type))</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; st-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; std::vector&lt;FieldInfo&gt;&amp; finfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(st)-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordtype">int</span> field_idx = 0;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FieldInfo&gt;::iterator it = finfo.begin(), eit = finfo.end();</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; it!=eit; ++it, field_idx++)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; \tField_idx = &quot;</span> &lt;&lt; (*it).getFlattenFldIdx() &lt;&lt; <span class="stringliteral">&quot; [offset: &quot;</span> &lt;&lt; (*it).getFlattenByteOffset();</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;, field type: &quot;</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; (*it).getFlattenElemTy()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;, field size: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>((*it).getFlattenElemTy());</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;, field stride pair: &quot;</span>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">for</span>(FieldInfo::ElemNumStridePairVec::const_iterator pit = (*it).elemStridePairBegin(),</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; peit = (*it).elemStridePairEnd(); pit!=peit; ++pit)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;[ &quot;</span> &lt;&lt; pit-&gt;first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; pit-&gt;second &lt;&lt; <span class="stringliteral">&quot; ] &quot;</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</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> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt= SVFUtil::dyn_cast&lt;PointerType&gt; (type))</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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sizeInBits = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(type);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> eSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(pt-&gt;getElementType());</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; pt-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot;\t [pointer size = &quot;</span> &lt;&lt; sizeInBits &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot;\t [target size = &quot;</span> &lt;&lt; eSize &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* fu= SVFUtil::dyn_cast&lt;FunctionType&gt; (type))</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; fu-&gt;getReturnType()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;(Function)}\n\n&quot;</span>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</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; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type-&gt;isSingleValueType() &amp;&amp; <span class="stringliteral">&quot;not a single value type, then what else!!&quot;</span>);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> eSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(type);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; type-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot;\t [object size = &quot;</span> &lt;&lt; eSize &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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;}</div><div class="ttc" id="namespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
2036
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00347">347</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2037
+ <div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;{</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *at = SVFUtil::dyn_cast&lt;ArrayType&gt; (type))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; at-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\tarray type &quot;</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t [element size = &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(at-&gt;getElementType()) &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *st = SVFUtil::dyn_cast&lt;StructType&gt; (type))</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; st-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; std::vector&lt;FlattenedFieldInfo&gt;&amp; finfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(st)-&gt;<a class="code" href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">getFlattenedFieldInfoVec</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordtype">int</span> field_idx = 0;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FlattenedFieldInfo&gt;::iterator it = finfo.begin(), eit = finfo.end();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; it!=eit; ++it, field_idx++)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; \tField_idx = &quot;</span> &lt;&lt; (*it).getFlattenFldIdx();</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;, field type: &quot;</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; (*it).getFlattenElemTy()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;, field size: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>((*it).getFlattenElemTy());</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pt= SVFUtil::dyn_cast&lt;PointerType&gt; (type))</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sizeInBits = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(type);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> eSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(pt-&gt;getElementType());</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; pt-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot;\t [pointer size = &quot;</span> &lt;&lt; sizeInBits &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot;\t [target size = &quot;</span> &lt;&lt; eSize &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* fu= SVFUtil::dyn_cast&lt;FunctionType&gt; (type))</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; fu-&gt;getReturnType()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;(Function)}\n\n&quot;</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</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; <span class="keywordflow">else</span></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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type-&gt;isSingleValueType() &amp;&amp; <span class="stringliteral">&quot;not a single value type, then what else!!&quot;</span>);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> eSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(type);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot; {Type: &quot;</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; type-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt;<span class="stringliteral">&quot;\t [object size = &quot;</span> &lt;&lt; eSize &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a6ec0236303089a01fd9da36a8bb84e0a"><div class="ttname"><a href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">SVF::FunctionType</a></div><div class="ttdeci">llvm::FunctionType FunctionType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
2219
2038
  <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>
2220
2039
  <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>
2221
2040
  <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>
2222
2041
  <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>
2223
- <div class="ttc" id="classSVF_1_1StInfo_html_a9bb25646a735d612cf777394fa3ba5d6"><div class="ttname"><a href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">SVF::StInfo::getFlattenFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FieldInfo &gt; &amp; getFlattenFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00564">SymbolTableInfo.h:564</a></div></div>
2224
2042
  <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>
2225
2043
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a90bca8ff906ea48fb5e3a69da463ccab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">SVF::SymbolTableInfo::getStructInfo</a></div><div class="ttdeci">StInfo * getStructInfo(const Type *T)</div><div class="ttdoc">Get a reference to StructInfo. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00361">SymbolTableInfo.h:361</a></div></div>
2226
2044
  <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>
2227
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af4239ff717303dee25f1f4ba60070f9e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">SVF::SymbolTableInfo::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00658">SymbolTableInfo.cpp:658</a></div></div>
2045
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af4239ff717303dee25f1f4ba60070f9e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">SVF::SymbolTableInfo::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00490">SymbolTableInfo.cpp:490</a></div></div>
2046
+ <div class="ttc" id="classSVF_1_1StInfo_html_ab5908115f11eccee61bd0759a51d5af0"><div class="ttname"><a href="classSVF_1_1StInfo.html#ab5908115f11eccee61bd0759a51d5af0">SVF::StInfo::getFlattenedFieldInfoVec</a></div><div class="ttdeci">std::vector&lt; FlattenedFieldInfo &gt; &amp; getFlattenedFieldInfoVec()</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00562">SymbolTableInfo.h:562</a></div></div>
2228
2047
  </div><!-- fragment -->
2229
2048
  </div>
2230
2049
  </div>
@@ -2404,8 +2223,8 @@ Friends</h2></td></tr>
2404
2223
  </table>
2405
2224
  </div><div class="memdoc">
2406
2225
 
2407
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00579">579</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2408
- <div class="fragment"><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">switch</span> (symtype) {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">case</span> SYMTYPE::BlackHole: {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BlackHole&quot;</span>;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">case</span> SYMTYPE::ConstantObj: {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstantObj&quot;</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">case</span> SYMTYPE::BlkPtr: {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BlkPtr&quot;</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">case</span> SYMTYPE::NullPtr: {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;NullPtr&quot;</span>;</div><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="keywordflow">case</span> SYMTYPE::ValSymbol: {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ValSym&quot;</span>;</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">case</span> SYMTYPE::ObjSymbol: {</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ObjSym&quot;</span>;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">case</span> SYMTYPE::RetSymbol: {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;RetSym&quot;</span>;</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">case</span> SYMTYPE::VarargSymbol: {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VarargSym&quot;</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Invalid SYMTYPE&quot;</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><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><!-- fragment -->
2226
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00411">411</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2227
+ <div class="fragment"><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">switch</span> (symtype) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">case</span> SYMTYPE::BlackHole: {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BlackHole&quot;</span>;</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; <span class="keywordflow">case</span> SYMTYPE::ConstantObj: {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstantObj&quot;</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">case</span> SYMTYPE::BlkPtr: {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BlkPtr&quot;</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">case</span> SYMTYPE::NullPtr: {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;NullPtr&quot;</span>;</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">case</span> SYMTYPE::ValSymbol: {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ValSym&quot;</span>;</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; <span class="keywordflow">case</span> SYMTYPE::ObjSymbol: {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ObjSym&quot;</span>;</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">case</span> SYMTYPE::RetSymbol: {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;RetSym&quot;</span>;</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; <span class="keywordflow">case</span> SYMTYPE::VarargSymbol: {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VarargSym&quot;</span>;</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">default</span>: {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Invalid SYMTYPE&quot;</span>;</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; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;}</div></div><!-- fragment -->
2409
2228
  </div>
2410
2229
  </div>
2411
2230
  <a id="a8f3cb8a1db34dd692ee04561f4edeebf"></a>
@@ -2590,7 +2409,7 @@ Friends</h2></td></tr>
2590
2409
 
2591
2410
  <p>The struct type with the most fields. </p>
2592
2411
 
2593
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00411">411</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2412
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00408">408</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2594
2413
 
2595
2414
  </div>
2596
2415
  </div>
@@ -2616,7 +2435,7 @@ Friends</h2></td></tr>
2616
2435
 
2617
2436
  <p>The number of fields in max_struct. </p>
2618
2437
 
2619
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00414">414</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2438
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00411">411</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2620
2439
 
2621
2440
  </div>
2622
2441
  </div>
@@ -2821,7 +2640,7 @@ Friends</h2></td></tr>
2821
2640
  </div><div class="memdoc">
2822
2641
  <p>Every type T is mapped to <a class="el" href="classSVF_1_1StInfo.html">StInfo</a> which contains size (fsize) , offset(foffset) fsize[i] is the number of fields in the largest such struct, else fsize[i] = 1. fsize[0] is always the size of the expanded struct. </p>
2823
2642
 
2824
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00408">408</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2643
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00405">405</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2825
2644
 
2826
2645
  </div>
2827
2646
  </div>