svf-tools 1.0.309 → 1.0.313

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 (418) hide show
  1. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
  5. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +6 -6
  6. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +6 -6
  7. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +22 -22
  8. package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +4 -4
  9. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +5 -5
  10. package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -0
  11. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +59 -57
  12. package/SVF-doxygen/html/html/Andersen_8h_source.html +118 -118
  13. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +6 -6
  14. package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
  15. package/SVF-doxygen/html/html/CHG_8cpp_source.html +54 -55
  16. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  17. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +17 -16
  18. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +16 -16
  19. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
  20. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  22. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +10 -10
  23. package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
  24. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +13 -13
  25. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
  26. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +13 -13
  27. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  28. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +10 -10
  29. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  30. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
  31. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
  33. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +14 -14
  34. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
  37. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +9 -9
  38. package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +13 -13
  40. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +8 -8
  43. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +5 -5
  44. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +10 -10
  45. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +12 -12
  46. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  47. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +5 -5
  48. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +82 -81
  49. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  50. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
  51. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  54. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +9 -9
  55. package/SVF-doxygen/html/html/ICFG_8h_source.html +6 -6
  56. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  57. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  59. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +5 -5
  61. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -2
  64. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +11 -11
  65. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +2 -2
  66. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
  67. package/SVF-doxygen/html/html/MHP_8cpp_source.html +19 -19
  68. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
  69. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  73. package/SVF-doxygen/html/html/MTA_8cpp_source.html +10 -10
  74. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  75. package/SVF-doxygen/html/html/MemModel_8cpp_source.html +8 -52
  76. package/SVF-doxygen/html/html/MemModel_8h_source.html +44 -44
  77. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +19 -19
  78. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
  79. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +3 -3
  80. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  81. package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -2
  82. package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
  83. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  84. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +18 -18
  85. package/SVF-doxygen/html/html/PAGBuilder_8h_source.html +1 -1
  86. package/SVF-doxygen/html/html/PAGEdge_8h_source.html +2 -2
  87. package/SVF-doxygen/html/html/PAGNode_8h_source.html +10 -10
  88. package/SVF-doxygen/html/html/PAG_8cpp_source.html +35 -35
  89. package/SVF-doxygen/html/html/PAG_8h_source.html +21 -21
  90. package/SVF-doxygen/html/html/PCG_8cpp_source.html +10 -10
  91. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  92. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +9 -9
  93. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  94. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +24 -24
  95. package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
  96. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +4 -4
  97. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  98. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +34 -33
  99. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +7 -7
  100. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
  101. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +66 -66
  102. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +16 -16
  103. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +7 -7
  104. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +5 -5
  105. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +22 -22
  106. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +23 -23
  107. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +6 -6
  108. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  109. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +12 -12
  110. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
  111. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +6 -6
  112. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +11 -11
  113. package/SVF-doxygen/html/html/SVFG_8h_source.html +7 -7
  114. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +5 -5
  115. package/SVF-doxygen/html/html/SVFModule_8h.html +3 -0
  116. package/SVF-doxygen/html/html/SVFModule_8h_source.html +53 -46
  117. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  118. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  119. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +10 -10
  120. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +9 -9
  121. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  122. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  123. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
  124. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +25 -18
  125. package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +0 -4
  126. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +36 -38
  127. package/SVF-doxygen/html/html/TCT_8cpp_source.html +13 -13
  128. package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
  129. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  130. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +2 -2
  131. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  132. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
  133. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +7 -7
  134. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  135. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  136. package/SVF-doxygen/html/html/VFG_8cpp_source.html +8 -8
  137. package/SVF-doxygen/html/html/VFG_8h_source.html +7 -7
  138. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
  139. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +12 -12
  140. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +11 -11
  141. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  142. package/SVF-doxygen/html/html/annotated.html +134 -136
  143. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  144. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  145. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +231 -231
  153. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +62 -60
  155. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +43 -43
  157. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +23 -23
  159. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +54 -54
  161. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +42 -42
  163. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +17 -17
  165. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +32 -32
  166. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +40 -40
  168. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType-members.html +1 -1
  169. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +31 -31
  170. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +73 -72
  172. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +132 -129
  176. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  178. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjPN.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjPN.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjPN.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
  185. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +15 -15
  186. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
  187. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +25 -25
  188. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +22 -22
  193. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +6 -6
  194. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  195. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
  196. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +27 -27
  197. package/SVF-doxygen/html/html/classSVF_1_1DummyObjPN.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1DummyValPN.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +8 -8
  200. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +20 -20
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +55 -55
  204. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +25 -25
  205. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +37 -37
  206. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +9 -9
  207. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  208. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  209. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
  210. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +2 -2
  212. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +5 -5
  214. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +47 -47
  215. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +58 -57
  216. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +4 -4
  217. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +1 -1
  221. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +15 -15
  222. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  223. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  225. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  227. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
  228. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +2 -2
  230. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  231. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +18 -18
  233. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  234. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1LocObjTypeInfo.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1LocSymTableInfo.html +2 -2
  238. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
  239. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +33 -33
  240. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +31 -31
  242. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +28 -28
  243. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  244. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  245. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +12 -12
  246. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +7 -7
  247. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +5 -5
  248. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +29 -29
  249. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  250. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +7 -10
  251. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +92 -199
  252. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +18 -18
  253. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
  255. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +3 -3
  256. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +3 -3
  257. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +8 -10
  258. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +67 -167
  259. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1Options.html +5 -5
  261. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +47 -47
  262. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +58 -58
  263. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  264. package/SVF-doxygen/html/html/classSVF_1_1PAGEdge.html +5 -5
  265. package/SVF-doxygen/html/html/classSVF_1_1PAGNode.html +10 -10
  266. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +17 -17
  267. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +17 -17
  269. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +5 -5
  270. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +32 -32
  271. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +4 -4
  272. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +6 -6
  273. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +5 -5
  274. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +10 -10
  275. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +39 -38
  276. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +153 -116
  277. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +22 -22
  278. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +5 -5
  279. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  280. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +2 -2
  281. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  285. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +10 -10
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
  287. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +37 -37
  288. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +8 -8
  289. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
  290. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +2 -2
  291. package/SVF-doxygen/html/html/classSVF_1_1SVFModule-members.html +1 -0
  292. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +114 -81
  293. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  294. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
  295. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +18 -18
  296. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +12 -12
  297. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +14 -14
  299. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +78 -73
  303. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +365 -140
  304. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +37 -37
  305. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  308. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  309. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +11 -11
  311. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +8 -8
  312. package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  315. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +16 -16
  316. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
  318. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  319. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +39 -39
  320. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +12 -12
  321. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +3 -3
  322. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
  323. package/SVF-doxygen/html/html/classes.html +90 -90
  324. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  325. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  326. package/SVF-doxygen/html/html/functions_0x7e.html +5 -8
  327. package/SVF-doxygen/html/html/functions_a.html +13 -10
  328. package/SVF-doxygen/html/html/functions_c.html +31 -28
  329. package/SVF-doxygen/html/html/functions_func.html +12 -9
  330. package/SVF-doxygen/html/html/functions_func_0x7e.html +5 -8
  331. package/SVF-doxygen/html/html/functions_func_c.html +22 -21
  332. package/SVF-doxygen/html/html/functions_func_g.html +11 -13
  333. package/SVF-doxygen/html/html/functions_func_i.html +8 -7
  334. package/SVF-doxygen/html/html/functions_func_l.html +2 -8
  335. package/SVF-doxygen/html/html/functions_func_m.html +1 -1
  336. package/SVF-doxygen/html/html/functions_func_v.html +0 -3
  337. package/SVF-doxygen/html/html/functions_g.html +6 -8
  338. package/SVF-doxygen/html/html/functions_i.html +13 -12
  339. package/SVF-doxygen/html/html/functions_l.html +1 -5
  340. package/SVF-doxygen/html/html/functions_m.html +1 -1
  341. package/SVF-doxygen/html/html/functions_o.html +3 -3
  342. package/SVF-doxygen/html/html/functions_p.html +3 -3
  343. package/SVF-doxygen/html/html/functions_r.html +1 -1
  344. package/SVF-doxygen/html/html/functions_s.html +17 -15
  345. package/SVF-doxygen/html/html/functions_t.html +7 -7
  346. package/SVF-doxygen/html/html/functions_v.html +5 -8
  347. package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
  348. package/SVF-doxygen/html/html/hierarchy.html +2 -4
  349. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  350. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  351. package/SVF-doxygen/html/html/namespaceSVF.html +0 -4
  352. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  353. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +40 -39
  354. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  355. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  356. package/SVF-doxygen/html/html/search/all_1.js +3 -2
  357. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  358. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  359. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  360. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  361. package/SVF-doxygen/html/html/search/all_16.js +1 -2
  362. package/SVF-doxygen/html/html/search/all_1b.js +3 -4
  363. package/SVF-doxygen/html/html/search/all_3.js +5 -4
  364. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  365. package/SVF-doxygen/html/html/search/all_9.js +3 -2
  366. package/SVF-doxygen/html/html/search/all_c.js +2 -3
  367. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  368. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  369. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  370. package/SVF-doxygen/html/html/search/classes_9.js +1 -3
  371. package/SVF-doxygen/html/html/search/functions_0.js +3 -2
  372. package/SVF-doxygen/html/html/search/functions_13.js +0 -1
  373. package/SVF-doxygen/html/html/search/functions_16.js +3 -4
  374. package/SVF-doxygen/html/html/search/functions_2.js +5 -4
  375. package/SVF-doxygen/html/html/search/functions_6.js +2 -2
  376. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  377. package/SVF-doxygen/html/html/search/functions_a.js +1 -3
  378. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  379. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  380. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  381. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  382. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  383. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +1 -1
  384. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +12 -12
  385. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  386. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  387. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html +17 -17
  388. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  389. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +1 -1
  390. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +14 -14
  391. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +20 -20
  392. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +16 -16
  393. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  394. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SmallVector_3_01T_00_01N_01_4_01_4.html +3 -3
  395. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  396. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  397. package/SVF-doxygen/html/html/svf-ex_8cpp.html +8 -7
  398. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +6 -5
  399. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  400. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  401. package/include/Graphs/GenericGraph.h +5 -8
  402. package/include/MemoryModel/MemModel.h +5 -21
  403. package/include/MemoryModel/PersistentPointsToCache.h +13 -7
  404. package/include/MemoryModel/PointerAnalysisImpl.h +1 -0
  405. package/include/SVF-FE/CHG.h +1 -1
  406. package/include/SVF-FE/SymbolTableInfo.h +14 -56
  407. package/include/Util/SVFBasicTypes.h +4 -2
  408. package/include/Util/SVFModule.h +16 -0
  409. package/include/WPA/Andersen.h +2 -7
  410. package/lib/Graphs/PAG.cpp +3 -10
  411. package/lib/MemoryModel/MemModel.cpp +10 -436
  412. package/lib/SVF-FE/CHG.cpp +0 -6
  413. package/lib/SVF-FE/CPPUtil.cpp +2 -0
  414. package/lib/SVF-FE/SymbolTableInfo.cpp +139 -12
  415. package/lib/Util/Options.cpp +2 -10
  416. package/lib/WPA/Andersen.cpp +13 -1
  417. package/package.json +1 -1
  418. package/tools/Example/svf-ex.cpp +6 -3
@@ -78,15 +78,6 @@ $(function() {
78
78
  <div class="contents">
79
79
 
80
80
  <p><code>#include &lt;<a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>&gt;</code></p>
81
- <div class="dynheader">
82
- Inheritance diagram for SVF::SymbolTableInfo:</div>
83
- <div class="dyncontent">
84
- <div class="center">
85
- <img src="classSVF_1_1SymbolTableInfo.png" usemap="#SVF::SymbolTableInfo_map" alt=""/>
86
- <map id="SVF::SymbolTableInfo_map" name="SVF::SymbolTableInfo_map">
87
- <area href="classSVF_1_1LocSymTableInfo.html" alt="SVF::LocSymTableInfo" shape="rect" coords="0,56,140,80"/>
88
- </map>
89
- </div></div>
90
81
  <table class="memberdecls">
91
82
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
92
83
  Public Types</h2></td></tr>
@@ -253,6 +244,21 @@ Protected Member Functions</h2></td></tr>
253
244
  <tr class="memitem:abf7567c655499d6744de8df689c11fad"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T)</td></tr>
254
245
  <tr class="memdesc:abf7567c655499d6744de8df689c11fad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Collect simple type (non-aggregate) info. <a href="#abf7567c655499d6744de8df689c11fad">More...</a><br /></td></tr>
255
246
  <tr class="separator:abf7567c655499d6744de8df689c11fad"><td class="memSeparator" colspan="2">&#160;</td></tr>
247
+ <tr class="memitem:aa392fef870b1d3adfc3fd18116782439"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#aa392fef870b1d3adfc3fd18116782439">createObjTypeInfo</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
248
+ <tr class="memdesc:aa392fef870b1d3adfc3fd18116782439"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an objectInfo based on LLVM value. <a href="#aa392fef870b1d3adfc3fd18116782439">More...</a><br /></td></tr>
249
+ <tr class="separator:aa392fef870b1d3adfc3fd18116782439"><td class="memSeparator" colspan="2">&#160;</td></tr>
250
+ <tr class="memitem:a76971ba9b579907ef937cd7adda89562"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a76971ba9b579907ef937cd7adda89562">createObjTypeInfo</a> (const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type=nullptr)</td></tr>
251
+ <tr class="memdesc:a76971ba9b579907ef937cd7adda89562"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy object) <a href="#a76971ba9b579907ef937cd7adda89562">More...</a><br /></td></tr>
252
+ <tr class="separator:a76971ba9b579907ef937cd7adda89562"><td class="memSeparator" colspan="2">&#160;</td></tr>
253
+ <tr class="memitem:a96067de8a2425b4f4c227fd7e472071d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a96067de8a2425b4f4c227fd7e472071d">initTypeInfo</a> (<a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *typeinfo, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *value)</td></tr>
254
+ <tr class="memdesc:a96067de8a2425b4f4c227fd7e472071d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize TypeInfo based on LLVM Value. <a href="#a96067de8a2425b4f4c227fd7e472071d">More...</a><br /></td></tr>
255
+ <tr class="separator:a96067de8a2425b4f4c227fd7e472071d"><td class="memSeparator" colspan="2">&#160;</td></tr>
256
+ <tr class="memitem:a36140622c6761ac5d1307308ff5b147f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SymbolTableInfo.html#a36140622c6761ac5d1307308ff5b147f">analyzeGlobalStackObjType</a> (<a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *typeinfo, const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
257
+ <tr class="memdesc:a36140622c6761ac5d1307308ff5b147f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analyse types of all flattened fields of this object. <a href="#a36140622c6761ac5d1307308ff5b147f">More...</a><br /></td></tr>
258
+ <tr class="separator:a36140622c6761ac5d1307308ff5b147f"><td class="memSeparator" colspan="2">&#160;</td></tr>
259
+ <tr class="memitem:a2f8ec960e3462cef867b1ac6e524dea8"><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#a2f8ec960e3462cef867b1ac6e524dea8">getObjSize</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val)</td></tr>
260
+ <tr class="memdesc:a2f8ec960e3462cef867b1ac6e524dea8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return size of this object based on LLVM value. <a href="#a2f8ec960e3462cef867b1ac6e524dea8">More...</a><br /></td></tr>
261
+ <tr class="separator:a2f8ec960e3462cef867b1ac6e524dea8"><td class="memSeparator" colspan="2">&#160;</td></tr>
256
262
  </table><table class="memberdecls">
257
263
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
258
264
  Protected Attributes</h2></td></tr>
@@ -526,10 +532,10 @@ Static Private Attributes</h2></td></tr>
526
532
  <p>Constructor. </p>
527
533
 
528
534
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00098">98</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
529
- <div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; :</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <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="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</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#l00443">SymbolTableInfo.h:443</a></div></div>
535
+ <div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; :</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <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="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</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#l00455">SymbolTableInfo.h:455</a></div></div>
530
536
  <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#l00094">SymbolTableInfo.h:94</a></div></div>
531
537
  <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#l00082">SymbolTableInfo.h:82</a></div></div>
532
- <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#l00446">SymbolTableInfo.h:446</a></div></div>
538
+ <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#l00458">SymbolTableInfo.h:458</a></div></div>
533
539
  <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#l00091">SymbolTableInfo.h:91</a></div></div>
534
540
  </div><!-- fragment -->
535
541
  </div>
@@ -558,11 +564,66 @@ Static Private Attributes</h2></td></tr>
558
564
  </div><div class="memdoc">
559
565
 
560
566
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00114">114</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
561
- <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#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</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#l00567">SymbolTableInfo.cpp:567</a></div></div>
567
+ <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#a87cc3289dd69e5378487dd9ae2c9e82e">destroy</a>();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</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#l00690">SymbolTableInfo.cpp:690</a></div></div>
562
568
  </div><!-- fragment -->
563
569
  </div>
564
570
  </div>
565
571
  <h2 class="groupheader">Member Function Documentation</h2>
572
+ <a id="a36140622c6761ac5d1307308ff5b147f"></a>
573
+ <h2 class="memtitle"><span class="permalink"><a href="#a36140622c6761ac5d1307308ff5b147f">&#9670;&nbsp;</a></span>analyzeGlobalStackObjType()</h2>
574
+
575
+ <div class="memitem">
576
+ <div class="memproto">
577
+ <table class="mlabels">
578
+ <tr>
579
+ <td class="mlabels-left">
580
+ <table class="memname">
581
+ <tr>
582
+ <td class="memname">void SymbolTableInfo::analyzeGlobalStackObjType </td>
583
+ <td>(</td>
584
+ <td class="paramtype"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *&#160;</td>
585
+ <td class="paramname"><em>typeinfo</em>, </td>
586
+ </tr>
587
+ <tr>
588
+ <td class="paramkey"></td>
589
+ <td></td>
590
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
591
+ <td class="paramname"><em>val</em>&#160;</td>
592
+ </tr>
593
+ <tr>
594
+ <td></td>
595
+ <td>)</td>
596
+ <td></td><td></td>
597
+ </tr>
598
+ </table>
599
+ </td>
600
+ <td class="mlabels-right">
601
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
602
+ </tr>
603
+ </table>
604
+ </div><div class="memdoc">
605
+
606
+ <p>Analyse types of all flattened fields of this object. </p>
607
+ <p>Analyse types of all flattened fields of this object </p>
608
+
609
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00054">54</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
610
+ <div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * refty = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;PointerType&gt;(refty) &amp;&amp; <span class="stringliteral">&quot;this value should be a pointer type!&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = refty-&gt;getElementType();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">bool</span> isPtrObj = <span class="keyword">false</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// Find the inter nested array element</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *AT= SVFUtil::dyn_cast&lt;ArrayType&gt;(elemTy))</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; elemTy = AT-&gt;getElementType();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span>(elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantArray&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">ObjTypeInfo::CONST_ARRAY_OBJ</a>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">ObjTypeInfo::VAR_ARRAY_OBJ</a>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *ST= SVFUtil::dyn_cast&lt;StructType&gt;(elemTy))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> std::vector&lt;FieldInfo&gt;&amp; flattenFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aed11023ad3dfe7c5f5c559e2f2b23e23">getFlattenFieldInfoVec</a>(ST);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span>(std::vector&lt;FieldInfo&gt;::const_iterator it = flattenFields.begin(), eit = flattenFields.end();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span>((*it).getFlattenElemTy()-&gt;isPointerTy())</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val) &amp;&amp; SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;hasInitializer()</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; &amp;&amp; SVFUtil::isa&lt;ConstantStruct&gt;(SVFUtil::cast&lt;GlobalVariable&gt;(val)-&gt;getInitializer()))</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">ObjTypeInfo::CONST_STRUCT_OBJ</a>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">ObjTypeInfo::VAR_STRUCT_OBJ</a>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTy-&gt;isPointerTy())</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; isPtrObj = <span class="keyword">true</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(isPtrObj)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">ObjTypeInfo::HASPTR_OBJ</a>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aff4142c0c411dea07b484a19af514047">SVF::ObjTypeInfo::CONST_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00144">MemModel.h:144</a></div></div>
611
+ <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>
612
+ <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>
613
+ <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>
614
+ <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>
615
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aed11023ad3dfe7c5f5c559e2f2b23e23"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aed11023ad3dfe7c5f5c559e2f2b23e23">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_8h_source.html#l00395">SymbolTableInfo.h:395</a></div></div>
616
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_ad6fb2bfae3d4b73a6821a87106f65f49"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">SVF::ObjTypeInfo::setFlag</a></div><div class="ttdeci">void setFlag(MEMTYPE mask)</div><div class="ttdoc">Flag for this object type. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00202">MemModel.h:202</a></div></div>
617
+ <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>
618
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830adedc43e0fcaebf433120869aa9307b1c">SVF::ObjTypeInfo::VAR_ARRAY_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00142">MemModel.h:142</a></div></div>
619
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad17b2a35fb492561c4011dbe3880c6c9">SVF::ObjTypeInfo::HASPTR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00146">MemModel.h:146</a></div></div>
620
+ <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#l00214">SymbolTableInfo.cpp:214</a></div></div>
621
+ <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>
622
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aaf98981bd15b41f543fd99d0c6222f08">SVF::ObjTypeInfo::VAR_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00141">MemModel.h:141</a></div></div>
623
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830a6443b9fadd2d34e00832b2215a120ebd">SVF::ObjTypeInfo::CONST_STRUCT_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00143">MemModel.h:143</a></div></div>
624
+ </div><!-- fragment -->
625
+ </div>
626
+ </div>
566
627
  <a id="a05ca2987d9f8716c24e489bec53502f4"></a>
567
628
  <h2 class="memtitle"><span class="permalink"><a href="#a05ca2987d9f8716c24e489bec53502f4">&#9670;&nbsp;</a></span>blackholeSymID()</h2>
568
629
 
@@ -639,16 +700,16 @@ Static Private Attributes</h2></td></tr>
639
700
  <p>This method identify which is value sym and which is object sym </p>
640
701
  <p>if (SVFUtil::isa&lt;InlineAsm&gt;(Callee)) </p>
641
702
 
642
- <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>
643
- <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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVFUtil::increaseStackSize</a>();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a> = svfModule;</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; <a class="code" href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">StInfo::setMaxFieldLimit</a>(<a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="comment">// Object #0 is black hole the object that may point to any object</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> == <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">BlackHole</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">BlackHole</a>));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6d14f88dbbb3190fd37b4cf4e1b6e032">createBlkOrConstantObj</a>(<a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">BlackHole</a>);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="comment">// Object #1 always represents the constant</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> == <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">ConstantObj</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">ConstantObj</a>));</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6d14f88dbbb3190fd37b4cf4e1b6e032">createBlkOrConstantObj</a>(<a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">ConstantObj</a>);</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="comment">// Pointer #2 always represents the pointer points-to black hole.</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> == <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c">BlkPtr</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c">BlkPtr</a>));</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="comment">// Pointer #3 always represents the null pointer.</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> == <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba21301438d5e1788db46a84e720e80a68">NullPtr</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba21301438d5e1788db46a84e720e80a68">NullPtr</a>));</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// Add symbols for all the globals .</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVFModule::global_iterator</a> I = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">global_begin</a>(), E =</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">global_end</a>(); I != E; ++I)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(*I);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">// Add symbols for all the global aliases</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVFModule::alias_iterator</a> I = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">alias_begin</a>(), E =</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">alias_end</a>(); I != E; I++)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(*I);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>((*I)-&gt;getAliasee());</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;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> F = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); F != E; ++F)</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *F;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(fun);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae4a7d078322e99af965193c82b357239">collectRet</a>(fun);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> (fun-&gt;getFunctionType()-&gt;isVarArg())</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae1fe33260d2a2d21f2c33aaf1b58fee3">collectVararg</a>(fun);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// Add symbols for all formal parameters.</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">for</span> (Function::arg_iterator I = fun-&gt;arg_begin(), E = fun-&gt;arg_end();</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; I != E; ++I)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(&amp;*I);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(inst);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="comment">// initialization for some special instructions</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">//{@</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *st = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(st-&gt;getPointerOperand());</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(st-&gt;getValueOperand());</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a> *ld = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(ld-&gt;getPointerOperand());</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">PHINode</a> *phi = SVFUtil::dyn_cast&lt;PHINode&gt;(inst))</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; phi-&gt;getNumIncomingValues(); ++i)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(phi-&gt;getIncomingValue(i));</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a> *gep = SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; inst))</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(gep-&gt;getPointerOperand());</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307">SelectInst</a> *sel = SVFUtil::dyn_cast&lt;SelectInst&gt;(inst))</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(sel-&gt;getTrueValue());</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(sel-&gt;getFalseValue());</div><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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">BinaryOperator</a> *binary = SVFUtil::dyn_cast&lt;BinaryOperator&gt;(inst))</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; binary-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(binary-&gt;getOperand(i));</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">UnaryOperator</a> *unary = SVFUtil::dyn_cast&lt;UnaryOperator&gt;(inst))</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; unary-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(unary-&gt;getOperand(i));</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">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a> *cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(inst))</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; cmp-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(cmp-&gt;getOperand(i));</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a> = SVFUtil::dyn_cast&lt;CastInst&gt;(inst))</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>-&gt;getOperand(0));</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a> *ret = SVFUtil::dyn_cast&lt;ReturnInst&gt;(inst))</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span>(ret-&gt;getReturnValue())</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(ret-&gt;getReturnValue());</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *br = SVFUtil::dyn_cast&lt;BranchInst&gt;(inst))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = br-&gt;isConditional() ? br-&gt;getCondition() : br-&gt;getOperand(0);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(opnd);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> *sw = SVFUtil::dyn_cast&lt;SwitchInst&gt;(inst))</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(sw-&gt;getCondition());</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>.insert(cs);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> it = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>();</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; it != cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>(); ++it)</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(*it);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="comment">// Calls to inline asm need to be added as well because the callee isn&#39;t</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="comment">// referenced anywhere else.</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *Callee = cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>();</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(Callee);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="comment">//TODO handle inlineAsm</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#ae42c5bb7db4d2142adc2e7e904eb36c7">endSymbolAllocation</a>();</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">Options::SymTabPrint</a>) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">dump</a>();</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a6d14f88dbbb3190fd37b4cf4e1b6e032"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a6d14f88dbbb3190fd37b4cf4e1b6e032">SVF::SymbolTableInfo::createBlkOrConstantObj</a></div><div class="ttdeci">void createBlkOrConstantObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00205">SymbolTableInfo.h:205</a></div></div>
644
- <div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00127">SVFModule.h:127</a></div></div>
703
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00534">534</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
704
+ <div class="fragment"><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;{</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVFUtil::increaseStackSize</a>();</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af8fdaaa03cd2ae9b7d50f57bc678b8ba">mod</a> = svfModule;</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="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">StInfo::setMaxFieldLimit</a>(<a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="comment">// Object #0 is black hole the object that may point to any object</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> == <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">BlackHole</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">BlackHole</a>));</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6d14f88dbbb3190fd37b4cf4e1b6e032">createBlkOrConstantObj</a>(<a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">BlackHole</a>);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="comment">// Object #1 always represents the constant</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> == <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">ConstantObj</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">ConstantObj</a>));</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a6d14f88dbbb3190fd37b4cf4e1b6e032">createBlkOrConstantObj</a>(<a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">ConstantObj</a>);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="comment">// Pointer #2 always represents the pointer points-to black hole.</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> == <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c">BlkPtr</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>++, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c">BlkPtr</a>));</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// Pointer #3 always represents the null pointer.</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a> == <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba21301438d5e1788db46a84e720e80a68">NullPtr</a> &amp;&amp; <span class="stringliteral">&quot;Something changed!&quot;</span>);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a125faa0295b38d027b35bc3d76b3afdd">totalSymNum</a>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba21301438d5e1788db46a84e720e80a68">NullPtr</a>));</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">// Add symbols for all the globals .</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVFModule::global_iterator</a> I = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">global_begin</a>(), E =</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">global_end</a>(); I != E; ++I)</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(*I);</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;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="comment">// Add symbols for all the global aliases</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVFModule::alias_iterator</a> I = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">alias_begin</a>(), E =</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">alias_end</a>(); I != E; I++)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(*I);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>((*I)-&gt;getAliasee());</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVFModule::llvm_iterator</a> F = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), E = svfModule-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>(); F != E; ++F)</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = *F;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(fun);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae4a7d078322e99af965193c82b357239">collectRet</a>(fun);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span> (fun-&gt;getFunctionType()-&gt;isVarArg())</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae1fe33260d2a2d21f2c33aaf1b58fee3">collectVararg</a>(fun);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="comment">// Add symbols for all formal parameters.</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">for</span> (Function::arg_iterator I = fun-&gt;arg_begin(), E = fun-&gt;arg_end();</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; I != E; ++I)</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; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(&amp;*I);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</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="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin(*fun), E = inst_end(*fun); II != E; ++II)</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(inst);</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="comment">// initialization for some special instructions</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="comment">//{@</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *st = SVFUtil::dyn_cast&lt;StoreInst&gt;(inst))</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(st-&gt;getPointerOperand());</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(st-&gt;getValueOperand());</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a> *ld = SVFUtil::dyn_cast&lt;LoadInst&gt;(inst))</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(ld-&gt;getPointerOperand());</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">PHINode</a> *phi = SVFUtil::dyn_cast&lt;PHINode&gt;(inst))</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; phi-&gt;getNumIncomingValues(); ++i)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(phi-&gt;getIncomingValue(i));</div><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; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a> *gep = SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; inst))</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(gep-&gt;getPointerOperand());</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307">SelectInst</a> *sel = SVFUtil::dyn_cast&lt;SelectInst&gt;(inst))</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(sel-&gt;getTrueValue());</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(sel-&gt;getFalseValue());</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aad5d26ab07a5d1314bdb8f54e0fcdb22">BinaryOperator</a> *binary = SVFUtil::dyn_cast&lt;BinaryOperator&gt;(inst))</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; binary-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(binary-&gt;getOperand(i));</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">UnaryOperator</a> *unary = SVFUtil::dyn_cast&lt;UnaryOperator&gt;(inst))</div><div class="line"><a name="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> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; unary-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(unary-&gt;getOperand(i));</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="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a> *cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(inst))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; {</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; cmp-&gt;getNumOperands(); i++)</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(cmp-&gt;getOperand(i));</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">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a> = SVFUtil::dyn_cast&lt;CastInst&gt;(inst))</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d100868bf63b968d387eb50e9603f7c">cast</a>-&gt;getOperand(0));</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">ReturnInst</a> *ret = SVFUtil::dyn_cast&lt;ReturnInst&gt;(inst))</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">if</span>(ret-&gt;getReturnValue())</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(ret-&gt;getReturnValue());</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a> *br = SVFUtil::dyn_cast&lt;BranchInst&gt;(inst))</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* opnd = br-&gt;isConditional() ? br-&gt;getCondition() : br-&gt;getOperand(0);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(opnd);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SwitchInst</a> *sw = SVFUtil::dyn_cast&lt;SwitchInst&gt;(inst))</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(sw-&gt;getCondition());</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="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; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(inst);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">callSiteSet</a>.insert(cs);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">CallSite::arg_iterator</a> it = cs.<a class="code" href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">arg_begin</a>();</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; it != cs.<a class="code" href="classSVF_1_1CallSite.html#a46e8ffe430bb2711abaafc9d7864909e">arg_end</a>(); ++it)</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(*it);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="comment">// Calls to inline asm need to be added as well because the callee isn&#39;t</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="comment">// referenced anywhere else.</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *Callee = cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">collectSym</a>(Callee);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="comment">//TODO handle inlineAsm</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; }</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#ae42c5bb7db4d2142adc2e7e904eb36c7">endSymbolAllocation</a>();</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">Options::SymTabPrint</a>) {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">dump</a>();</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a6d14f88dbbb3190fd37b4cf4e1b6e032"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a6d14f88dbbb3190fd37b4cf4e1b6e032">SVF::SymbolTableInfo::createBlkOrConstantObj</a></div><div class="ttdeci">void createBlkOrConstantObj(SymID symId)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00205">SymbolTableInfo.h:205</a></div></div>
705
+ <div class="ttc" id="classSVF_1_1SVFModule_html_af38d0f831967d6d8391a4c84e58d6519"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">SVF::SVFModule::llvmFunEnd</a></div><div class="ttdeci">llvm_iterator llvmFunEnd()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00143">SVFModule.h:143</a></div></div>
645
706
  <div class="ttc" id="classSVF_1_1Options_html_abbfd1d7e985483c486394d8db85b6a85"><div class="ttname"><a href="classSVF_1_1Options.html#abbfd1d7e985483c486394d8db85b6a85">SVF::Options::SymTabPrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; SymTabPrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00214">Options.h:214</a></div></div>
646
707
  <div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
647
708
  <div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00161">BasicTypes.h:161</a></div></div>
648
709
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">SVF::ConstantObj</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00043">MemModel.h:43</a></div></div>
649
710
  <div class="ttc" id="namespaceSVF_html_a292a6e8c5b4f2023b5575879c57eca62"><div class="ttname"><a href="namespaceSVF.html#a292a6e8c5b4f2023b5575879c57eca62">SVF::UnaryOperator</a></div><div class="ttdeci">llvm::UnaryOperator UnaryOperator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00166">BasicTypes.h:166</a></div></div>
650
711
  <div class="ttc" id="namespaceSVF_html_a962e9a9044a46fc4bd2367384f6e0827"><div class="ttname"><a href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">SVF::CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
651
- <div class="ttc" id="classSVF_1_1SVFModule_html_abee99d29b7d4c4915a386895c755009c"><div class="ttname"><a href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVF::SVFModule::alias_iterator</a></div><div class="ttdeci">AliasSetType::iterator alias_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00054">SVFModule.h:54</a></div></div>
712
+ <div class="ttc" id="classSVF_1_1SVFModule_html_abee99d29b7d4c4915a386895c755009c"><div class="ttname"><a href="classSVF_1_1SVFModule.html#abee99d29b7d4c4915a386895c755009c">SVF::SVFModule::alias_iterator</a></div><div class="ttdeci">AliasSetType::iterator alias_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00057">SVFModule.h:57</a></div></div>
652
713
  <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>
653
714
  <div class="ttc" id="classSVF_1_1CallSite_html_a9526f6c3829f8897d1ca617feda8451a"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">SVF::CallSite::getCalledValue</a></div><div class="ttdeci">Value * getCalledValue() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00331">BasicTypes.h:331</a></div></div>
654
715
  <div class="ttc" id="namespaceSVF_html_ac8d4990439af7a2ecca7e15383119674"><div class="ttname"><a href="namespaceSVF.html#ac8d4990439af7a2ecca7e15383119674">SVF::PHINode</a></div><div class="ttdeci">llvm::PHINode PHINode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00153">BasicTypes.h:153</a></div></div>
@@ -660,26 +721,26 @@ Static Private Attributes</h2></td></tr>
660
721
  <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>
661
722
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a05a05894819e9cad6ee0033a6695e35e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a05a05894819e9cad6ee0033a6695e35e">SVF::SymbolTableInfo::callSiteSet</a></div><div class="ttdeci">CallSiteSet callSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00076">SymbolTableInfo.h:76</a></div></div>
662
723
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c">SVF::BlkPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00044">MemModel.h:44</a></div></div>
663
- <div class="ttc" id="classSVF_1_1SVFModule_html_a3cfd0983849950099d1e8f8e0fda42bc"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">SVF::SVFModule::alias_end</a></div><div class="ttdeci">alias_iterator alias_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00178">SVFModule.h:178</a></div></div>
724
+ <div class="ttc" id="classSVF_1_1SVFModule_html_a3cfd0983849950099d1e8f8e0fda42bc"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a3cfd0983849950099d1e8f8e0fda42bc">SVF::SVFModule::alias_end</a></div><div class="ttdeci">alias_iterator alias_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00194">SVFModule.h:194</a></div></div>
664
725
  <div class="ttc" id="classSVF_1_1StInfo_html_aed9399cfe3ace00289f2a5265df80199"><div class="ttname"><a href="classSVF_1_1StInfo.html#aed9399cfe3ace00289f2a5265df80199">SVF::StInfo::setMaxFieldLimit</a></div><div class="ttdeci">static void setMaxFieldLimit(u32_t limit)</div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00083">MemModel.h:83</a></div></div>
665
- <div class="ttc" id="classSVF_1_1SVFModule_html_a648542aa5c4b487ad5aa12a39d15e951"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">SVF::SVFModule::llvmFunBegin</a></div><div class="ttdeci">llvm_iterator llvmFunBegin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00119">SVFModule.h:119</a></div></div>
666
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae1fe33260d2a2d21f2c33aaf1b58fee3"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae1fe33260d2a2d21f2c33aaf1b58fee3">SVF::SymbolTableInfo::collectVararg</a></div><div class="ttdeci">void collectVararg(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00686">SymbolTableInfo.cpp:686</a></div></div>
667
- <div class="ttc" id="classSVF_1_1SVFModule_html_aa5a0780c5c69a1e9a0ba902b4ad49714"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVF::SVFModule::llvm_iterator</a></div><div class="ttdeci">LLVMFunctionSetType::iterator llvm_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00050">SVFModule.h:50</a></div></div>
668
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9f4cf6914b400b9f69c7852f13c496a9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">SVF::SymbolTableInfo::dump</a></div><div class="ttdeci">virtual void dump()</div><div class="ttdoc">Another debug method. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l01010">SymbolTableInfo.cpp:1010</a></div></div>
726
+ <div class="ttc" id="classSVF_1_1SVFModule_html_a648542aa5c4b487ad5aa12a39d15e951"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">SVF::SVFModule::llvmFunBegin</a></div><div class="ttdeci">llvm_iterator llvmFunBegin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00135">SVFModule.h:135</a></div></div>
727
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae1fe33260d2a2d21f2c33aaf1b58fee3"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae1fe33260d2a2d21f2c33aaf1b58fee3">SVF::SymbolTableInfo::collectVararg</a></div><div class="ttdeci">void collectVararg(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00812">SymbolTableInfo.cpp:812</a></div></div>
728
+ <div class="ttc" id="classSVF_1_1SVFModule_html_aa5a0780c5c69a1e9a0ba902b4ad49714"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa5a0780c5c69a1e9a0ba902b4ad49714">SVF::SVFModule::llvm_iterator</a></div><div class="ttdeci">LLVMFunctionSetType::iterator llvm_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00053">SVFModule.h:53</a></div></div>
729
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a9f4cf6914b400b9f69c7852f13c496a9"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a9f4cf6914b400b9f69c7852f13c496a9">SVF::SymbolTableInfo::dump</a></div><div class="ttdeci">virtual void dump()</div><div class="ttdoc">Another debug method. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l01136">SymbolTableInfo.cpp:1136</a></div></div>
669
730
  <div class="ttc" id="namespaceSVF_html_ac7dcc6103dee3a0bbc2fd2e02716a154"><div class="ttname"><a href="namespaceSVF.html#ac7dcc6103dee3a0bbc2fd2e02716a154">SVF::ReturnInst</a></div><div class="ttdeci">llvm::ReturnInst ReturnInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00157">BasicTypes.h:157</a></div></div>
670
731
  <div class="ttc" id="namespaceSVF_html_ab7fac9d4a4839be445c89777e21bc307"><div class="ttname"><a href="namespaceSVF.html#ab7fac9d4a4839be445c89777e21bc307">SVF::SelectInst</a></div><div class="ttdeci">llvm::SelectInst SelectInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00158">BasicTypes.h:158</a></div></div>
671
732
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
672
733
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
673
734
  <div class="ttc" id="classSVF_1_1CallSite_html_aabc0054b7f4e06b7ca0b6072746984e6"><div class="ttname"><a href="classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6">SVF::CallSite::arg_begin</a></div><div class="ttdeci">User::const_op_iterator arg_begin() const</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00324">BasicTypes.h:324</a></div></div>
674
735
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">SVF::BlackHole</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00042">MemModel.h:42</a></div></div>
675
- <div class="ttc" id="classSVF_1_1SVFModule_html_a4cf1ca2e9f045a0520b0a8a6cd5993f2"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVF::SVFModule::global_iterator</a></div><div class="ttdeci">GlobalSetType::iterator global_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00052">SVFModule.h:52</a></div></div>
676
- <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#l00088">SymbolTableInfo.cpp:88</a></div></div>
736
+ <div class="ttc" id="classSVF_1_1SVFModule_html_a4cf1ca2e9f045a0520b0a8a6cd5993f2"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a4cf1ca2e9f045a0520b0a8a6cd5993f2">SVF::SVFModule::global_iterator</a></div><div class="ttdeci">GlobalSetType::iterator global_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00055">SVFModule.h:55</a></div></div>
737
+ <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#l00214">SymbolTableInfo.cpp:214</a></div></div>
677
738
  <div class="ttc" id="namespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00154">BasicTypes.h:154</a></div></div>
678
739
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2680e554af6153cbe8521425c1fbb123"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">SVF::SymbolTableInfo::symTyMap</a></div><div class="ttdeci">IDToSymTyMapTy symTyMap</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00072">SymbolTableInfo.h:72</a></div></div>
679
- <div class="ttc" id="classSVF_1_1SVFModule_html_a4dc32c583d29d74d052eaa5665b0b70e"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">SVF::SVFModule::global_begin</a></div><div class="ttdeci">global_iterator global_begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00153">SVFModule.h:153</a></div></div>
740
+ <div class="ttc" id="classSVF_1_1SVFModule_html_a4dc32c583d29d74d052eaa5665b0b70e"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">SVF::SVFModule::global_begin</a></div><div class="ttdeci">global_iterator global_begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00169">SVFModule.h:169</a></div></div>
680
741
  <div class="ttc" id="namespaceSVF_html_a412280b134578905248ce0122c5db7c9"><div class="ttname"><a href="namespaceSVF.html#a412280b134578905248ce0122c5db7c9">SVF::SwitchInst</a></div><div class="ttdeci">llvm::SwitchInst SwitchInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00162">BasicTypes.h:162</a></div></div>
681
742
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00219">SVFUtil.h:219</a></div></div>
682
- <div class="ttc" id="classSVF_1_1SVFModule_html_a7f2b4647c8d69c8328b63e576cb6d065"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">SVF::SVFModule::alias_begin</a></div><div class="ttdeci">alias_iterator alias_begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00170">SVFModule.h:170</a></div></div>
743
+ <div class="ttc" id="classSVF_1_1SVFModule_html_a7f2b4647c8d69c8328b63e576cb6d065"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a7f2b4647c8d69c8328b63e576cb6d065">SVF::SVFModule::alias_begin</a></div><div class="ttdeci">alias_iterator alias_begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00186">SVFModule.h:186</a></div></div>
683
744
  <div class="ttc" id="namespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
684
745
  <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00313">BasicTypes.h:313</a></div></div>
685
746
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
@@ -687,9 +748,9 @@ Static Private Attributes</h2></td></tr>
687
748
  <div class="ttc" id="classSVF_1_1CallSite_html_ac1cdfe5e54026960a23142e26b3150ff"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac1cdfe5e54026960a23142e26b3150ff">SVF::CallSite::arg_iterator</a></div><div class="ttdeci">User::const_op_iterator arg_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00321">BasicTypes.h:321</a></div></div>
688
749
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_ae42c5bb7db4d2142adc2e7e904eb36c7"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#ae42c5bb7db4d2142adc2e7e904eb36c7">SVF::NodeIDAllocator::endSymbolAllocation</a></div><div class="ttdeci">void endSymbolAllocation(void)</div><div class="ttdoc">Notify the allocator that all symbols have had IDs allocated. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00151">NodeIDAllocator.cpp:151</a></div></div>
689
750
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
690
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a7c422651a6cb299b0c94a2e4597fbe7c"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">SVF::SymbolTableInfo::collectSym</a></div><div class="ttdeci">void collectSym(const Value *val)</div><div class="ttdoc">collect the syms </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00587">SymbolTableInfo.cpp:587</a></div></div>
691
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae4a7d078322e99af965193c82b357239"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae4a7d078322e99af965193c82b357239">SVF::SymbolTableInfo::collectRet</a></div><div class="ttdeci">void collectRet(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00670">SymbolTableInfo.cpp:670</a></div></div>
692
- <div class="ttc" id="classSVF_1_1SVFModule_html_a8a34164634d6ad9a7b76175907c8c44b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">SVF::SVFModule::global_end</a></div><div class="ttdeci">global_iterator global_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00161">SVFModule.h:161</a></div></div>
751
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a7c422651a6cb299b0c94a2e4597fbe7c"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a7c422651a6cb299b0c94a2e4597fbe7c">SVF::SymbolTableInfo::collectSym</a></div><div class="ttdeci">void collectSym(const Value *val)</div><div class="ttdoc">collect the syms </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00713">SymbolTableInfo.cpp:713</a></div></div>
752
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae4a7d078322e99af965193c82b357239"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae4a7d078322e99af965193c82b357239">SVF::SymbolTableInfo::collectRet</a></div><div class="ttdeci">void collectRet(const Function *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00796">SymbolTableInfo.cpp:796</a></div></div>
753
+ <div class="ttc" id="classSVF_1_1SVFModule_html_a8a34164634d6ad9a7b76175907c8c44b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">SVF::SVFModule::global_end</a></div><div class="ttdeci">global_iterator global_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00177">SVFModule.h:177</a></div></div>
693
754
  <div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00205">BasicTypes.h:205</a></div></div>
694
755
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0d7588578735679773493ff2d5e458e1"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVF::SVFUtil::increaseStackSize</a></div><div class="ttdeci">void increaseStackSize()</div><div class="ttdoc">Increase the stack size limit. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00229">SVFUtil.cpp:229</a></div></div>
695
756
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
@@ -728,18 +789,16 @@ Static Private Attributes</h2></td></tr>
728
789
  <p>Array's flatten field infor is the same as its element's flatten infor.</p>
729
790
  <p>append the additional number </p>
730
791
 
731
- <p>Reimplemented in <a class="el" href="classSVF_1_1LocSymTableInfo.html#a45b52cb8f8634ecf8bfb33f8e71bb82f">SVF::LocSymTableInfo</a>.</p>
732
-
733
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00120">120</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
734
- <div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</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="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> out_num = ty-&gt;getNumElements();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</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="l00127"></a><span class="lineno"> 127</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="l00128"></a><span class="lineno"> 128</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="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; out_num *= aty-&gt;getNumElements();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; elemTy = aty-&gt;getElementType();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</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;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">addFldWithType</a>(0, 0, elemTy);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</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="l00141"></a><span class="lineno"> 141</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="l00142"></a><span class="lineno"> 142</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="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</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="l00145"></a><span class="lineno"> 145</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="l00146"></a><span class="lineno"> 146</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="l00147"></a><span class="lineno"> 147</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="l00149"></a><span class="lineno"> 149</span>&#160; pair.push_back(std::make_pair(out_num, out_stride));</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(idx, off, fieldTy, pair);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</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;}</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>
735
- <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#l00440">SymbolTableInfo.h:440</a></div></div>
792
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00243">243</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
793
+ <div class="fragment"><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</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="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> out_num = ty-&gt;getNumElements();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</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="l00250"></a><span class="lineno"> 250</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="l00251"></a><span class="lineno"> 251</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="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; out_num *= aty-&gt;getNumElements();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; elemTy = aty-&gt;getElementType();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; out_stride = <a class="code" href="classSVF_1_1SymbolTableInfo.html#af4239ff717303dee25f1f4ba60070f9e">getTypeSizeInBytes</a>(elemTy);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">addFldWithType</a>(0, 0, elemTy);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</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="l00264"></a><span class="lineno"> 264</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="l00265"></a><span class="lineno"> 265</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="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</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="l00268"></a><span class="lineno"> 268</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="l00269"></a><span class="lineno"> 269</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="l00270"></a><span class="lineno"> 270</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="l00272"></a><span class="lineno"> 272</span>&#160; pair.push_back(std::make_pair(out_num, out_stride));</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(idx, off, fieldTy, pair);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;}</div><div class="ttc" id="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>
794
+ <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#l00452">SymbolTableInfo.h:452</a></div></div>
736
795
  <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>
737
796
  <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>
738
797
  <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>
739
798
  <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="MemModel_8h_source.html#l00118">MemModel.h:118</a></div></div>
740
799
  <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="MemModel_8h_source.html#l00111">MemModel.h:111</a></div></div>
741
800
  <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#l00381">SymbolTableInfo.h:381</a></div></div>
742
- <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#l01069">SymbolTableInfo.cpp:1069</a></div></div>
801
+ <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#l01195">SymbolTableInfo.cpp:1195</a></div></div>
743
802
  <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>
744
803
  <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="MemModel_8h_source.html#l00055">MemModel.h:55</a></div></div>
745
804
  <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>
@@ -763,12 +822,13 @@ Static Private Attributes</h2></td></tr>
763
822
  </div><div class="memdoc">
764
823
  <p>Get memory object sym, if not available create a new one </p>
765
824
 
766
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00637">637</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
767
- <div class="fragment"><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; val = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1e2a66bd0cd01ff957ac50b22a2a8735">getGlobalRep</a>(val);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.find(val);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.end())</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="comment">// if the object pointed by the pointer is a constant data (e.g., i32 0) or a global constant object (e.g. string)</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">// then we treat them as one ConstantObj</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">isConstantData</a>(val) || (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val) &amp;&amp; !<a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>()))</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>()));</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// otherwise, we will create an object for each abstract memory location</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">else</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; <span class="comment">// create obj sym and sym type</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">allocateObjectId</a>();</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad4df09c2efe5156a62b406355b9c5a12">ObjSym</a>));</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a new obj sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// create a memory object</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(val, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(<span class="keywordtype">id</span>) == <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[id] = mem;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</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="MemModel_8h_source.html#l00284">MemModel.h:284</a></div></div>
825
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00763">763</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
826
+ <div class="fragment"><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;{</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; val = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1e2a66bd0cd01ff957ac50b22a2a8735">getGlobalRep</a>(val);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.find(val);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.end())</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="comment">// if the object pointed by the pointer is a constant data (e.g., i32 0) or a global constant object (e.g. string)</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="comment">// then we treat them as one ConstantObj</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">isConstantData</a>(val) || (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val) &amp;&amp; !<a class="code" href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">getModelConstants</a>()))</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; {</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">constantSymID</a>()));</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; }</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="comment">// otherwise, we will create an object for each abstract memory location</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="comment">// create obj sym and sym type</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">allocateObjectId</a>();</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5840b742ed8c73ece548b9b4aede07ec">objSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad4df09c2efe5156a62b406355b9c5a12">ObjSym</a>));</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a new obj sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="comment">// create a memory object </span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>(<span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa392fef870b1d3adfc3fd18116782439">createObjTypeInfo</a>(val), val);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.find(<span class="keywordtype">id</span>) == <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>.end());</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[id] = mem;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</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="MemModel_8h_source.html#l00278">MemModel.h:278</a></div></div>
768
827
  <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>
769
828
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a1e2a66bd0cd01ff957ac50b22a2a8735"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a1e2a66bd0cd01ff957ac50b22a2a8735">SVF::SymbolTableInfo::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val) const</div><div class="ttdoc">find the unique defined global across multiple modules </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00284">SymbolTableInfo.h:284</a></div></div>
829
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aa392fef870b1d3adfc3fd18116782439"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aa392fef870b1d3adfc3fd18116782439">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00170">SymbolTableInfo.cpp:170</a></div></div>
770
830
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a6ce6b40b8291c6378dda07d943d66e53"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53">SVF::NodeIDAllocator::allocateObjectId</a></div><div class="ttdeci">NodeID allocateObjectId(void)</div><div class="ttdoc">Allocate an object ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00048">NodeIDAllocator.cpp:48</a></div></div>
771
- <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
831
+ <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
772
832
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ab582424fdb6d9674c1bd4466cdfbe497"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ab582424fdb6d9674c1bd4466cdfbe497">SVF::SymbolTableInfo::constantSymID</a></div><div class="ttdeci">SymID constantSymID() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00231">SymbolTableInfo.h:231</a></div></div>
773
833
  <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>
774
834
  <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#l00070">SymbolTableInfo.h:70</a></div></div>
@@ -779,8 +839,8 @@ Static Private Attributes</h2></td></tr>
779
839
  <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>
780
840
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
781
841
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a89e9c6da843e5eef25c51afd5d0937e5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a89e9c6da843e5eef25c51afd5d0937e5">SVF::SymbolTableInfo::getModelConstants</a></div><div class="ttdeci">bool getModelConstants() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00126">SymbolTableInfo.h:126</a></div></div>
782
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00722">SymbolTableInfo.cpp:722</a></div></div>
783
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00147">SVFBasicTypes.h:147</a></div></div>
842
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00848">SymbolTableInfo.cpp:848</a></div></div>
843
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
784
844
  </div><!-- fragment -->
785
845
  </div>
786
846
  </div>
@@ -801,16 +861,16 @@ Static Private Attributes</h2></td></tr>
801
861
  </div><div class="memdoc">
802
862
  <p>Create unique return sym, if not available create a new one </p>
803
863
 
804
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00670">670</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
805
- <div class="fragment"><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;{</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.find(val);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.end())</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7">RetSym</a>));</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a return sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7">SVF::RetSym</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00048">MemModel.h:48</a></div></div>
806
- <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
864
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00796">796</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
865
+ <div class="fragment"><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;{</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.find(val);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.end())</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">returnSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7">RetSym</a>));</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a return sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7">SVF::RetSym</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00048">MemModel.h:48</a></div></div>
866
+ <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
807
867
  <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>
808
868
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2680e554af6153cbe8521425c1fbb123"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">SVF::SymbolTableInfo::symTyMap</a></div><div class="ttdeci">IDToSymTyMapTy symTyMap</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00072">SymbolTableInfo.h:72</a></div></div>
809
869
  <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>
810
870
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
811
871
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ae6f8a4dbe09ff4756983ffdbed6d0681"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ae6f8a4dbe09ff4756983ffdbed6d0681">SVF::SymbolTableInfo::returnSymMap</a></div><div class="ttdeci">FunToIDMapTy returnSymMap</div><div class="ttdoc">&lt; map a sym id to its type </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00073">SymbolTableInfo.h:73</a></div></div>
812
872
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a26b5e09e10448694435f74a8b622a7e8"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">SVF::NodeIDAllocator::allocateValueId</a></div><div class="ttdeci">NodeID allocateValueId(void)</div><div class="ttdoc">Allocate a value ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00120">NodeIDAllocator.cpp:120</a></div></div>
813
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00147">SVFBasicTypes.h:147</a></div></div>
873
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
814
874
  </div><!-- fragment -->
815
875
  </div>
816
876
  </div>
@@ -842,8 +902,8 @@ Static Private Attributes</h2></td></tr>
842
902
  <p>Collect simple type (non-aggregate) info </p>
843
903
  <p>Only one field </p>
844
904
 
845
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00220">220</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
846
- <div class="fragment"><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; <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="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">addFldWithType</a>(0,0, ty);</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; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> pair;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; pair.push_back(std::make_pair(1,0));</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(0, 0, ty, pair);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</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#l00440">SymbolTableInfo.h:440</a></div></div>
905
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00343">343</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
906
+ <div class="fragment"><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; <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="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[ty] = stinfo;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#ac8483f7707339d3ba53fa2ae0127ec98">addFldWithType</a>(0,0, ty);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> pair;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; pair.push_back(std::make_pair(1,0));</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(0, 0, ty, pair);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</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#l00452">SymbolTableInfo.h:452</a></div></div>
847
907
  <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>
848
908
  <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="MemModel_8h_source.html#l00118">MemModel.h:118</a></div></div>
849
909
  <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="MemModel_8h_source.html#l00111">MemModel.h:111</a></div></div>
@@ -881,19 +941,17 @@ Static Private Attributes</h2></td></tr>
881
941
  <p>The struct info should not be processed before</p>
882
942
  <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>
883
943
 
884
- <p>Reimplemented in <a class="el" href="classSVF_1_1LocSymTableInfo.html#aedca0dbfb8641cefe68d547e3f4d62e8">SVF::LocSymTableInfo</a>.</p>
885
-
886
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00160">160</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
887
- <div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</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="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[sty] = stinfo;</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="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf = 0;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// field of the current struct</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx = 0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (StructType::element_iterator it = sty-&gt;element_begin(), ie =</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; sty-&gt;element_end(); it != ie; ++it, ++field_idx)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *et = *it;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// This offset is computed after alignment with the current struct</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</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="l00176"></a><span class="lineno"> 176</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="l00179"></a><span class="lineno"> 179</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="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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="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_1StInfo.html">StInfo</a> * subStinfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a90bca8ff906ea48fb5e3a69da463ccab">getStructInfo</a>(et);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</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="l00185"></a><span class="lineno"> 185</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="l00186"></a><span class="lineno"> 186</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="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</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="l00189"></a><span class="lineno"> 189</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="l00190"></a><span class="lineno"> 190</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="l00191"></a><span class="lineno"> 191</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="l00192"></a><span class="lineno"> 192</span>&#160; pair.push_back(std::make_pair(1, 0));</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(fldIdx, off,elemTy,pair);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</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; nf += nfE;</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; <span class="keywordflow">else</span> <span class="comment">//simple type</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> pair;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; pair.push_back(std::make_pair(1,0));</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(nf, eOffsetInBytes, et,pair);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; ++nf;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><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;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</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="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a> = sty;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</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;}</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#l00443">SymbolTableInfo.h:443</a></div></div>
944
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00283">283</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
945
+ <div class="fragment"><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;{</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</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="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>[sty] = stinfo;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="comment">// Number of fields after flattening the struct</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> nf = 0;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">// field of the current struct</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx = 0;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">for</span> (StructType::element_iterator it = sty-&gt;element_begin(), ie =</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; sty-&gt;element_end(); it != ie; ++it, ++field_idx)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *et = *it;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// This offset is computed after alignment with the current struct</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</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="l00299"></a><span class="lineno"> 299</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="l00302"></a><span class="lineno"> 302</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="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</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="l00305"></a><span class="lineno"> 305</span>&#160; {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</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="l00307"></a><span class="lineno"> 307</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="l00308"></a><span class="lineno"> 308</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="l00309"></a><span class="lineno"> 309</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="l00310"></a><span class="lineno"> 310</span>&#160; {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</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="l00313"></a><span class="lineno"> 313</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="l00314"></a><span class="lineno"> 314</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="l00315"></a><span class="lineno"> 315</span>&#160; pair.push_back(std::make_pair(1, 0));</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(fldIdx, off,elemTy,pair);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</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; nf += nfE;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">else</span> <span class="comment">//simple type</span></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; <a class="code" href="classSVF_1_1FieldInfo.html#aba172e9c0989824c8ff79134d7952197">FieldInfo::ElemNumStridePairVec</a> pair;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; pair.push_back(std::make_pair(1,0));</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classSVF_1_1FieldInfo.html">FieldInfo</a> field(nf, eOffsetInBytes, et,pair);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; stinfo-&gt;<a class="code" href="classSVF_1_1StInfo.html#a9bb25646a735d612cf777394fa3ba5d6">getFlattenFieldInfoVec</a>().push_back(field);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; ++nf;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</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; <span class="comment">//Record the size of the complete struct and update max_struct.</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</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="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4e33a01e203f07a8154af6ee65f5ba46">maxStruct</a> = sty;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a> = nf;</div><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;}</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#l00455">SymbolTableInfo.h:455</a></div></div>
888
946
  <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>
889
- <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#l00440">SymbolTableInfo.h:440</a></div></div>
947
+ <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#l00452">SymbolTableInfo.h:452</a></div></div>
890
948
  <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>
891
949
  <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>
892
950
  <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="MemModel_8h_source.html#l00118">MemModel.h:118</a></div></div>
893
- <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#l00446">SymbolTableInfo.h:446</a></div></div>
951
+ <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#l00458">SymbolTableInfo.h:458</a></div></div>
894
952
  <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="MemModel_8h_source.html#l00111">MemModel.h:111</a></div></div>
895
953
  <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#l00381">SymbolTableInfo.h:381</a></div></div>
896
- <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#l01069">SymbolTableInfo.cpp:1069</a></div></div>
954
+ <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#l01195">SymbolTableInfo.cpp:1195</a></div></div>
897
955
  <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>
898
956
  <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="MemModel_8h_source.html#l00055">MemModel.h:55</a></div></div>
899
957
  <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>
@@ -919,16 +977,16 @@ Static Private Attributes</h2></td></tr>
919
977
  <p>collect the syms </p>
920
978
  <p>Collect symbols, including value and object syms </p>
921
979
 
922
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00587">587</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
923
- <div class="fragment"><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;{</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">//TODO: filter the non-pointer type // if (!SVFUtil::isa&lt;PointerType&gt;(val-&gt;getType())) return;</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;collect sym from ##&quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; \n&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="comment">// special sym here</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</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="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="comment">//TODO handle constant expression value here??</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(val);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="comment">// create a value sym</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(val);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="comment">// create an object If it is a heap, stack, global, function.</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#acc9fd07cb66dbdeef696c3c745856094">isObject</a>(val))</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af639e9bc59f5fb9a6bf1748ef0d07d5e">collectObj</a>(val);</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="ttc" id="classSVF_1_1SymbolTableInfo_html_ad92842613ac245ad06875a012a5549ab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">SVF::SymbolTableInfo::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00757">SymbolTableInfo.cpp:757</a></div></div>
924
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a135ec0f7574d4bcb4bc411ce5775f1f5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">SVF::SymbolTableInfo::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00614">SymbolTableInfo.cpp:614</a></div></div>
980
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00713">713</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
981
+ <div class="fragment"><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;{</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">//TODO: filter the non-pointer type // if (!SVFUtil::isa&lt;PointerType&gt;(val-&gt;getType())) return;</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;collect sym from ##&quot;</span> &lt;&lt; *val &lt;&lt; <span class="stringliteral">&quot; \n&quot;</span>);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="comment">// special sym here</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</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="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">//TODO handle constant expression value here??</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(val);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="comment">// create a value sym</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(val);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="comment">// create an object If it is a heap, stack, global, function.</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#acc9fd07cb66dbdeef696c3c745856094">isObject</a>(val))</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af639e9bc59f5fb9a6bf1748ef0d07d5e">collectObj</a>(val);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad92842613ac245ad06875a012a5549ab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">SVF::SymbolTableInfo::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00883">SymbolTableInfo.cpp:883</a></div></div>
982
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a135ec0f7574d4bcb4bc411ce5775f1f5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">SVF::SymbolTableInfo::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00740">SymbolTableInfo.cpp:740</a></div></div>
925
983
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_acc9fd07cb66dbdeef696c3c745856094"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#acc9fd07cb66dbdeef696c3c745856094">SVF::SVFUtil::isObject</a></div><div class="ttdeci">bool isObject(const Value *ref)</div><div class="ttdoc">Return true if this value refers to a object. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00041">LLVMUtil.cpp:41</a></div></div>
926
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af639e9bc59f5fb9a6bf1748ef0d07d5e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af639e9bc59f5fb9a6bf1748ef0d07d5e">SVF::SymbolTableInfo::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00637">SymbolTableInfo.cpp:637</a></div></div>
927
- <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
928
- <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#l00714">SymbolTableInfo.cpp:714</a></div></div>
984
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af639e9bc59f5fb9a6bf1748ef0d07d5e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af639e9bc59f5fb9a6bf1748ef0d07d5e">SVF::SymbolTableInfo::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00763">SymbolTableInfo.cpp:763</a></div></div>
985
+ <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
986
+ <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#l00840">SymbolTableInfo.cpp:840</a></div></div>
929
987
  <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>
930
- <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#l00702">SymbolTableInfo.cpp:702</a></div></div>
931
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00147">SVFBasicTypes.h:147</a></div></div>
988
+ <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#l00828">SymbolTableInfo.cpp:828</a></div></div>
989
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
932
990
  </div><!-- fragment -->
933
991
  </div>
934
992
  </div>
@@ -951,14 +1009,14 @@ Static Private Attributes</h2></td></tr>
951
1009
  <p>Collect type info. </p>
952
1010
  <p>Collect a LLVM type info </p>
953
1011
 
954
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00104">104</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
955
- <div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <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="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a>* aty = SVFUtil::dyn_cast&lt;ArrayType&gt;(ty))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(aty);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</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="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(sty);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(ty);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</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#l00440">SymbolTableInfo.h:440</a></div></div>
1012
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00227">227</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1013
+ <div class="fragment"><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;{</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</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="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</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="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aea1c4ec32c307feb5da455a41cc51b5e">collectArrayInfo</a>(aty);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</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="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ab5297b79a02d8afce647a8b61bdab804">collectStructInfo</a>(sty);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#abf7567c655499d6744de8df689c11fad">collectSimpleTypeInfo</a>(ty);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</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#l00452">SymbolTableInfo.h:452</a></div></div>
956
1014
  <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>
957
1015
  <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>
958
1016
  <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>
959
- <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#l00160">SymbolTableInfo.cpp:160</a></div></div>
960
- <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#l00120">SymbolTableInfo.cpp:120</a></div></div>
961
- <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#l00220">SymbolTableInfo.cpp:220</a></div></div>
1017
+ <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#l00283">SymbolTableInfo.cpp:283</a></div></div>
1018
+ <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#l00243">SymbolTableInfo.cpp:243</a></div></div>
1019
+ <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#l00343">SymbolTableInfo.cpp:343</a></div></div>
962
1020
  </div><!-- fragment -->
963
1021
  </div>
964
1022
  </div>
@@ -980,19 +1038,19 @@ Static Private Attributes</h2></td></tr>
980
1038
  <p>Get value sym, if not available create a new one </p>
981
1039
  <p>handle global constant expression here </p>
982
1040
 
983
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00614">614</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
984
- <div class="fragment"><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;{</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end())</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="comment">// create val sym and sym type</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da">ValSym</a>));</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a new value sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* globalVar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4d616d922793e1d74bb4143f2d72bf10">handleGlobalCE</a>(globalVar);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val))</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af639e9bc59f5fb9a6bf1748ef0d07d5e">collectObj</a>(val);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;}</div><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>
985
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4d616d922793e1d74bb4143f2d72bf10"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4d616d922793e1d74bb4143f2d72bf10">SVF::SymbolTableInfo::handleGlobalCE</a></div><div class="ttdeci">void handleGlobalCE(const GlobalVariable *G)</div><div class="ttdoc">Handle constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00823">SymbolTableInfo.cpp:823</a></div></div>
986
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af639e9bc59f5fb9a6bf1748ef0d07d5e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af639e9bc59f5fb9a6bf1748ef0d07d5e">SVF::SymbolTableInfo::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00637">SymbolTableInfo.cpp:637</a></div></div>
987
- <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
1041
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00740">740</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1042
+ <div class="fragment"><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;{</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; ValueToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.end())</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="comment">// create val sym and sym type</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da">ValSym</a>));</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a new value sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* globalVar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4d616d922793e1d74bb4143f2d72bf10">handleGlobalCE</a>(globalVar);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val))</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#af639e9bc59f5fb9a6bf1748ef0d07d5e">collectObj</a>(val);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;}</div><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>
1043
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4d616d922793e1d74bb4143f2d72bf10"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4d616d922793e1d74bb4143f2d72bf10">SVF::SymbolTableInfo::handleGlobalCE</a></div><div class="ttdeci">void handleGlobalCE(const GlobalVariable *G)</div><div class="ttdoc">Handle constant expression. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00949">SymbolTableInfo.cpp:949</a></div></div>
1044
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_af639e9bc59f5fb9a6bf1748ef0d07d5e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#af639e9bc59f5fb9a6bf1748ef0d07d5e">SVF::SymbolTableInfo::collectObj</a></div><div class="ttdeci">void collectObj(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00763">SymbolTableInfo.cpp:763</a></div></div>
1045
+ <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
988
1046
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da">SVF::ValSym</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00046">MemModel.h:46</a></div></div>
989
1047
  <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>
990
1048
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2680e554af6153cbe8521425c1fbb123"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">SVF::SymbolTableInfo::symTyMap</a></div><div class="ttdeci">IDToSymTyMapTy symTyMap</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00072">SymbolTableInfo.h:72</a></div></div>
991
1049
  <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>
992
1050
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
993
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00722">SymbolTableInfo.cpp:722</a></div></div>
1051
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00848">SymbolTableInfo.cpp:848</a></div></div>
994
1052
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a26b5e09e10448694435f74a8b622a7e8"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">SVF::NodeIDAllocator::allocateValueId</a></div><div class="ttdeci">NodeID allocateValueId(void)</div><div class="ttdoc">Allocate a value ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00120">NodeIDAllocator.cpp:120</a></div></div>
995
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00147">SVFBasicTypes.h:147</a></div></div>
1053
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
996
1054
  <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#l00069">SymbolTableInfo.h:69</a></div></div>
997
1055
  </div><!-- fragment -->
998
1056
  </div>
@@ -1014,16 +1072,16 @@ Static Private Attributes</h2></td></tr>
1014
1072
  </div><div class="memdoc">
1015
1073
  <p>Create vararg sym, if not available create a new one </p>
1016
1074
 
1017
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00686">686</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1018
- <div class="fragment"><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;{</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.find(val);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.end())</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; {</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4">VarargSym</a>));</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a vararg sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4">SVF::VarargSym</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00049">MemModel.h:49</a></div></div>
1019
- <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
1075
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00812">812</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1076
+ <div class="fragment"><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;{</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; FunToIDMapTy::iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.find(val);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.end())</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">allocateValueId</a>();</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a94c06e5ac0b50989743a9e63c9a6d5b9">varargSymMap</a>.insert(std::make_pair(val, <span class="keywordtype">id</span>));</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.insert(std::make_pair(<span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4">VarargSym</a>));</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a>,</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;create a vararg sym &quot;</span> &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4">SVF::VarargSym</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00049">MemModel.h:49</a></div></div>
1077
+ <div class="ttc" id="SVFBasicTypes_8h_html_ad46a0423f8709692e1bb0f0fa5b1ca2f"><div class="ttname"><a href="SVFBasicTypes_8h.html#ad46a0423f8709692e1bb0f0fa5b1ca2f">DMemModel</a></div><div class="ttdeci">#define DMemModel</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
1020
1078
  <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>
1021
1079
  <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#l00074">SymbolTableInfo.h:74</a></div></div>
1022
1080
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2680e554af6153cbe8521425c1fbb123"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">SVF::SymbolTableInfo::symTyMap</a></div><div class="ttdeci">IDToSymTyMapTy symTyMap</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00072">SymbolTableInfo.h:72</a></div></div>
1023
1081
  <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>
1024
1082
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
1025
1083
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a26b5e09e10448694435f74a8b622a7e8"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8">SVF::NodeIDAllocator::allocateValueId</a></div><div class="ttdeci">NodeID allocateValueId(void)</div><div class="ttdoc">Allocate a value ID as determined by the strategy. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00120">NodeIDAllocator.cpp:120</a></div></div>
1026
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00147">SVFBasicTypes.h:147</a></div></div>
1084
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
1027
1085
  </div><!-- fragment -->
1028
1086
  </div>
1029
1087
  </div>
@@ -1065,10 +1123,8 @@ Static Private Attributes</h2></td></tr>
1065
1123
  <p>Compute gep offset </p>
1066
1124
  <p>given a gep edge p = q + i, </p>
1067
1125
 
1068
- <p>Reimplemented in <a class="el" href="classSVF_1_1LocSymTableInfo.html#a4aa6bf984692e879ad12806d35a6d2be">SVF::LocSymTableInfo</a>.</p>
1069
-
1070
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00237">237</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1071
- <div class="fragment"><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;{</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</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="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="l00242"></a><span class="lineno"> 242</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="l00243"></a><span class="lineno"> 243</span>&#160; llvm::APInt byteOffset(dataLayout-&gt;getIndexSizeInBits(gepOp-&gt;getPointerAddressSpace()),0,<span class="keyword">true</span>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span>(gepOp &amp;&amp; dataLayout &amp;&amp; gepOp-&gt;accumulateConstantOffset(*dataLayout,byteOffset))</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> bo = byteOffset.getSExtValue();</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</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="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</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="l00251"></a><span class="lineno"> 251</span>&#160; gi != ge; ++gi)</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;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// Handling array types, skipe array handling here</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</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="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// e.g. s[1].f1 is differet from s[0].f2</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ArrayType&gt;(*gi))</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">//The int-value object of the current index operand</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// (may not be constant for arrays).</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</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="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span>(!op)</div><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">return</span> <span class="keyword">false</span>;</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; <span class="comment">//The actual index</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> idx = op-&gt;getSExtValue();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Handling pointer types</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</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="l00275"></a><span class="lineno"> 275</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="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// Case 1: This operation is likely accessing an array through pointer p.</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</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="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// Since this is a field-index based memory model,</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</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="l00280"></a><span class="lineno"> 280</span>&#160; <span class="comment">// elements of the same array.</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</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="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(*gi))</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">//off += idx;</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Handling struct here</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</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="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</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="l00292"></a><span class="lineno"> 292</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#abfad1554a3803ff131f2a8682f329354">getFattenFieldIdxVec</a>(ST);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)idx &gt;= so.size())</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; <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="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">//add the translated offset</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</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="l00300"></a><span class="lineno"> 300</span>&#160; }</div><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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</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#l00206">LocationSet.h:206</a></div></div>
1126
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00360">360</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1127
+ <div class="fragment"><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="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</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="l00365"></a><span class="lineno"> 365</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="l00366"></a><span class="lineno"> 366</span>&#160; llvm::APInt byteOffset(dataLayout-&gt;getIndexSizeInBits(gepOp-&gt;getPointerAddressSpace()),0,<span class="keyword">true</span>);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span>(gepOp &amp;&amp; dataLayout &amp;&amp; gepOp-&gt;accumulateConstantOffset(*dataLayout,byteOffset))</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> bo = byteOffset.getSExtValue();</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</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="l00371"></a><span class="lineno"> 371</span>&#160; }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</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="l00374"></a><span class="lineno"> 374</span>&#160; gi != ge; ++gi)</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;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="comment">// Handling array types, skipe array handling here</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</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="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// e.g. s[1].f1 is differet from s[0].f2</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ArrayType&gt;(*gi))</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">continue</span>;</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="comment">//The int-value object of the current index operand</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="comment">// (may not be constant for arrays).</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</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="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span>(!op)</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">//The actual index</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> idx = op-&gt;getSExtValue();</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="comment">// Handling pointer types</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</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="l00398"></a><span class="lineno"> 398</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="l00399"></a><span class="lineno"> 399</span>&#160; <span class="comment">// Case 1: This operation is likely accessing an array through pointer p.</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</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="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">// Since this is a field-index based memory model,</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</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="l00403"></a><span class="lineno"> 403</span>&#160; <span class="comment">// elements of the same array.</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</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="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(*gi))</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="comment">//off += idx;</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="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="comment">// Handling struct here</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</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="l00415"></a><span class="lineno"> 415</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#abfad1554a3803ff131f2a8682f329354">getFattenFieldIdxVec</a>(ST);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span>)idx &gt;= so.size())</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</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="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">//add the translated offset</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</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="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</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#l00206">LocationSet.h:206</a></div></div>
1072
1128
  <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#l00198">LocationSet.h:198</a></div></div>
1073
1129
  <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>
1074
1130
  <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#l00202">LocationSet.h:202</a></div></div>
@@ -1078,7 +1134,7 @@ Static Private Attributes</h2></td></tr>
1078
1134
  <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>
1079
1135
  <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>
1080
1136
  <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>
1081
- <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#l00088">SymbolTableInfo.cpp:88</a></div></div>
1137
+ <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#l00214">SymbolTableInfo.cpp:214</a></div></div>
1082
1138
  <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>
1083
1139
  <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>
1084
1140
  <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>
@@ -1142,7 +1198,8 @@ Static Private Attributes</h2></td></tr>
1142
1198
  </div><div class="memdoc">
1143
1199
 
1144
1200
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00205">205</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
1145
- <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>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">isBlkObjOrConstantObj</a>(symId));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = <span class="keyword">new</span> MemObj(symId);;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</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>
1201
+ <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>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">isBlkObjOrConstantObj</a>(symId));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = <span class="keyword">new</span> MemObj(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa392fef870b1d3adfc3fd18116782439">createObjTypeInfo</a>());;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</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>
1202
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aa392fef870b1d3adfc3fd18116782439"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aa392fef870b1d3adfc3fd18116782439">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00170">SymbolTableInfo.cpp:170</a></div></div>
1146
1203
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2fc4bfb83b71a4c14e16168382cb8f5d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2fc4bfb83b71a4c14e16168382cb8f5d">SVF::SymbolTableInfo::isBlkObjOrConstantObj</a></div><div class="ttdeci">static bool isBlkObjOrConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00200">SymbolTableInfo.h:200</a></div></div>
1147
1204
  <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#l00071">SymbolTableInfo.h:71</a></div></div>
1148
1205
  </div><!-- fragment -->
@@ -1185,11 +1242,88 @@ Static Private Attributes</h2></td></tr>
1185
1242
  <p>Can only be invoked by PAG::addDummyNode() when creaing <a class="el" href="classSVF_1_1PAG.html">PAG</a> from file. </p>
1186
1243
 
1187
1244
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00242">242</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
1188
- <div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</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="l00245"></a><span class="lineno"> 245</span>&#160; MemObj* memObj = <span class="keyword">new</span> MemObj(symId, type);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = memObj;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> memObj;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</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>
1245
+ <div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</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="l00245"></a><span class="lineno"> 245</span>&#160; MemObj* memObj = <span class="keyword">new</span> MemObj(symId, <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa392fef870b1d3adfc3fd18116782439">createObjTypeInfo</a>(type));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aeab14702eabde827923a692cba8f7f8a">objMap</a>[symId] = memObj;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> memObj;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</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>
1246
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aa392fef870b1d3adfc3fd18116782439"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aa392fef870b1d3adfc3fd18116782439">SVF::SymbolTableInfo::createObjTypeInfo</a></div><div class="ttdeci">ObjTypeInfo * createObjTypeInfo(const Value *val)</div><div class="ttdoc">Create an objectInfo based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00170">SymbolTableInfo.cpp:170</a></div></div>
1189
1247
  <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#l00071">SymbolTableInfo.h:71</a></div></div>
1190
1248
  </div><!-- fragment -->
1191
1249
  </div>
1192
1250
  </div>
1251
+ <a id="aa392fef870b1d3adfc3fd18116782439"></a>
1252
+ <h2 class="memtitle"><span class="permalink"><a href="#aa392fef870b1d3adfc3fd18116782439">&#9670;&nbsp;</a></span>createObjTypeInfo() <span class="overload">[1/2]</span></h2>
1253
+
1254
+ <div class="memitem">
1255
+ <div class="memproto">
1256
+ <table class="mlabels">
1257
+ <tr>
1258
+ <td class="mlabels-left">
1259
+ <table class="memname">
1260
+ <tr>
1261
+ <td class="memname"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> * SymbolTableInfo::createObjTypeInfo </td>
1262
+ <td>(</td>
1263
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
1264
+ <td class="paramname"><em>val</em></td><td>)</td>
1265
+ <td></td>
1266
+ </tr>
1267
+ </table>
1268
+ </td>
1269
+ <td class="mlabels-right">
1270
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
1271
+ </tr>
1272
+ </table>
1273
+ </div><div class="memdoc">
1274
+
1275
+ <p>Create an objectInfo based on LLVM value. </p>
1276
+
1277
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00170">170</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1278
+ <div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> *refTy = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>&gt;(val);</div><div class="line"><a name="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">// We consider two types of objects:</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// (1) A heap/static object from a callsite</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span> (I &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(I))</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">getRefTypeOfHeapAllocOrStatic</a>(I);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// (2) Other objects (e.g., alloca, global, etc.)</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; refTy = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>&gt;(val-&gt;getType());</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (refTy)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *objTy = refTy-&gt;getElementType();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>* typeInfo = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a>(val, objTy, <a class="code" href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">Options::MaxFieldLimit</a>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a96067de8a2425b4f4c227fd7e472071d">initTypeInfo</a>(typeInfo,val);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">else</span></div><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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;try to create an object with a non-pointer type.&quot;</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(val-&gt;getName().str());</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;(&quot;</span> + <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(val) + <span class="stringliteral">&quot;)&quot;</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Memory object must be held by a pointer-typed ref value.&quot;</span>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</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>
1279
+ <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>
1280
+ <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>
1281
+ <div class="ttc" id="classSVF_1_1Options_html_adfc1a5c6098d3867e29fc65ca9ffa1cc"><div class="ttname"><a href="classSVF_1_1Options.html#adfc1a5c6098d3867e29fc65ca9ffa1cc">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const llvm::cl::opt&lt; unsigned &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00037">Options.h:37</a></div></div>
1282
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
1283
+ <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>
1284
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a96067de8a2425b4f4c227fd7e472071d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a96067de8a2425b4f4c227fd7e472071d">SVF::SymbolTableInfo::initTypeInfo</a></div><div class="ttdeci">void initTypeInfo(ObjTypeInfo *typeinfo, const Value *value)</div><div class="ttdoc">Initialize TypeInfo based on LLVM Value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00102">SymbolTableInfo.cpp:102</a></div></div>
1285
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
1286
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9232d260dc83d3a25cd98195ba76567a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9232d260dc83d3a25cd98195ba76567a">SVF::SVFUtil::getRefTypeOfHeapAllocOrStatic</a></div><div class="ttdeci">const PointerType * getRefTypeOfHeapAllocOrStatic(const CallSite cs)</div><div class="ttdoc">Get the reference type of heap/static object from an allocation site. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00227">LLVMUtil.h:227</a></div></div>
1287
+ <div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
1288
+ <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>
1289
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
1290
+ <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="MemModel_8h_source.html#l00130">MemModel.h:130</a></div></div>
1291
+ </div><!-- fragment -->
1292
+ </div>
1293
+ </div>
1294
+ <a id="a76971ba9b579907ef937cd7adda89562"></a>
1295
+ <h2 class="memtitle"><span class="permalink"><a href="#a76971ba9b579907ef937cd7adda89562">&#9670;&nbsp;</a></span>createObjTypeInfo() <span class="overload">[2/2]</span></h2>
1296
+
1297
+ <div class="memitem">
1298
+ <div class="memproto">
1299
+ <table class="mlabels">
1300
+ <tr>
1301
+ <td class="mlabels-left">
1302
+ <table class="memname">
1303
+ <tr>
1304
+ <td class="memname"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> * SymbolTableInfo::createObjTypeInfo </td>
1305
+ <td>(</td>
1306
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *&#160;</td>
1307
+ <td class="paramname"><em>type</em> = <code>nullptr</code></td><td>)</td>
1308
+ <td></td>
1309
+ </tr>
1310
+ </table>
1311
+ </td>
1312
+ <td class="mlabels-right">
1313
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
1314
+ </tr>
1315
+ </table>
1316
+ </div><div class="memdoc">
1317
+
1318
+ <p>Create an objectInfo based on LLVM type (value is null, and type could be null, representing a dummy object) </p>
1319
+
1320
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00204">204</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1321
+ <div class="fragment"><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</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="l00207"></a><span class="lineno"> 207</span>&#160; typeInfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(type);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> typeInfo;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</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="MemModel_8h_source.html#l00088">MemModel.h:88</a></div></div>
1322
+ <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="MemModel_8h_source.html#l00130">MemModel.h:130</a></div></div>
1323
+ <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="MemModel_8cpp_source.html#l00049">MemModel.cpp:49</a></div></div>
1324
+ </div><!-- fragment -->
1325
+ </div>
1326
+ </div>
1193
1327
  <a id="a87cc3289dd69e5378487dd9ae2c9e82e"></a>
1194
1328
  <h2 class="memtitle"><span class="permalink"><a href="#a87cc3289dd69e5378487dd9ae2c9e82e">&#9670;&nbsp;</a></span>destroy()</h2>
1195
1329
 
@@ -1216,8 +1350,9 @@ Static Private Attributes</h2></td></tr>
1216
1350
  <p>Clean up memory. </p>
1217
1351
  <p>Destroy the memory for this symbol table after use </p>
1218
1352
 
1219
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00567">567</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1220
- <div class="fragment"><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;{</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</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="l00571"></a><span class="lineno"> 571</span>&#160; ++iter)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (iter-&gt;second)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">delete</span> iter-&gt;second;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</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="l00577"></a><span class="lineno"> 577</span>&#160; iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end(); ++iter)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (iter-&gt;second)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">delete</span> iter-&gt;second;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;}</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#l00440">SymbolTableInfo.h:440</a></div></div>
1353
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00690">690</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1354
+ <div class="fragment"><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;{</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</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="l00694"></a><span class="lineno"> 694</span>&#160; ++iter)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span> (iter-&gt;second)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keyword">delete</span> iter-&gt;second;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</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="l00700"></a><span class="lineno"> 700</span>&#160; iter != <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.end(); ++iter)</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">if</span> (iter-&gt;second)</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">delete</span> iter-&gt;second;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a>;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ae577a32079a8e95d0185bfc45d919635">dl</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</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#l00452">SymbolTableInfo.h:452</a></div></div>
1355
+ <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#l00067">SymbolTableInfo.h:67</a></div></div>
1221
1356
  <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#l00071">SymbolTableInfo.h:71</a></div></div>
1222
1357
  </div><!-- fragment -->
1223
1358
  </div>
@@ -1247,8 +1382,8 @@ Static Private Attributes</h2></td></tr>
1247
1382
 
1248
1383
  <p>Another debug method. </p>
1249
1384
 
1250
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l01010">1010</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1251
- <div class="fragment"><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;{</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;SymID, Value*&gt;</a> idmap;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> maxid = 0;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</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="l01015"></a><span class="lineno"> 1015</span>&#160; ++iter)</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</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="l01018"></a><span class="lineno"> 1018</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</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="l01020"></a><span class="lineno"> 1020</span>&#160; idmap[i] = val;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; }</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</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="l01023"></a><span class="lineno"> 1023</span>&#160; ++iter)</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; {</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</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="l01026"></a><span class="lineno"> 1026</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</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="l01028"></a><span class="lineno"> 1028</span>&#160; idmap[i] = val;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</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="l01031"></a><span class="lineno"> 1031</span>&#160; ++iter)</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</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="l01034"></a><span class="lineno"> 1034</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</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="l01036"></a><span class="lineno"> 1036</span>&#160; idmap[i] = val;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</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="l01039"></a><span class="lineno"> 1039</span>&#160; ++iter)</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</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="l01042"></a><span class="lineno"> 1042</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</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="l01044"></a><span class="lineno"> 1044</span>&#160; idmap[i] = val;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; }</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</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="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> symid = 0; symid &lt;= maxid; ++symid) {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42b">SYMTYPE</a> symtype = this-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.at(symid);</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordtype">string</span> typestring = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">toString</a>(symtype);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; typestring &lt;&lt; symid;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">if</span> (symtype &lt; <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da">SYMTYPE::ValSym</a>) {</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</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="l01053"></a><span class="lineno"> 1053</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keyword">auto</span> I = idmap.find(symid);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">if</span> (I == idmap.end()) {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;No value\n&quot;</span>;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; }</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = I-&gt;second;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; -&gt; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(val) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; }</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</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="l01064"></a><span class="lineno"> 1064</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a7d3001549966444622d5918e5811e89e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">SVF::SymbolTableInfo::toString</a></div><div class="ttdeci">static std::string toString(SYMTYPE symtype)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00977">SymbolTableInfo.cpp:977</a></div></div>
1385
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l01136">1136</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1386
+ <div class="fragment"><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;{</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;SymID, Value*&gt;</a> idmap;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> maxid = 0;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</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="l01141"></a><span class="lineno"> 1141</span>&#160; ++iter)</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; {</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</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="l01144"></a><span class="lineno"> 1144</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</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="l01146"></a><span class="lineno"> 1146</span>&#160; idmap[i] = val;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; }</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</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="l01149"></a><span class="lineno"> 1149</span>&#160; ++iter)</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; {</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</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="l01152"></a><span class="lineno"> 1152</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</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="l01154"></a><span class="lineno"> 1154</span>&#160; idmap[i] = val;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; }</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</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="l01157"></a><span class="lineno"> 1157</span>&#160; ++iter)</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; {</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</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="l01160"></a><span class="lineno"> 1160</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</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="l01162"></a><span class="lineno"> 1162</span>&#160; idmap[i] = val;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; }</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</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="l01165"></a><span class="lineno"> 1165</span>&#160; ++iter)</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; {</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</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="l01168"></a><span class="lineno"> 1168</span>&#160; maxid = max(i, maxid);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</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="l01170"></a><span class="lineno"> 1170</span>&#160; idmap[i] = val;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; }</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</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="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> symid = 0; symid &lt;= maxid; ++symid) {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42b">SYMTYPE</a> symtype = this-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a2680e554af6153cbe8521425c1fbb123">symTyMap</a>.at(symid);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordtype">string</span> typestring = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">toString</a>(symtype);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; typestring &lt;&lt; symid;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="keywordflow">if</span> (symtype &lt; <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da">SYMTYPE::ValSym</a>) {</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</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="l01179"></a><span class="lineno"> 1179</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keyword">auto</span> I = idmap.find(symid);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">if</span> (I == idmap.end()) {</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;No value\n&quot;</span>;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; }</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = I-&gt;second;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; -&gt; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(val) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</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="l01190"></a><span class="lineno"> 1190</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a7d3001549966444622d5918e5811e89e"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a7d3001549966444622d5918e5811e89e">SVF::SymbolTableInfo::toString</a></div><div class="ttdeci">static std::string toString(SYMTYPE symtype)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l01103">SymbolTableInfo.cpp:1103</a></div></div>
1252
1387
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42b"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42b">SVF::SYMTYPE</a></div><div class="ttdeci">SYMTYPE</div><div class="ttdoc">Symbol types. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00040">MemModel.h:40</a></div></div>
1253
1388
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da">SVF::ValSym</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00046">MemModel.h:46</a></div></div>
1254
1389
  <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>
@@ -1293,11 +1428,11 @@ Static Private Attributes</h2></td></tr>
1293
1428
  <p>Get the base type and max offset. </p>
1294
1429
  <p>Find the base type and the max possible offset for an object pointed to by (V). </p>
1295
1430
 
1296
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00332">332</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1297
- <div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(V);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; fields.push_back(<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0));</div><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="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = V-&gt;getType();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// Use the biggest struct type out of all operands.</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</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="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</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="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// In case of BitCast, try the target type itself</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(V))</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; <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="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; msz = sz;</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; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="comment">// Try the types of all operands</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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="l00353"></a><span class="lineno"> 353</span>&#160; it != ie; ++it)</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; <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="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</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="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</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; msz = sz;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; T = operandtype;</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; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="comment">// If V is a CE, the actual pointer type is its operand.</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</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="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; T = E-&gt;getOperand(0)-&gt;getType();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a>(fields, T, 0);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">// Handle Argument case</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Argument&gt;(V))</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a>(fields, T, 0);</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;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</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="l00378"></a><span class="lineno"> 378</span>&#160; T = ptype-&gt;getElementType();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> T;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</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>
1431
+ <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>
1432
+ <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>(V);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; fields.push_back(<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0));</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</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="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// Use the biggest struct type out of all operands.</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</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="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</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="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">// In case of BitCast, try the target type itself</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;BitCastInst&gt;(V))</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</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="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; msz = sz;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="comment">// Try the types of all operands</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</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="l00476"></a><span class="lineno"> 476</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *operandtype = it-&gt;get()-&gt;getType();</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.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="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><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; msz = sz;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; T = operandtype;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment">// If V is a CE, the actual pointer type is its operand.</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</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="l00490"></a><span class="lineno"> 490</span>&#160; {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; T = E-&gt;getOperand(0)-&gt;getType();</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a>(fields, T, 0);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">// Handle Argument case</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Argument&gt;(V))</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ac26583169a343e7a9f751e4ec60f7b3d">getFields</a>(fields, T, 0);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</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="l00501"></a><span class="lineno"> 501</span>&#160; T = ptype-&gt;getElementType();</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> T;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</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>
1298
1433
  <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>
1299
1434
  <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>
1300
- <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#l00309">SymbolTableInfo.cpp:309</a></div></div>
1435
+ <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#l00432">SymbolTableInfo.cpp:432</a></div></div>
1301
1436
  <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>
1302
1437
  <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>
1303
1438
  <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>
@@ -1522,10 +1657,10 @@ Static Private Attributes</h2></td></tr>
1522
1657
  <p>Replace fields with flatten fields of T if the number of its fields is larger than msz. </p>
1523
1658
  <p>Replace fields with T's flatten fields. </p>
1524
1659
 
1525
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00309">309</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1526
- <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">if</span> (!SVFUtil::isa&lt;PointerType&gt;(T))</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; T = T-&gt;getContainedType(0);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</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#aed11023ad3dfe7c5f5c559e2f2b23e23">getFlattenFieldInfoVec</a>(T);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = stVec.size();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; fields.clear();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</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="l00322"></a><span class="lineno"> 322</span>&#160; fields.push_back(<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(*it));</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</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; <span class="keywordflow">return</span> sz;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</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>
1660
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00432">432</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1661
+ <div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;{</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;PointerType&gt;(T))</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> 0;</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; T = T-&gt;getContainedType(0);</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; stVec = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aed11023ad3dfe7c5f5c559e2f2b23e23">getFlattenFieldInfoVec</a>(T);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> sz = stVec.size();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (msz &lt; sz)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; fields.clear();</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</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="l00445"></a><span class="lineno"> 445</span>&#160; fields.push_back(<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(*it));</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> sz;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</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>
1527
1662
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aed11023ad3dfe7c5f5c559e2f2b23e23"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aed11023ad3dfe7c5f5c559e2f2b23e23">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_8h_source.html#l00395">SymbolTableInfo.h:395</a></div></div>
1528
- <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#l00088">SymbolTableInfo.cpp:88</a></div></div>
1663
+ <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#l00214">SymbolTableInfo.cpp:214</a></div></div>
1529
1664
  <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>
1530
1665
  </div><!-- fragment -->
1531
1666
  </div>
@@ -1616,7 +1751,7 @@ Static Private Attributes</h2></td></tr>
1616
1751
  </div><div class="memdoc">
1617
1752
 
1618
1753
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00329">329</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
1619
- <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</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#l00446">SymbolTableInfo.h:446</a></div></div>
1754
+ <div class="fragment"><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#abb8550c9ef856e45cb7675c3796f9a35">maxStSize</a>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</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#l00458">SymbolTableInfo.h:458</a></div></div>
1620
1755
  </div><!-- fragment -->
1621
1756
  </div>
1622
1757
  </div>
@@ -1716,15 +1851,13 @@ Static Private Attributes</h2></td></tr>
1716
1851
  <p>Get modulus offset given the type information </p>
1717
1852
  <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>
1718
1853
 
1719
- <p>Reimplemented in <a class="el" href="classSVF_1_1LocSymTableInfo.html#a81763320f531da09014b4f5019dc8144">SVF::LocSymTableInfo</a>.</p>
1720
-
1721
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00385">385</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1722
- <div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <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="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">if</span>(offset &lt; 0)</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; <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="l00396"></a><span class="lineno"> 396</span>&#160; offset = abs(offset);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a7d029aa6ac6d1427831ed8bc166ba22f">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; offset = offset % maxOffset;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; offset = 0;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</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>
1854
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00508">508</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1855
+ <div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;{</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <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="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span>(offset &lt; 0)</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</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="l00519"></a><span class="lineno"> 519</span>&#160; offset = abs(offset);</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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> maxOffset = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a7d029aa6ac6d1427831ed8bc166ba22f">getMaxFieldOffsetLimit</a>();</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span> (maxOffset != 0)</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; offset = offset % maxOffset;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; offset = 0;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</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>
1723
1856
  <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>
1724
1857
  <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>
1725
1858
  <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#l00194">LocationSet.h:194</a></div></div>
1726
1859
  <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>
1727
- <div class="ttc" id="classSVF_1_1MemObj_html_a7d029aa6ac6d1427831ed8bc166ba22f"><div class="ttname"><a href="classSVF_1_1MemObj.html#a7d029aa6ac6d1427831ed8bc166ba22f">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="MemModel_8h_source.html#l00319">MemModel.h:319</a></div></div>
1860
+ <div class="ttc" id="classSVF_1_1MemObj_html_a7d029aa6ac6d1427831ed8bc166ba22f"><div class="ttname"><a href="classSVF_1_1MemObj.html#a7d029aa6ac6d1427831ed8bc166ba22f">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="MemModel_8h_source.html#l00303">MemModel.h:303</a></div></div>
1728
1861
  </div><!-- fragment -->
1729
1862
  </div>
1730
1863
  </div>
@@ -1758,6 +1891,41 @@ Static Private Attributes</h2></td></tr>
1758
1891
  </div><!-- fragment -->
1759
1892
  </div>
1760
1893
  </div>
1894
+ <a id="a2f8ec960e3462cef867b1ac6e524dea8"></a>
1895
+ <h2 class="memtitle"><span class="permalink"><a href="#a2f8ec960e3462cef867b1ac6e524dea8">&#9670;&nbsp;</a></span>getObjSize()</h2>
1896
+
1897
+ <div class="memitem">
1898
+ <div class="memproto">
1899
+ <table class="mlabels">
1900
+ <tr>
1901
+ <td class="mlabels-left">
1902
+ <table class="memname">
1903
+ <tr>
1904
+ <td class="memname"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SymbolTableInfo::getObjSize </td>
1905
+ <td>(</td>
1906
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
1907
+ <td class="paramname"><em>val</em></td><td>)</td>
1908
+ <td></td>
1909
+ </tr>
1910
+ </table>
1911
+ </td>
1912
+ <td class="mlabels-right">
1913
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
1914
+ </tr>
1915
+ </table>
1916
+ </div><div class="memdoc">
1917
+
1918
+ <p>Return size of this object based on LLVM value. </p>
1919
+ <p>Return size of this Object </p>
1920
+
1921
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00155">155</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
1922
+ <div class="fragment"><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;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ety = SVFUtil::cast&lt;PointerType&gt;(val-&gt;getType())-&gt;getElementType();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFields = 1;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(ety) || SVFUtil::isa&lt;ArrayType&gt;(ety))</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; numOfFields = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aed11023ad3dfe7c5f5c559e2f2b23e23">getFlattenFieldInfoVec</a>(ety).size();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> numOfFields;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</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>
1923
+ <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>
1924
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aed11023ad3dfe7c5f5c559e2f2b23e23"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aed11023ad3dfe7c5f5c559e2f2b23e23">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_8h_source.html#l00395">SymbolTableInfo.h:395</a></div></div>
1925
+ <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#l00214">SymbolTableInfo.cpp:214</a></div></div>
1926
+ </div><!-- fragment -->
1927
+ </div>
1928
+ </div>
1761
1929
  <a id="afca5a68d1825326e3ec6302ce0afee66"></a>
1762
1930
  <h2 class="memtitle"><span class="permalink"><a href="#afca5a68d1825326e3ec6302ce0afee66">&#9670;&nbsp;</a></span>getObjSym()</h2>
1763
1931
 
@@ -1956,9 +2124,9 @@ Static Private Attributes</h2></td></tr>
1956
2124
  <p>Get an iterator for StructInfo, designed as internal methods </p>
1957
2125
 
1958
2126
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00367">367</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
1959
- <div class="fragment"><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(T);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; TypeToFieldInfoMap::iterator it = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> it;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(T);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</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="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="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#l00440">SymbolTableInfo.h:440</a></div></div>
2127
+ <div class="fragment"><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(T);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; TypeToFieldInfoMap::iterator it = <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad8b9fa0a4e4b91efb80586e692bd0dcd">typeToFieldInfo</a>.find(T);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> it;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#aa99cab5480116905dd41ab0ad24b9462">collectTypeInfo</a>(T);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</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="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="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#l00452">SymbolTableInfo.h:452</a></div></div>
1960
2128
  <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>
1961
- <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#l00104">SymbolTableInfo.cpp:104</a></div></div>
2129
+ <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#l00227">SymbolTableInfo.cpp:227</a></div></div>
1962
2130
  </div><!-- fragment -->
1963
2131
  </div>
1964
2132
  </div>
@@ -2010,8 +2178,8 @@ Static Private Attributes</h2></td></tr>
2010
2178
 
2011
2179
  <p>Helper method to get the size of the type from target data layout. </p>
2012
2180
 
2013
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l01069">1069</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2014
- <div class="fragment"><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;{</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</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="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">if</span>(type-&gt;isSized())</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</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="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</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#l00147">SymbolTableInfo.h:147</a></div></div>
2181
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l01195">1195</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2182
+ <div class="fragment"><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;{</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</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="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keywordflow">if</span>(type-&gt;isSized())</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</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="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</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#l00147">SymbolTableInfo.h:147</a></div></div>
2015
2183
  <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>
2016
2184
  <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>
2017
2185
  </div><!-- fragment -->
@@ -2044,8 +2212,8 @@ Static Private Attributes</h2></td></tr>
2044
2212
  </div><div class="memdoc">
2045
2213
  <p>if this struct type does not have any element, i.e., opaque </p>
2046
2214
 
2047
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l01079">1079</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2048
- <div class="fragment"><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;{</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</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="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</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#l00147">SymbolTableInfo.h:147</a></div></div>
2215
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l01205">1205</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2216
+ <div class="fragment"><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;{</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</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="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keywordflow">if</span>(sty-&gt;isOpaque())</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">return</span> stTySL-&gt;getElementOffset(field_idx);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</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#l00147">SymbolTableInfo.h:147</a></div></div>
2049
2217
  <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>
2050
2218
  <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>
2051
2219
  </div><!-- fragment -->
@@ -2080,9 +2248,9 @@ Static Private Attributes</h2></td></tr>
2080
2248
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00260">260</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2081
2249
  <div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</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; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a65a7e9d6d238a04291cb7d0aa15ece90">isNullPtrSym</a>(val))</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#adaed6e68c2f53260ed4c4fc38b5c4721">nullPtrSymID</a>();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a1689fa03795200b501ae3887906e7e72">blkPtrSymID</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">else</span></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; ValueToIDMapTy::const_iterator iter = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a5054f95a7b77257ffb283044aab17b08">valSymMap</a>.find(val);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</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="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</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>
2082
2250
  <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#l00226">SymbolTableInfo.h:226</a></div></div>
2083
- <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#l00714">SymbolTableInfo.cpp:714</a></div></div>
2251
+ <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#l00840">SymbolTableInfo.cpp:840</a></div></div>
2084
2252
  <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#l00221">SymbolTableInfo.h:221</a></div></div>
2085
- <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#l00702">SymbolTableInfo.cpp:702</a></div></div>
2253
+ <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#l00828">SymbolTableInfo.cpp:828</a></div></div>
2086
2254
  <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#l00069">SymbolTableInfo.h:69</a></div></div>
2087
2255
  </div><!-- fragment -->
2088
2256
  </div>
@@ -2134,16 +2302,16 @@ Static Private Attributes</h2></td></tr>
2134
2302
  </div><div class="memdoc">
2135
2303
  <p>Handle constant expression </p>
2136
2304
 
2137
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00757">757</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2138
- <div class="fragment"><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;{</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">isGepConstantExpr</a>(ref))</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span> &lt;&lt; *ref &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">isCastConstantExpr</a>(ref))</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; {</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span> &lt;&lt; *ref &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">isSelectConstantExpr</a>(ref))</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span> &lt;&lt; *ref &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(1));</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(2));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(1));</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(2));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *int2Ptrce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(ref)) {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(int2Ptrce);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ptr2Intce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">isPtr2IntConstantExpr</a>(ref)) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ptr2Intce);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *opnd = ptr2Intce-&gt;getOperand(0);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(opnd);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">isCmpConstantExpr</a>(ref)) {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">isBinaryConstantExpr</a>(ref)) {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">isUnaryConstantExpr</a>(ref)) {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// we don&#39;t handle unary constant expression like fneg(x) now</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantAggregate&gt;(ref)) {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="comment">// we don&#39;t handle constant agrgregate like constant vectors</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we don&#39;t handle all other constant expression for now!&quot;</span>);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad92842613ac245ad06875a012a5549ab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">SVF::SymbolTableInfo::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00757">SymbolTableInfo.cpp:757</a></div></div>
2305
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00883">883</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2306
+ <div class="fragment"><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;{</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a>* ref = SVFUtil::dyn_cast&lt;Constant&gt;(val))</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">isGepConstantExpr</a>(ref))</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; {</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span> &lt;&lt; *ref &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">isCastConstantExpr</a>(ref))</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span> &lt;&lt; *ref &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; }</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>* ce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a07d991d5bfccce9ebdef0cbb6f4bf739">isSelectConstantExpr</a>(ref))</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a>,</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;handle constant expression &quot;</span> &lt;&lt; *ref &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(1));</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ce-&gt;getOperand(2));</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="comment">// handle the recursive constant express case</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="comment">// like (gep (bitcast (gep X 1)) 1); the inner gep is ce-&gt;getOperand(0)</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(0));</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(1));</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(ce-&gt;getOperand(2));</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; }</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="comment">// if we meet a int2ptr, then it points-to black hole</span></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *int2Ptrce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">isInt2PtrConstantExpr</a>(ref)) {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(int2Ptrce);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ptr2Intce = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">isPtr2IntConstantExpr</a>(ref)) {</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ptr2Intce);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *opnd = ptr2Intce-&gt;getOperand(0);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(opnd);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">isTruncConstantExpr</a>(ref) || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">isCmpConstantExpr</a>(ref)) {</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">isBinaryConstantExpr</a>(ref)) {</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">isUnaryConstantExpr</a>(ref)) {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="comment">// we don&#39;t handle unary constant expression like fneg(x) now</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantAggregate&gt;(ref)) {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="comment">// we don&#39;t handle constant agrgregate like constant vectors</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantExpr&gt;(val))</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we don&#39;t handle all other constant expression for now!&quot;</span>);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(ref);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad92842613ac245ad06875a012a5549ab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">SVF::SymbolTableInfo::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00883">SymbolTableInfo.cpp:883</a></div></div>
2139
2307
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1373688c6faba4dcdb640106575ea433"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1373688c6faba4dcdb640106575ea433">SVF::SVFUtil::isTruncConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isTruncConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00570">LLVMUtil.h:570</a></div></div>
2140
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a135ec0f7574d4bcb4bc411ce5775f1f5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">SVF::SymbolTableInfo::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00614">SymbolTableInfo.cpp:614</a></div></div>
2308
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a135ec0f7574d4bcb4bc411ce5775f1f5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">SVF::SymbolTableInfo::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00740">SymbolTableInfo.cpp:740</a></div></div>
2141
2309
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af14757d5cf466bba20a125f118378560"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af14757d5cf466bba20a125f118378560">SVF::SVFUtil::isUnaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isUnaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00604">LLVMUtil.h:604</a></div></div>
2142
2310
  <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>
2143
2311
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6bc4376ada53ddfbf8df2ca817153555"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6bc4376ada53ddfbf8df2ca817153555">SVF::SVFUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00530">LLVMUtil.h:530</a></div></div>
2144
2312
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4adb63c87a9489ab905d42230ac66299"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4adb63c87a9489ab905d42230ac66299">SVF::SVFUtil::isCmpConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCmpConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00584">LLVMUtil.h:584</a></div></div>
2145
2313
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a384b0986a6c4e99dfc4e1629b3598c3c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a384b0986a6c4e99dfc4e1629b3598c3c">SVF::SVFUtil::isGepConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isGepConstantExpr(const Value *val)</div><div class="ttdoc">Return corresponding constant expression, otherwise return nullptr. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00520">LLVMUtil.h:520</a></div></div>
2146
- <div class="ttc" id="SVFBasicTypes_8h_html_aaff570bb354b8519a4852ffda413af7c"><div class="ttname"><a href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a></div><div class="ttdeci">#define DMemModelCE</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
2314
+ <div class="ttc" id="SVFBasicTypes_8h_html_aaff570bb354b8519a4852ffda413af7c"><div class="ttname"><a href="SVFBasicTypes_8h.html#aaff570bb354b8519a4852ffda413af7c">DMemModelCE</a></div><div class="ttdeci">#define DMemModelCE</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00158">SVFBasicTypes.h:158</a></div></div>
2147
2315
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a093b7ae4ad144fb5d028366b1814861a"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a093b7ae4ad144fb5d028366b1814861a">SVF::SVFUtil::isPtr2IntConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isPtr2IntConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00540">LLVMUtil.h:540</a></div></div>
2148
2316
  <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>
2149
2317
  <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>
@@ -2151,7 +2319,7 @@ Static Private Attributes</h2></td></tr>
2151
2319
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7e404bcc6613ba10a56c4fbdc842c5a8"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7e404bcc6613ba10a56c4fbdc842c5a8">SVF::SVFUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00550">LLVMUtil.h:550</a></div></div>
2152
2320
  <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>
2153
2321
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a43c9072210a5f5baeafe36da03f2fde2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a43c9072210a5f5baeafe36da03f2fde2">SVF::SVFUtil::isBinaryConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isBinaryConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00594">LLVMUtil.h:594</a></div></div>
2154
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00147">SVFBasicTypes.h:147</a></div></div>
2322
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00149">SVFBasicTypes.h:149</a></div></div>
2155
2323
  </div><!-- fragment -->
2156
2324
  </div>
2157
2325
  </div>
@@ -2174,12 +2342,12 @@ Static Private Attributes</h2></td></tr>
2174
2342
  <p>Handle constant expression. </p>
2175
2343
  <p>Handle global constant expression </p>
2176
2344
 
2177
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00823">823</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2178
- <div class="fragment"><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;{</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(G);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="comment">//The type this global points to</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = G-&gt;getType()-&gt;getContainedType(0);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordtype">bool</span> is_array = 0;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="comment">//An array is considered a single variable of its type.</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *AT = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; T = AT-&gt;getElementType();</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; is_array = 1;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(T))</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="comment">//A struct may be used in constant GEP expr.</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator it = G-&gt;user_begin(), ie = G-&gt;user_end();</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(*it);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (is_array)</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; {</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator it = G-&gt;user_begin(), ie =</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; G-&gt;user_end(); it != ie; ++it)</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; {</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(*it);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">if</span> (G-&gt;hasInitializer())</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">handleGlobalInitializerCE</a>(G-&gt;getInitializer(), 0);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; }</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad92842613ac245ad06875a012a5549ab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">SVF::SymbolTableInfo::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00757">SymbolTableInfo.cpp:757</a></div></div>
2345
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00949">949</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2346
+ <div class="fragment"><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;{</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(G);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="comment">//The type this global points to</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *T = G-&gt;getType()-&gt;getContainedType(0);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordtype">bool</span> is_array = 0;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">//An array is considered a single variable of its type.</span></div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *AT = SVFUtil::dyn_cast&lt;ArrayType&gt;(T))</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; T = AT-&gt;getElementType();</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; is_array = 1;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;StructType&gt;(T))</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; {</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="comment">//A struct may be used in constant GEP expr.</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator it = G-&gt;user_begin(), ie = G-&gt;user_end();</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; it != ie; ++it)</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; {</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(*it);</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; {</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">if</span> (is_array)</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">for</span> (Value::const_user_iterator it = G-&gt;user_begin(), ie =</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; G-&gt;user_end(); it != ie; ++it)</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; {</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(*it);</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <span class="keywordflow">if</span> (G-&gt;hasInitializer())</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">handleGlobalInitializerCE</a>(G-&gt;getInitializer(), 0);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; }</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad92842613ac245ad06875a012a5549ab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">SVF::SymbolTableInfo::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00883">SymbolTableInfo.cpp:883</a></div></div>
2179
2347
  <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>
2180
2348
  <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>
2181
2349
  <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>
2182
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a005df6b86f4058114bf7a336e73e63df"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">SVF::SymbolTableInfo::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00867">SymbolTableInfo.cpp:867</a></div></div>
2350
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a005df6b86f4058114bf7a336e73e63df"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">SVF::SymbolTableInfo::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00993">SymbolTableInfo.cpp:993</a></div></div>
2183
2351
  </div><!-- fragment -->
2184
2352
  </div>
2185
2353
  </div>
@@ -2210,14 +2378,14 @@ Static Private Attributes</h2></td></tr>
2210
2378
  </div><div class="memdoc">
2211
2379
  <p>Handle global variable initialization </p>
2212
2380
 
2213
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00867">867</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2214
- <div class="fragment"><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *E = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(C))</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(E);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; }</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; {</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(C);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; }</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray&gt;(C))</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)), offset);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantStruct&gt;(C))</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; {</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty = SVFUtil::cast&lt;StructType&gt;(C-&gt;getType());</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; offsetvect =</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abfad1554a3803ff131f2a8682f329354">getFattenFieldIdxVec</a>(sty);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = offsetvect[i];</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)),</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; offset + off);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; }</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad92842613ac245ad06875a012a5549ab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">SVF::SymbolTableInfo::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00757">SymbolTableInfo.cpp:757</a></div></div>
2215
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a135ec0f7574d4bcb4bc411ce5775f1f5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">SVF::SymbolTableInfo::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00614">SymbolTableInfo.cpp:614</a></div></div>
2381
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00993">993</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2382
+ <div class="fragment"><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;{</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">if</span> (C-&gt;getType()-&gt;isSingleValueType())</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; {</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *E = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(C))</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; {</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">handleCE</a>(E);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">collectVal</a>(C);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantArray&gt;(C))</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)), offset);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; }</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantStruct&gt;(C))</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty = SVFUtil::cast&lt;StructType&gt;(C-&gt;getType());</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; offsetvect =</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#abfad1554a3803ff131f2a8682f329354">getFattenFieldIdxVec</a>(sty);</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0, e = C-&gt;getNumOperands(); i != e; i++)</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> off = offsetvect[i];</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">handleGlobalInitializerCE</a>(SVFUtil::cast&lt;Constant&gt;(C-&gt;getOperand(i)),</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; offset + off);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; }</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; }</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad92842613ac245ad06875a012a5549ab"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad92842613ac245ad06875a012a5549ab">SVF::SymbolTableInfo::handleCE</a></div><div class="ttdeci">void handleCE(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00883">SymbolTableInfo.cpp:883</a></div></div>
2383
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a135ec0f7574d4bcb4bc411ce5775f1f5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a135ec0f7574d4bcb4bc411ce5775f1f5">SVF::SymbolTableInfo::collectVal</a></div><div class="ttdeci">void collectVal(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00740">SymbolTableInfo.cpp:740</a></div></div>
2216
2384
  <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>
2217
2385
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abfad1554a3803ff131f2a8682f329354"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abfad1554a3803ff131f2a8682f329354">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_8h_source.html#l00387">SymbolTableInfo.h:387</a></div></div>
2218
2386
  <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>
2219
- <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#l00088">SymbolTableInfo.cpp:88</a></div></div>
2220
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a005df6b86f4058114bf7a336e73e63df"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">SVF::SymbolTableInfo::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00867">SymbolTableInfo.cpp:867</a></div></div>
2387
+ <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#l00214">SymbolTableInfo.cpp:214</a></div></div>
2388
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a005df6b86f4058114bf7a336e73e63df"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a005df6b86f4058114bf7a336e73e63df">SVF::SymbolTableInfo::handleGlobalInitializerCE</a></div><div class="ttdeci">void handleGlobalInitializerCE(const Constant *C, u32_t offset)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00993">SymbolTableInfo.cpp:993</a></div></div>
2221
2389
  <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>
2222
2390
  </div><!-- fragment -->
2223
2391
  </div>
@@ -2247,8 +2415,8 @@ Static Private Attributes</h2></td></tr>
2247
2415
  </div><div class="memdoc">
2248
2416
 
2249
2417
  <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00275">275</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2250
- <div class="fragment"><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</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="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <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="l00281"></a><span class="lineno"> 281</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#l00714">SymbolTableInfo.cpp:714</a></div></div>
2251
- <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#l00702">SymbolTableInfo.cpp:702</a></div></div>
2418
+ <div class="fragment"><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</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="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <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="l00281"></a><span class="lineno"> 281</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#l00840">SymbolTableInfo.cpp:840</a></div></div>
2419
+ <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#l00828">SymbolTableInfo.cpp:828</a></div></div>
2252
2420
  <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#l00069">SymbolTableInfo.h:69</a></div></div>
2253
2421
  </div><!-- fragment -->
2254
2422
  </div>
@@ -2281,6 +2449,65 @@ Static Private Attributes</h2></td></tr>
2281
2449
  </div><!-- fragment -->
2282
2450
  </div>
2283
2451
  </div>
2452
+ <a id="a96067de8a2425b4f4c227fd7e472071d"></a>
2453
+ <h2 class="memtitle"><span class="permalink"><a href="#a96067de8a2425b4f4c227fd7e472071d">&#9670;&nbsp;</a></span>initTypeInfo()</h2>
2454
+
2455
+ <div class="memitem">
2456
+ <div class="memproto">
2457
+ <table class="mlabels">
2458
+ <tr>
2459
+ <td class="mlabels-left">
2460
+ <table class="memname">
2461
+ <tr>
2462
+ <td class="memname">void SymbolTableInfo::initTypeInfo </td>
2463
+ <td>(</td>
2464
+ <td class="paramtype"><a class="el" href="classSVF_1_1ObjTypeInfo.html">ObjTypeInfo</a> *&#160;</td>
2465
+ <td class="paramname"><em>typeinfo</em>, </td>
2466
+ </tr>
2467
+ <tr>
2468
+ <td class="paramkey"></td>
2469
+ <td></td>
2470
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *&#160;</td>
2471
+ <td class="paramname"><em>val</em>&#160;</td>
2472
+ </tr>
2473
+ <tr>
2474
+ <td></td>
2475
+ <td>)</td>
2476
+ <td></td><td></td>
2477
+ </tr>
2478
+ </table>
2479
+ </td>
2480
+ <td class="mlabels-right">
2481
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
2482
+ </tr>
2483
+ </table>
2484
+ </div><div class="memdoc">
2485
+
2486
+ <p>Initialize TypeInfo based on LLVM Value. </p>
2487
+ <p>Initialize the type info of an object </p>
2488
+
2489
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00102">102</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2490
+ <div class="fragment"><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> objSize = 1;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">// Global variable</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;Function&gt;(val))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">ObjTypeInfo::FUNCTION_OBJ</a>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a36140622c6761ac5d1307308ff5b147f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2f8ec960e3462cef867b1ac6e524dea8">getObjSize</a>(val);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;AllocaInst&gt;(val))</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">ObjTypeInfo::STACK_OBJ</a>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a36140622c6761ac5d1307308ff5b147f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2f8ec960e3462cef867b1ac6e524dea8">getObjSize</a>(val);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">ObjTypeInfo::GLOBVAR_OBJ</a>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">isConstantObjSym</a>(val))</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">setFlag</a>(<a class="code" href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af11159d515b7cf1146b5342f64ee2da1">ObjTypeInfo::CONST_OBJ</a>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a36140622c6761ac5d1307308ff5b147f">analyzeGlobalStackObjType</a>(typeinfo,val);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; objSize = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a2f8ec960e3462cef867b1ac6e524dea8">getObjSize</a>(val);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a66692043a56c327ac7ac00cc3126cd78">analyzeHeapObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// Heap object, label its field as infinite here</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; objSize = -1;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;Instruction&gt;(val) &amp;&amp; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">isStaticExtCall</a>(SVFUtil::cast&lt;Instruction&gt;(val)))</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// static object allocated before main, label its field as infinite here</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; objSize = -1;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">ArgInProgEntryFunction</a>(val))</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">analyzeStaticObjType</a>(val-&gt;getType());</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// user input data, label its field as infinite here</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; objSize = -1;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">&quot;what other object do we have??&quot;</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// Reset maxOffsetLimit if it is over the total fieldNum of this object</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span>(objSize &gt; 0 &amp;&amp; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">getMaxFieldOffsetLimit</a>() &gt; objSize)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; typeinfo-&gt;<a class="code" href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">setMaxFieldOffsetLimit</a>(objSize);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a9fff869c63776c6ebeff78933e0f6092"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a9fff869c63776c6ebeff78933e0f6092">SVF::ObjTypeInfo::setMaxFieldOffsetLimit</a></div><div class="ttdeci">void setMaxFieldOffsetLimit(u32_t limit)</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00195">MemModel.h:195</a></div></div>
2491
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4d4191a1c81d80bf26aac120ed880135"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4d4191a1c81d80bf26aac120ed880135">SVF::SVFUtil::ArgInProgEntryFunction</a></div><div class="ttdeci">bool ArgInProgEntryFunction(const Value *val)</div><div class="ttdoc">Return true if this is an argument of a program entry function (e.g. main) </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00452">LLVMUtil.h:452</a></div></div>
2492
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af11159d515b7cf1146b5342f64ee2da1"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af11159d515b7cf1146b5342f64ee2da1">SVF::ObjTypeInfo::CONST_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00145">MemModel.h:145</a></div></div>
2493
+ <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>
2494
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a81bc3d785062c7e527ecf8e564cd52a4"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a81bc3d785062c7e527ecf8e564cd52a4">SVF::ObjTypeInfo::getMaxFieldOffsetLimit</a></div><div class="ttdeci">u32_t getMaxFieldOffsetLimit()</div><div class="ttdoc">Get max field offset limit. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00189">MemModel.h:189</a></div></div>
2495
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_ad6fb2bfae3d4b73a6821a87106f65f49"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#ad6fb2bfae3d4b73a6821a87106f65f49">SVF::ObjTypeInfo::setFlag</a></div><div class="ttdeci">void setFlag(MEMTYPE mask)</div><div class="ttdoc">Flag for this object type. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00202">MemModel.h:202</a></div></div>
2496
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a2f8ec960e3462cef867b1ac6e524dea8"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a2f8ec960e3462cef867b1ac6e524dea8">SVF::SymbolTableInfo::getObjSize</a></div><div class="ttdeci">u32_t getObjSize(const Value *val)</div><div class="ttdoc">Return size of this object based on LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00155">SymbolTableInfo.cpp:155</a></div></div>
2497
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_aa8b97a2cbd2de56b3c6c5c0e2e0a2211"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#aa8b97a2cbd2de56b3c6c5c0e2e0a2211">SVF::ObjTypeInfo::analyzeStaticObjType</a></div><div class="ttdeci">void analyzeStaticObjType(const Type *type)</div><div class="ttdoc">Analyse types of heap and static objects. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8cpp_source.html#l00060">MemModel.cpp:60</a></div></div>
2498
+ <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>
2499
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a36140622c6761ac5d1307308ff5b147f"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a36140622c6761ac5d1307308ff5b147f">SVF::SymbolTableInfo::analyzeGlobalStackObjType</a></div><div class="ttdeci">void analyzeGlobalStackObjType(ObjTypeInfo *typeinfo, const Value *val)</div><div class="ttdoc">Analyse types of all flattened fields of this object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00054">SymbolTableInfo.cpp:54</a></div></div>
2500
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830ad2ba0edfac1460f3fd89e7a6c4c4691b">SVF::ObjTypeInfo::GLOBVAR_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00137">MemModel.h:137</a></div></div>
2501
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00193">LLVMUtil.h:193</a></div></div>
2502
+ <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#l00214">SymbolTableInfo.cpp:214</a></div></div>
2503
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a93ac673b885633849fa484938405ca75"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">SVF::SVFUtil::isHeapAllocExtCall</a></div><div class="ttdeci">bool isHeapAllocExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00115">LLVMUtil.h:115</a></div></div>
2504
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830aad918042d1f04a5e3960817d55ccb5d5">SVF::ObjTypeInfo::STACK_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00139">MemModel.h:139</a></div></div>
2505
+ <div class="ttc" id="classSVF_1_1ObjTypeInfo_html_a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515"><div class="ttname"><a href="classSVF_1_1ObjTypeInfo.html#a91b41b7ade5871362b77a2ef566b2830af5f94b2a41dab25fa08c94a989fb9515">SVF::ObjTypeInfo::FUNCTION_OBJ</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00136">MemModel.h:136</a></div></div>
2506
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a61bda1c1c52fb765d0027d8141d35c35"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a61bda1c1c52fb765d0027d8141d35c35">SVF::SymbolTableInfo::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00848">SymbolTableInfo.cpp:848</a></div></div>
2507
+ <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="MemModel_8cpp_source.html#l00049">MemModel.cpp:49</a></div></div>
2508
+ </div><!-- fragment -->
2509
+ </div>
2510
+ </div>
2284
2511
  <a id="ab15112d3900f28525848cbe5fad37deb"></a>
2285
2512
  <h2 class="memtitle"><span class="permalink"><a href="#ab15112d3900f28525848cbe5fad37deb">&#9670;&nbsp;</a></span>isBlackholeSym()</h2>
2286
2513
 
@@ -2306,8 +2533,8 @@ Static Private Attributes</h2></td></tr>
2306
2533
  </div><div class="memdoc">
2307
2534
  <p>Check whether this value is a black hole </p>
2308
2535
 
2309
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00714">714</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2310
- <div class="fragment"><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;{</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> (SVFUtil::isa&lt;UndefValue&gt;(val));</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;}</div></div><!-- fragment -->
2536
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00840">840</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2537
+ <div class="fragment"><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;{</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">return</span> (SVFUtil::isa&lt;UndefValue&gt;(val));</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;}</div></div><!-- fragment -->
2311
2538
  </div>
2312
2539
  </div>
2313
2540
  <a id="ad9cdb21e20182f3bc95f04bbb97712f3"></a>
@@ -2444,8 +2671,8 @@ Static Private Attributes</h2></td></tr>
2444
2671
  </div><div class="memdoc">
2445
2672
  <p>Check whether this value points-to a constant object </p>
2446
2673
 
2447
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00722">722</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2448
- <div class="fragment"><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;{</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</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="l00725"></a><span class="lineno"> 725</span>&#160; {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</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="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer()){</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">if</span>(v-&gt;isExternalLinkage(v-&gt;getLinkage()))</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; {</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</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="l00737"></a><span class="lineno"> 737</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="l00738"></a><span class="lineno"> 738</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="l00739"></a><span class="lineno"> 739</span>&#160; {</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</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="l00741"></a><span class="lineno"> 741</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="l00742"></a><span class="lineno"> 742</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="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(elemTy))</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; }</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</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="l00751"></a><span class="lineno"> 751</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>
2674
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00848">848</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2675
+ <div class="fragment"><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;{</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</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="l00851"></a><span class="lineno"> 851</span>&#160; {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</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="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v-&gt;hasInitializer()){</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">if</span>(v-&gt;isExternalLinkage(v-&gt;getLinkage()))</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; }</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; {</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</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="l00863"></a><span class="lineno"> 863</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="l00864"></a><span class="lineno"> 864</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="l00865"></a><span class="lineno"> 865</span>&#160; {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</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="l00867"></a><span class="lineno"> 867</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="l00868"></a><span class="lineno"> 868</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="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;PointerType&gt;(elemTy))</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; }</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">return</span> v-&gt;isConstant();</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</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="l00877"></a><span class="lineno"> 877</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>
2449
2676
  <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>
2450
2677
  <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>
2451
2678
  <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>
@@ -2514,8 +2741,8 @@ Static Private Attributes</h2></td></tr>
2514
2741
  <p>special value </p>
2515
2742
  <p>Check whether this value is null pointer </p>
2516
2743
 
2517
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00702">702</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2518
- <div class="fragment"><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;{</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</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="l00705"></a><span class="lineno"> 705</span>&#160; {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> v-&gt;isNullValue() &amp;&amp; v-&gt;getType()-&gt;isPointerTy();</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</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>
2744
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00828">828</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2745
+ <div class="fragment"><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;{</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</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="l00831"></a><span class="lineno"> 831</span>&#160; {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">return</span> v-&gt;isNullValue() &amp;&amp; v-&gt;getType()-&gt;isPointerTy();</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</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>
2519
2746
  </div><!-- fragment -->
2520
2747
  </div>
2521
2748
  </div>
@@ -2594,8 +2821,8 @@ Static Private Attributes</h2></td></tr>
2594
2821
  <p>Debug method. </p>
2595
2822
  <p>All rest types are scalar type? </p>
2596
2823
 
2597
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00907">907</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2598
- <div class="fragment"><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;{</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</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="l00911"></a><span class="lineno"> 911</span>&#160; {</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</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="l00913"></a><span class="lineno"> 913</span>&#160; at-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</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="l00915"></a><span class="lineno"> 915</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="l00916"></a><span class="lineno"> 916</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="l00917"></a><span class="lineno"> 917</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="l00918"></a><span class="lineno"> 918</span>&#160; }</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</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="l00921"></a><span class="lineno"> 921</span>&#160; {</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</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="l00923"></a><span class="lineno"> 923</span>&#160; st-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</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="l00925"></a><span class="lineno"> 925</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="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordtype">int</span> field_idx = 0;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</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="l00928"></a><span class="lineno"> 928</span>&#160; it!=eit; ++it, field_idx++)</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</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="l00931"></a><span class="lineno"> 931</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="l00932"></a><span class="lineno"> 932</span>&#160; (*it).getFlattenElemTy()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</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="l00934"></a><span class="lineno"> 934</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="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">for</span>(FieldInfo::ElemNumStridePairVec::const_iterator pit = (*it).elemStridePairBegin(),</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; peit = (*it).elemStridePairEnd(); pit!=peit; ++pit)</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</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="l00939"></a><span class="lineno"> 939</span>&#160; }</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</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="l00941"></a><span class="lineno"> 941</span>&#160; }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</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="l00943"></a><span class="lineno"> 943</span>&#160; }</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</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="l00946"></a><span class="lineno"> 946</span>&#160; {</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</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="l00948"></a><span class="lineno"> 948</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="l00949"></a><span class="lineno"> 949</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="l00950"></a><span class="lineno"> 950</span>&#160; pt-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</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="l00952"></a><span class="lineno"> 952</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="l00953"></a><span class="lineno"> 953</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="l00954"></a><span class="lineno"> 954</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="l00955"></a><span class="lineno"> 955</span>&#160; }</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</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="l00958"></a><span class="lineno"> 958</span>&#160; {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</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="l00960"></a><span class="lineno"> 960</span>&#160; fu-&gt;getReturnType()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</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="l00962"></a><span class="lineno"> 962</span>&#160; }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</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="l00968"></a><span class="lineno"> 968</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="l00969"></a><span class="lineno"> 969</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="l00970"></a><span class="lineno"> 970</span>&#160; type-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</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="l00972"></a><span class="lineno"> 972</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="l00973"></a><span class="lineno"> 973</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="l00974"></a><span class="lineno"> 974</span>&#160; }</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</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>
2824
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l01033">1033</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2825
+ <div class="fragment"><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;{</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">ArrayType</a> *at = SVFUtil::dyn_cast&lt;ArrayType&gt; (type))</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; {</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</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="l01039"></a><span class="lineno"> 1039</span>&#160; at-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</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="l01041"></a><span class="lineno"> 1041</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="l01042"></a><span class="lineno"> 1042</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="l01043"></a><span class="lineno"> 1043</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="l01044"></a><span class="lineno"> 1044</span>&#160; }</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</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="l01047"></a><span class="lineno"> 1047</span>&#160; {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</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="l01049"></a><span class="lineno"> 1049</span>&#160; st-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</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="l01051"></a><span class="lineno"> 1051</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="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordtype">int</span> field_idx = 0;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</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="l01054"></a><span class="lineno"> 1054</span>&#160; it!=eit; ++it, field_idx++)</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</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="l01057"></a><span class="lineno"> 1057</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="l01058"></a><span class="lineno"> 1058</span>&#160; (*it).getFlattenElemTy()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</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="l01060"></a><span class="lineno"> 1060</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="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">for</span>(FieldInfo::ElemNumStridePairVec::const_iterator pit = (*it).elemStridePairBegin(),</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; peit = (*it).elemStridePairEnd(); pit!=peit; ++pit)</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; {</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</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="l01065"></a><span class="lineno"> 1065</span>&#160; }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</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="l01067"></a><span class="lineno"> 1067</span>&#160; }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</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="l01069"></a><span class="lineno"> 1069</span>&#160; }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</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="l01072"></a><span class="lineno"> 1072</span>&#160; {</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</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="l01074"></a><span class="lineno"> 1074</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="l01075"></a><span class="lineno"> 1075</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="l01076"></a><span class="lineno"> 1076</span>&#160; pt-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</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="l01078"></a><span class="lineno"> 1078</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="l01079"></a><span class="lineno"> 1079</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="l01080"></a><span class="lineno"> 1080</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="l01081"></a><span class="lineno"> 1081</span>&#160; }</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</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="l01084"></a><span class="lineno"> 1084</span>&#160; {</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</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="l01086"></a><span class="lineno"> 1086</span>&#160; fu-&gt;getReturnType()-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</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="l01088"></a><span class="lineno"> 1088</span>&#160; }</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; {</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</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="l01094"></a><span class="lineno"> 1094</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="l01095"></a><span class="lineno"> 1095</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="l01096"></a><span class="lineno"> 1096</span>&#160; type-&gt;print(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>());</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</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="l01098"></a><span class="lineno"> 1098</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="l01099"></a><span class="lineno"> 1099</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="l01100"></a><span class="lineno"> 1100</span>&#160; }</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</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>
2599
2826
  <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>
2600
2827
  <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>
2601
2828
  <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>
@@ -2604,7 +2831,7 @@ Static Private Attributes</h2></td></tr>
2604
2831
  <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>
2605
2832
  <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#l00381">SymbolTableInfo.h:381</a></div></div>
2606
2833
  <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>
2607
- <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#l01069">SymbolTableInfo.cpp:1069</a></div></div>
2834
+ <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#l01195">SymbolTableInfo.cpp:1195</a></div></div>
2608
2835
  </div><!-- fragment -->
2609
2836
  </div>
2610
2837
  </div>
@@ -2721,12 +2948,10 @@ Static Private Attributes</h2></td></tr>
2721
2948
  <p>Singleton design here to make sure we only have one instance during any analysis. </p>
2722
2949
  <p>Get the symbol table instance </p>
2723
2950
 
2724
- <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>
2725
- <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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a8c7ece61e55940be1a0d310bd2cf77f8">Options::LocMemModel</a>)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LocSymTableInfo.html">LocSymTableInfo</a>();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SymbolTableInfo</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d">setModelConstants</a>(<a class="code" href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">Options::ModelConsts</a>);</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aff272bc1d00f2e57b7677d1826a31237"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SVF::SymbolTableInfo::SymbolTableInfo</a></div><div class="ttdeci">SymbolTableInfo(void)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00098">SymbolTableInfo.h:98</a></div></div>
2726
- <div class="ttc" id="classSVF_1_1Options_html_a8c7ece61e55940be1a0d310bd2cf77f8"><div class="ttname"><a href="classSVF_1_1Options.html#a8c7ece61e55940be1a0d310bd2cf77f8">SVF::Options::LocMemModel</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; LocMemModel</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00212">Options.h:212</a></div></div>
2951
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00214">214</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2952
+ <div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;{</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a> == <span class="keyword">nullptr</span>)</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; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SymbolTableInfo</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d">setModelConstants</a>(<a class="code" href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">Options::ModelConsts</a>);</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">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">symInfo</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aff272bc1d00f2e57b7677d1826a31237"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aff272bc1d00f2e57b7677d1826a31237">SVF::SymbolTableInfo::SymbolTableInfo</a></div><div class="ttdeci">SymbolTableInfo(void)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00098">SymbolTableInfo.h:98</a></div></div>
2727
2953
  <div class="ttc" id="classSVF_1_1Options_html_a5c051cf6a93a87a07aa1d31e302a2877"><div class="ttname"><a href="classSVF_1_1Options.html#a5c051cf6a93a87a07aa1d31e302a2877">SVF::Options::ModelConsts</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; ModelConsts</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00213">Options.h:213</a></div></div>
2728
2954
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4decfc9e7f5dc096d7bfa42d6965763d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4decfc9e7f5dc096d7bfa42d6965763d">SVF::SymbolTableInfo::setModelConstants</a></div><div class="ttdeci">void setModelConstants(bool _modelConstants)</div><div class="ttdoc">Set / Get modelConstants. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00122">SymbolTableInfo.h:122</a></div></div>
2729
- <div class="ttc" id="classSVF_1_1LocSymTableInfo_html"><div class="ttname"><a href="classSVF_1_1LocSymTableInfo.html">SVF::LocSymTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00457">SymbolTableInfo.h:457</a></div></div>
2730
2955
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a4fbb8ea4b4796d10d13c027b7455505c"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a4fbb8ea4b4796d10d13c027b7455505c">SVF::SymbolTableInfo::symInfo</a></div><div class="ttdeci">static SymbolTableInfo * symInfo</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00079">SymbolTableInfo.h:79</a></div></div>
2731
2956
  </div><!-- fragment -->
2732
2957
  </div>
@@ -2755,8 +2980,8 @@ Static Private Attributes</h2></td></tr>
2755
2980
  </table>
2756
2981
  </div><div class="memdoc">
2757
2982
 
2758
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l00977">977</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2759
- <div class="fragment"><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;{</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">switch</span> (symtype) {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">SYMTYPE::BlackHole</a>: {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BlackHole&quot;</span>;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">SYMTYPE::ConstantObj</a>: {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstantObj&quot;</span>;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; }</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c">SYMTYPE::BlkPtr</a>: {</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BlkPtr&quot;</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; }</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba21301438d5e1788db46a84e720e80a68">SYMTYPE::NullPtr</a>: {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;NullPtr&quot;</span>;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; }</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da">SYMTYPE::ValSym</a>: {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ValSym&quot;</span>;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; }</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad4df09c2efe5156a62b406355b9c5a12">SYMTYPE::ObjSym</a>: {</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ObjSym&quot;</span>;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7">SYMTYPE::RetSym</a>: {</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;RetSym&quot;</span>;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; }</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4">SYMTYPE::VarargSym</a>: {</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VarargSym&quot;</span>;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">default</span>: {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Invalid SYMTYPE&quot;</span>;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">SVF::ConstantObj</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00043">MemModel.h:43</a></div></div>
2983
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8cpp_source.html#l01103">1103</a> of file <a class="el" href="SymbolTableInfo_8cpp_source.html">SymbolTableInfo.cpp</a>.</p>
2984
+ <div class="fragment"><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;{</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">switch</span> (symtype) {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad7ca98768a7abe55ead61c5c3ff647e3">SYMTYPE::BlackHole</a>: {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BlackHole&quot;</span>;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; }</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">SYMTYPE::ConstantObj</a>: {</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstantObj&quot;</span>;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c">SYMTYPE::BlkPtr</a>: {</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;BlkPtr&quot;</span>;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; }</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba21301438d5e1788db46a84e720e80a68">SYMTYPE::NullPtr</a>: {</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;NullPtr&quot;</span>;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba4981e1f7cdb8b22323295da5b8b774da">SYMTYPE::ValSym</a>: {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ValSym&quot;</span>;</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; }</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42bad4df09c2efe5156a62b406355b9c5a12">SYMTYPE::ObjSym</a>: {</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ObjSym&quot;</span>;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; }</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7">SYMTYPE::RetSym</a>: {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;RetSym&quot;</span>;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4">SYMTYPE::VarargSym</a>: {</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;VarargSym&quot;</span>;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; }</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keywordflow">default</span>: {</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Invalid SYMTYPE&quot;</span>;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; }</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba63aceec1f561583962d854e7606810e5">SVF::ConstantObj</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00043">MemModel.h:43</a></div></div>
2760
2985
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba622005f7afcff31473d06cc847574dd7">SVF::RetSym</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00048">MemModel.h:48</a></div></div>
2761
2986
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42ba6e29c1da8167e6692c1b2e8d588810f4">SVF::VarargSym</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00049">MemModel.h:49</a></div></div>
2762
2987
  <div class="ttc" id="namespaceSVF_html_afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c"><div class="ttname"><a href="namespaceSVF.html#afe243912c982fde7d6beb4d046f9d42babc8fcfa5a0cd7a104f3befc9c7a9491c">SVF::BlkPtr</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00044">MemModel.h:44</a></div></div>
@@ -2924,7 +3149,7 @@ Static Private Attributes</h2></td></tr>
2924
3149
 
2925
3150
  <p>The struct type with the most fields. </p>
2926
3151
 
2927
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00443">443</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
3152
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00455">455</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2928
3153
 
2929
3154
  </div>
2930
3155
  </div>
@@ -2950,7 +3175,7 @@ Static Private Attributes</h2></td></tr>
2950
3175
 
2951
3176
  <p>The number of fields in max_struct. </p>
2952
3177
 
2953
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00446">446</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
3178
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00458">458</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
2954
3179
 
2955
3180
  </div>
2956
3181
  </div>
@@ -3180,7 +3405,7 @@ Static Private Attributes</h2></td></tr>
3180
3405
  </div><div class="memdoc">
3181
3406
  <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>
3182
3407
 
3183
- <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00440">440</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
3408
+ <p class="definition">Definition at line <a class="el" href="SymbolTableInfo_8h_source.html#l00452">452</a> of file <a class="el" href="SymbolTableInfo_8h_source.html">SymbolTableInfo.h</a>.</p>
3184
3409
 
3185
3410
  </div>
3186
3411
  </div>