svf-tools 1.0.428 → 1.0.431

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 (282) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +10 -10
  7. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
  8. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  9. package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
  10. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  11. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +11 -11
  12. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
  13. package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
  14. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
  17. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +15 -15
  18. package/SVF-doxygen/html/html/DCHG_8h_source.html +7 -7
  19. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  22. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
  23. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
  24. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  25. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  27. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +1 -1
  30. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +10 -10
  35. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  38. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/IRGraph_8h_source.html +18 -18
  41. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  43. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +18 -18
  44. package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
  45. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +58 -56
  46. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +9 -9
  51. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
  53. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  55. package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
  56. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  59. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  60. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +9 -9
  61. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
  63. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  65. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  66. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +13 -12
  68. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
  70. package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
  71. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  72. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/PCG_8cpp_source.html +5 -5
  74. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  75. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +5 -5
  76. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
  78. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +7 -7
  79. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
  80. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  81. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  82. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  83. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
  84. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +117 -27
  85. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +32 -27
  86. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  88. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  90. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  91. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
  92. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +70 -70
  94. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -34
  95. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -5
  96. package/SVF-doxygen/html/html/SVFIR_8h_source.html +10 -10
  97. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  98. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  99. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  100. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +3 -3
  101. package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -3
  102. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +12 -13
  103. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +7 -7
  104. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  105. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  106. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  107. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  108. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +62 -61
  109. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
  110. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +77 -76
  111. package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +1 -0
  112. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +135 -134
  113. package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
  114. package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
  115. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  116. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
  117. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  118. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  119. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  120. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +12 -12
  121. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  122. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -11
  123. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +75 -80
  124. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  125. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  126. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  127. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  128. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  129. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  130. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +8 -8
  132. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  135. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  136. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +15 -15
  138. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
  139. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  140. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  142. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
  143. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +47 -47
  144. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  145. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +5 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
  149. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  150. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
  151. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +11 -11
  152. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  154. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  156. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  157. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +14 -14
  158. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
  159. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +16 -16
  160. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  161. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
  165. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +21 -21
  167. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
  168. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +18 -18
  169. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -19
  170. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
  171. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
  172. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +15 -15
  173. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  174. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +5 -4
  175. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +115 -88
  176. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -13
  177. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  179. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +94 -94
  180. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +10 -10
  183. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
  184. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
  186. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  188. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +11 -11
  189. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +31 -30
  192. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  193. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  194. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
  195. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
  196. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  197. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +17 -17
  199. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +89 -89
  200. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
  204. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  205. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +36 -36
  206. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +86 -86
  207. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +41 -42
  208. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +189 -220
  209. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
  210. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
  211. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
  212. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
  214. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +16 -16
  215. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
  216. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  218. package/SVF-doxygen/html/html/functions_func_i.html +5 -8
  219. package/SVF-doxygen/html/html/functions_func_s.html +9 -8
  220. package/SVF-doxygen/html/html/functions_i.html +11 -14
  221. package/SVF-doxygen/html/html/functions_l.html +3 -3
  222. package/SVF-doxygen/html/html/functions_o.html +15 -15
  223. package/SVF-doxygen/html/html/functions_p.html +7 -7
  224. package/SVF-doxygen/html/html/functions_r.html +8 -8
  225. package/SVF-doxygen/html/html/functions_s.html +11 -10
  226. package/SVF-doxygen/html/html/functions_t.html +10 -8
  227. package/SVF-doxygen/html/html/functions_v.html +3 -3
  228. package/SVF-doxygen/html/html/globals.html +3 -0
  229. package/SVF-doxygen/html/html/globals_b.html +3 -0
  230. package/SVF-doxygen/html/html/globals_r.html +3 -0
  231. package/SVF-doxygen/html/html/globals_s.html +9 -6
  232. package/SVF-doxygen/html/html/globals_type.html +15 -0
  233. package/SVF-doxygen/html/html/globals_u.html +5 -2
  234. package/SVF-doxygen/html/html/namespaceSVF.html +40 -130
  235. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +253 -220
  236. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +20 -20
  237. package/SVF-doxygen/html/html/namespacemembers.html +0 -3
  238. package/SVF-doxygen/html/html/namespacemembers_b.html +1 -4
  239. package/SVF-doxygen/html/html/namespacemembers_func.html +8 -5
  240. package/SVF-doxygen/html/html/namespacemembers_i.html +11 -8
  241. package/SVF-doxygen/html/html/namespacemembers_r.html +1 -4
  242. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  243. package/SVF-doxygen/html/html/namespacemembers_type.html +0 -15
  244. package/SVF-doxygen/html/html/namespacemembers_u.html +0 -3
  245. package/SVF-doxygen/html/html/search/all_1.js +1 -1
  246. package/SVF-doxygen/html/html/search/all_10.js +9 -9
  247. package/SVF-doxygen/html/html/search/all_12.js +4 -4
  248. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  249. package/SVF-doxygen/html/html/search/all_14.js +7 -7
  250. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  251. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  252. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  253. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  254. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  255. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  256. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  257. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  258. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  259. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  260. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  261. package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
  262. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
  263. package/SVF-doxygen/html/html/search/typedefs_10.js +1 -1
  264. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  265. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  266. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  267. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  268. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  269. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  270. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  271. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  272. package/include/DDA/DDAVFSolver.h +3 -3
  273. package/include/MemoryModel/SymbolTableInfo.h +6 -4
  274. package/include/SVF-FE/BasicTypes.h +5 -0
  275. package/include/SVF-FE/LLVMUtil.h +13 -0
  276. package/include/Util/BasicTypes.h +0 -5
  277. package/include/Util/SVFUtil.h +0 -5
  278. package/lib/MSSA/MemRegion.cpp +4 -4
  279. package/lib/MemoryModel/PointerAnalysis.cpp +4 -4
  280. package/lib/MemoryModel/SymbolTableInfo.cpp +6 -8
  281. package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
  282. package/package.json +1 -1
@@ -471,26 +471,26 @@ Additional Inherited Members</h2></td></tr>
471
471
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
472
472
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a9ed6b91fad334605f514049a2072b538"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">SVF::DCHGraph::getOrCreateNode</a></div><div class="ttdeci">DCHNode * getOrCreateNode(const DIType *type)</div><div class="ttdoc">Creates a node from type, or returns it if it exists. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00403">DCHG.cpp:403</a></div></div>
473
473
  <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>
474
- <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
474
+ <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
475
475
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a671f379ae54eef247b5e013478eb3f0c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a671f379ae54eef247b5e013478eb3f0c">SVF::DCHGraph::handleDISubroutineType</a></div><div class="ttdeci">void handleDISubroutineType(const DISubroutineType *subroutineType)</div><div class="ttdoc">Construction helper to process DISubroutineTypes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00133">DCHG.cpp:133</a></div></div>
476
476
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae265a7f3cc7367d62013e0f15cf3d233"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">SVF::LLVMModuleSet::getModuleNum</a></div><div class="ttdeci">u32_t getModuleNum() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00093">LLVMModule.h:93</a></div></div>
477
477
  <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#l00081">SVFBasicTypes.h:81</a></div></div>
478
478
  <div class="ttc" id="classSVF_1_1Options_html_adf6c289ef9f2d0196984dd4024ea4316"><div class="ttname"><a href="classSVF_1_1Options.html#adf6c289ef9f2d0196984dd4024ea4316">SVF::Options::PrintDCHG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintDCHG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00206">Options.h:206</a></div></div>
479
479
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
480
480
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a294a2075c97e1db8003393fb472c1def"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a294a2075c97e1db8003393fb472c1def">SVF::DCHGraph::addEdge</a></div><div class="ttdeci">DCHEdge * addEdge(const DIType *t1, const DIType *t2, DCHEdge::GEdgeKind et)</div><div class="ttdoc">Creates an edge between from t1 to t2. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00421">DCHG.cpp:421</a></div></div>
481
- <div class="ttc" id="namespaceSVF_html_a090e0791e8c200104ed3ab6bab157129"><div class="ttname"><a href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">SVF::DISubroutineType</a></div><div class="ttdeci">llvm::DISubroutineType DISubroutineType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00176">BasicTypes.h:176</a></div></div>
481
+ <div class="ttc" id="namespaceSVF_html_a090e0791e8c200104ed3ab6bab157129"><div class="ttname"><a href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">SVF::DISubroutineType</a></div><div class="ttdeci">llvm::DISubroutineType DISubroutineType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00171">BasicTypes.h:171</a></div></div>
482
482
  <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00338">GenericGraph.h:338</a></div></div>
483
483
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a1a4162e68b22d53e9dca73c6780ed3e5"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a1a4162e68b22d53e9dca73c6780ed3e5">SVF::DCHGraph::handleDIDerivedType</a></div><div class="ttdeci">void handleDIDerivedType(const DIDerivedType *derivedType)</div><div class="ttdoc">Construction helper to process DIDerivedTypes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00097">DCHG.cpp:97</a></div></div>
484
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
484
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
485
485
  <div class="ttc" id="classSVF_1_1DCHEdge_html_a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb"><div class="ttname"><a href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb">SVF::DCHEdge::STD_DEF</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00038">DCHG.h:38</a></div></div>
486
486
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a5f08ed4cbba3e4b7a348d5ad77664726"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a5f08ed4cbba3e4b7a348d5ad77664726">SVF::DCHGraph::print</a></div><div class="ttdeci">void print(void)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l01131">DCHG.cpp:1131</a></div></div>
487
- <div class="ttc" id="namespaceSVF_html_a5ae98f122c64b0114df2e5861b341321"><div class="ttname"><a href="namespaceSVF.html#a5ae98f122c64b0114df2e5861b341321">SVF::DebugInfoFinder</a></div><div class="ttdeci">llvm::DebugInfoFinder DebugInfoFinder</div><div class="ttdoc">LLVM debug information. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00171">BasicTypes.h:171</a></div></div>
487
+ <div class="ttc" id="namespaceSVF_html_a5ae98f122c64b0114df2e5861b341321"><div class="ttname"><a href="namespaceSVF.html#a5ae98f122c64b0114df2e5861b341321">SVF::DebugInfoFinder</a></div><div class="ttdeci">llvm::DebugInfoFinder DebugInfoFinder</div><div class="ttdoc">LLVM debug information. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00166">BasicTypes.h:166</a></div></div>
488
488
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a86bf48776ccf53092f4cb742cf95f8eb"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a86bf48776ccf53092f4cb742cf95f8eb">SVF::DCHGraph::handleDIBasicType</a></div><div class="ttdeci">void handleDIBasicType(const DIBasicType *basicType)</div><div class="ttdoc">Construction helper to process DIBasicTypes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00022">DCHG.cpp:22</a></div></div>
489
489
  <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>
490
- <div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00173">BasicTypes.h:173</a></div></div>
490
+ <div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00168">BasicTypes.h:168</a></div></div>
491
491
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a3ce75cbe92a1fa7d34c6fca2d2ca1b0f"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a3ce75cbe92a1fa7d34c6fca2d2ca1b0f">SVF::DCHGraph::handleDICompositeType</a></div><div class="ttdeci">void handleDICompositeType(const DICompositeType *compositeType)</div><div class="ttdoc">Construction helper to process DICompositeTypes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00027">DCHG.cpp:27</a></div></div>
492
492
  <div class="ttc" id="classSVF_1_1DCHGraph_html_aa6f49dfc9e3580d3f2d8c257395eb11e"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#aa6f49dfc9e3580d3f2d8c257395eb11e">SVF::DCHGraph::extended</a></div><div class="ttdeci">bool extended</div><div class="ttdoc">Whether this CHG is an extended CHG (first-field). Set by buildCHG. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00356">DCHG.h:356</a></div></div>
493
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
493
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
494
494
  </div><!-- fragment -->
495
495
  </div>
496
496
  </div>
@@ -536,7 +536,7 @@ Additional Inherited Members</h2></td></tr>
536
536
  <div class="ttc" id="classSVF_1_1DCHNode_html_ab8a339276172b8aa0fc915e5bde0b3db"><div class="ttname"><a href="classSVF_1_1DCHNode.html#ab8a339276172b8aa0fc915e5bde0b3db">SVF::DCHNode::setVTable</a></div><div class="ttdeci">void setVTable(const GlobalValue *vtbl)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00164">DCHG.h:164</a></div></div>
537
537
  <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>
538
538
  <div class="ttc" id="classSVF_1_1DCHNode_html_a11ad6b4fc518f6307727f6b76f7f6f53"><div class="ttname"><a href="classSVF_1_1DCHNode.html#a11ad6b4fc518f6307727f6b76f7f6f53">SVF::DCHNode::getVfnVector</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; &amp; getVfnVector(unsigned n)</div><div class="ttdoc">Return the nth virtual function vector in the vtable. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00181">DCHG.h:181</a></div></div>
539
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
539
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
540
540
  </div><!-- fragment -->
541
541
  </div>
542
542
  </div>
@@ -687,7 +687,7 @@ Additional Inherited Members</h2></td></tr>
687
687
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a96c68bbb5ee5e939158ce0b67da2c61d"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a96c68bbb5ee5e939158ce0b67da2c61d">SVF::DCHGraph::getNode</a></div><div class="ttdeci">DCHNode * getNode(const DIType *type)</div><div class="ttdoc">Returns the node for type (nullptr if it doesn&amp;#39;t exist). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00424">DCHG.h:424</a></div></div>
688
688
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a58341e23c1dc2b3e7fce190ed16a8a25"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a58341e23c1dc2b3e7fce190ed16a8a25">SVF::DCHGraph::hasNode</a></div><div class="ttdeci">bool hasNode(const DIType *type)</div><div class="ttdoc">Checks if a node exists for type. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00417">DCHG.h:417</a></div></div>
689
689
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00713">DCHG.cpp:713</a></div></div>
690
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
690
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
691
691
  </div><!-- fragment -->
692
692
  </div>
693
693
  </div>
@@ -719,16 +719,16 @@ Additional Inherited Members</h2></td></tr>
719
719
 
720
720
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00958">958</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
721
721
  <div class="fragment"><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;{</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; std::stringstream ss;</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; <span class="keywordflow">if</span> (t == <span class="keyword">nullptr</span>)</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">return</span> <span class="stringliteral">&quot;void&quot;</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;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a> *bt = SVFUtil::dyn_cast&lt;DIBasicType&gt;(t))</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; ss &lt;&lt; std::string(bt-&gt;getName());</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *dt = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(t))</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; {</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordflow">if</span> (dt-&gt;getName() == <span class="stringliteral">&quot;__vtbl_ptr_type&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; ss &lt;&lt; <span class="stringliteral">&quot;(vtbl * =) __vtbl_ptr_type&quot;</span>;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; }</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_const_type)</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; ss &lt;&lt; <span class="stringliteral">&quot;const &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType());</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_volatile_type)</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; ss &lt;&lt; <span class="stringliteral">&quot;volatile &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType());</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; }</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_restrict_type)</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; {</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;restrict &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType());</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">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_atomic_type)</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;atomic &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType());</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; }</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_pointer_type)</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; ss &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType()) &lt;&lt; <span class="stringliteral">&quot; *&quot;</span>;</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">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_ptr_to_member_type)</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; ss &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType())</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(SVFUtil::dyn_cast&lt;DIType&gt;(dt-&gt;getExtraData())) &lt;&lt; <span class="stringliteral">&quot;::*&quot;</span>;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; }</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_reference_type)</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; ss &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType()) &lt;&lt; <span class="stringliteral">&quot; &amp;&quot;</span>;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_rvalue_reference_type)</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; ss &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType()) &lt;&lt; <span class="stringliteral">&quot; &amp;&amp;&quot;</span>;</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">else</span> <span class="keywordflow">if</span> (dt-&gt;getTag() == dwarf::DW_TAG_typedef)</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; ss &lt;&lt; std::string(dt-&gt;getName()) &lt;&lt; <span class="stringliteral">&quot;-&gt;&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(dt-&gt;getBaseType());</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> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *ct = SVFUtil::dyn_cast&lt;DICompositeType&gt;(t))</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="keywordflow">if</span> (ct-&gt;getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; || ct-&gt;getTag() == dwarf::DW_TAG_structure_type</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; || ct-&gt;getTag() == dwarf::DW_TAG_union_type)</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; {</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">if</span> (ct-&gt;getTag() == dwarf::DW_TAG_class_type)</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; {</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;class&quot;</span>;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct-&gt;getTag() == dwarf::DW_TAG_structure_type)</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;struct&quot;</span>;</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">else</span> <span class="keywordflow">if</span> (ct-&gt;getTag() == dwarf::DW_TAG_union_type)</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; {</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;union&quot;</span>;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; }</div><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; ss &lt;&lt; <span class="stringliteral">&quot;.&quot;</span>;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">if</span> (ct-&gt;getName() != <span class="stringliteral">&quot;&quot;</span>)</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; ss &lt;&lt; std::string(ct-&gt;getName());</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="keywordflow">else</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="comment">// Iterate over the element types.</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</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.html#a0f825e73d115173b05ca54fb8ec65003">DINodeArray</a> fields = ct-&gt;getElements();</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; fields.size(); ++i)</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; {</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="comment">// fields[i] gives a type which is DW_TAG_member, we want the member&#39;s type (getBaseType).</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">// It can also give a Subprogram type if the class just had non-virtual functions.</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">DISubprogram</a> *sp = SVFUtil::dyn_cast&lt;DISubprogram&gt;(fields[i]))</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; {</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; ss &lt;&lt; std::string(sp-&gt;getName());</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *mt = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(fields[i]))</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; {</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mt-&gt;getTag() == dwarf::DW_TAG_member &amp;&amp; <span class="stringliteral">&quot;DCHG: expected member&quot;</span>);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; ss &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(mt-&gt;getBaseType());</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; }</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">if</span> (i != fields.size() - 1)</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; ss &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; }</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;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; }</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct-&gt;getTag() == dwarf::DW_TAG_array_type)</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; ss &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(ct-&gt;getBaseType());</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <a class="code" href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">DINodeArray</a> sizes = ct-&gt;getElements();</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; sizes.size(); ++i)</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; {</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <a class="code" href="namespaceSVF.html#a99bc1228f07429855c81a720be862dc6">DISubrange</a> *sr = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a99bc1228f07429855c81a720be862dc6">DISubrange</a>&gt;(sizes[0]);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(sr != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;DCHG: non-subrange as array element?&quot;</span>);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; int64_t count = -1;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *ci = sr-&gt;getCount().dyn_cast&lt;<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *&gt;())</div><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; count = ci-&gt;getSExtValue();</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;</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; count &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; }</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct-&gt;getTag() == dwarf::DW_TAG_enumeration_type)</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; ss &lt;&lt; <span class="stringliteral">&quot;enum &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(ct-&gt;getBaseType());</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; }</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ct-&gt;getTag() == dwarf::DW_TAG_union_type)</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; {</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; }</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">DISubroutineType</a> *st = SVFUtil::dyn_cast&lt;DISubroutineType&gt;(t))</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; {</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <a class="code" href="namespaceSVF.html#a9d3ee421789884473bfacfaa9ec007cc">DITypeRefArray</a> types = st-&gt;getTypeArray();</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="comment">// Must have one element at least (the first type).</span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; ss &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(types[0]) &lt;&lt; <span class="stringliteral">&quot; fn(&quot;</span>;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (types.size() == 1)</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;void)&quot;</span>;</div><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">else</span></div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i &lt; types.size(); ++i)</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; ss &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(types[i]);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">if</span> (i + 1 != types.size())</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="comment">// There&#39;s another type.</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;, &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; }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; ss &lt;&lt; std::string(st-&gt;getName());</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">return</span> ss.str();</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a2dc488345cc3a5f37079952f638d8c2b"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">SVF::DCHGraph::diTypeToStr</a></div><div class="ttdeci">static std::string diTypeToStr(const DIType *)</div><div class="ttdoc">Returns a human-readable version of the DIType. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00958">DCHG.cpp:958</a></div></div>
722
- <div class="ttc" id="namespaceSVF_html_a9d3ee421789884473bfacfaa9ec007cc"><div class="ttname"><a href="namespaceSVF.html#a9d3ee421789884473bfacfaa9ec007cc">SVF::DITypeRefArray</a></div><div class="ttdeci">llvm::DITypeRefArray DITypeRefArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00181">BasicTypes.h:181</a></div></div>
722
+ <div class="ttc" id="namespaceSVF_html_a9d3ee421789884473bfacfaa9ec007cc"><div class="ttname"><a href="namespaceSVF.html#a9d3ee421789884473bfacfaa9ec007cc">SVF::DITypeRefArray</a></div><div class="ttdeci">llvm::DITypeRefArray DITypeRefArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00176">BasicTypes.h:176</a></div></div>
723
723
  <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>
724
- <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
724
+ <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
725
725
  <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00113">BasicTypes.h:113</a></div></div>
726
- <div class="ttc" id="namespaceSVF_html_a090e0791e8c200104ed3ab6bab157129"><div class="ttname"><a href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">SVF::DISubroutineType</a></div><div class="ttdeci">llvm::DISubroutineType DISubroutineType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00176">BasicTypes.h:176</a></div></div>
727
- <div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00180">BasicTypes.h:180</a></div></div>
728
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
729
- <div class="ttc" id="namespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00177">BasicTypes.h:177</a></div></div>
730
- <div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00173">BasicTypes.h:173</a></div></div>
731
- <div class="ttc" id="namespaceSVF_html_a99bc1228f07429855c81a720be862dc6"><div class="ttname"><a href="namespaceSVF.html#a99bc1228f07429855c81a720be862dc6">SVF::DISubrange</a></div><div class="ttdeci">llvm::DISubrange DISubrange</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00178">BasicTypes.h:178</a></div></div>
726
+ <div class="ttc" id="namespaceSVF_html_a090e0791e8c200104ed3ab6bab157129"><div class="ttname"><a href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">SVF::DISubroutineType</a></div><div class="ttdeci">llvm::DISubroutineType DISubroutineType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00171">BasicTypes.h:171</a></div></div>
727
+ <div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
728
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
729
+ <div class="ttc" id="namespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
730
+ <div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00168">BasicTypes.h:168</a></div></div>
731
+ <div class="ttc" id="namespaceSVF_html_a99bc1228f07429855c81a720be862dc6"><div class="ttname"><a href="namespaceSVF.html#a99bc1228f07429855c81a720be862dc6">SVF::DISubrange</a></div><div class="ttdeci">llvm::DISubrange DISubrange</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00173">BasicTypes.h:173</a></div></div>
732
732
  <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>
733
733
  </div><!-- fragment -->
734
734
  </div>
@@ -792,13 +792,13 @@ Additional Inherited Members</h2></td></tr>
792
792
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00265">265</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
793
793
  <div class="fragment"><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type));</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type &amp;&amp; <span class="stringliteral">&quot;DCHG::flatten: canon type of struct/class is not struct/class&quot;</span>);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.find(type) != <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.end())</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="comment">// Already done (necessary because of the recursion).</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="comment">// Create empty vector.</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[type];</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type != <span class="keyword">nullptr</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; &amp;&amp; (type-&gt;getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; || type-&gt;getTag() == dwarf::DW_TAG_structure_type)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; &amp;&amp; <span class="stringliteral">&quot;DCHG::flatten: expected a class/struct&quot;</span>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// Sort the fields from getElements. Especially a problem for classes; it&#39;s all jumbled up.</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; std::vector&lt;const DIDerivedType *&gt; fields;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">DINodeArray</a> fieldsDINA = type-&gt;getElements();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; fieldsDINA.size(); ++i)</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="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *dt = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(fieldsDINA[i]))</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// Don&#39;t care about subprograms, only member/inheritance.</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; fields.push_back(dt);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">// TODO: virtual inheritance is not handled at all!</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::sort(fields.begin(), fields.end(),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; [](<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *&amp;a, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *&amp;b) -&gt; <span class="keywordtype">bool</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; { <span class="keywordflow">return</span> a-&gt;getOffsetInBits() &lt; b-&gt;getOffsetInBits(); });</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *mt : fields)</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((mt-&gt;getTag() == dwarf::DW_TAG_member || mt-&gt;getTag() == dwarf::DW_TAG_inheritance)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; &amp;&amp; <span class="stringliteral">&quot;DCHG: expected member/inheritance&quot;</span>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">// Either we have a class, struct, array, or something not in need of flattening.</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *fieldType = mt-&gt;getBaseType();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (fieldType-&gt;getTag() == dwarf::DW_TAG_structure_type</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; || fieldType-&gt;getTag() == dwarf::DW_TAG_class_type)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#ab96874bc8f6461fe0c3eb53b7f5cedce">flatten</a>(SVFUtil::dyn_cast&lt;DICompositeType&gt;(fieldType));</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *ft : <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[fieldType])</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">// ft is already a canonical type because the &quot;root&quot; additions insert</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// canonical types.</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[type].push_back(ft);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fieldType-&gt;getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *arrayType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(fieldType);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = arrayType-&gt;getBaseType();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cbt = SVFUtil::dyn_cast&lt;DICompositeType&gt;(baseType))</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_1DCHGraph.html#ab96874bc8f6461fe0c3eb53b7f5cedce">flatten</a>(cbt);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *ft : <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[cbt])</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// ft is already a canonical type like above.</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[type].push_back(ft);</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[type].push_back(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(baseType));</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; }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[type].push_back(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(fieldType));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_ab96874bc8f6461fe0c3eb53b7f5cedce"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#ab96874bc8f6461fe0c3eb53b7f5cedce">SVF::DCHGraph::flatten</a></div><div class="ttdeci">void flatten(const DICompositeType *type)</div><div class="ttdoc">Populates fieldTypes for type and all its elements. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00265">DCHG.cpp:265</a></div></div>
794
794
  <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>
795
- <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
796
- <div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00180">BasicTypes.h:180</a></div></div>
797
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
795
+ <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
796
+ <div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
797
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
798
798
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a574ec14099f1112b394b00a79f3fdf1a"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">SVF::DCHGraph::fieldTypes</a></div><div class="ttdeci">Map&lt; const DIType *, std::vector&lt; const DIType * &gt; &gt; fieldTypes</div><div class="ttdoc">Maps types to their flattened fields&amp;#39; types. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00374">DCHG.h:374</a></div></div>
799
799
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00713">DCHG.cpp:713</a></div></div>
800
800
  <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>
801
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
801
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
802
802
  </div><!-- fragment -->
803
803
  </div>
804
804
  </div>
@@ -833,14 +833,14 @@ Additional Inherited Members</h2></td></tr>
833
833
  <div class="ttc" id="classSVF_1_1DCHGraph_html_adc7a17f70ac3fa89624ad874dbd16ff9"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">SVF::DCHGraph::containingAggs</a></div><div class="ttdeci">Map&lt; const DIType *, Set&lt; const DIType * &gt; &gt; containingAggs</div><div class="ttdoc">Maps aggregate types to all the aggregate types it transitively contains. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00376">DCHG.h:376</a></div></div>
834
834
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a8fcbea9435a77beb27ad64d5a3175b0b"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a8fcbea9435a77beb27ad64d5a3175b0b">SVF::DCHGraph::gatherAggs</a></div><div class="ttdeci">void gatherAggs(const DICompositeType *type)</div><div class="ttdoc">Populates containingAggs for type and all its elements. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00350">DCHG.cpp:350</a></div></div>
835
835
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a175ed6ad0c9b23d5617f755ab96c76c4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">SVF::DCHGraph::stripQualifiers</a></div><div class="ttdeci">static const DIType * stripQualifiers(const DIType *)</div><div class="ttdoc">Returns the DIType beneath the qualifiers. Does not strip away &quot;DW_TAG_members&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00754">DCHG.cpp:754</a></div></div>
836
- <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
836
+ <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
837
837
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
838
838
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a9d2be5aec5216cbc1d1709b41f79c44b"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">SVF::DCHGraph::isAgg</a></div><div class="ttdeci">static bool isAgg(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00342">DCHG.cpp:342</a></div></div>
839
- <div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00180">BasicTypes.h:180</a></div></div>
840
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
839
+ <div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
840
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
841
841
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00713">DCHG.cpp:713</a></div></div>
842
842
  <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>
843
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
843
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
844
844
  </div><!-- fragment -->
845
845
  </div>
846
846
  </div>
@@ -898,7 +898,7 @@ Additional Inherited Members</h2></td></tr>
898
898
  <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; <span class="comment">// We want stripped types to be canonical.</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *unstrippedT = t;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; t = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(t);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="comment">// Is there a mapping for the unstripped type? Yes - return it.</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.find(unstrippedT) != <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.end())</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[unstrippedT];</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;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="comment">// There is no mapping for unstripped type (^), is there one for the stripped</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="comment">// type? Yes - map the unstripped type to the same thing.</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">if</span> (unstrippedT != t)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.find(t) != <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.end())</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; {</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[unstrippedT] = <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[t];</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[unstrippedT];</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; }</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; <span class="comment">// Canonical type for t is not cached, find one for it.</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *canonType : <a class="code" href="classSVF_1_1DCHGraph.html#a10225f56b21eb7f0870fdc433de3c393">canonicalTypes</a>)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#acb76ab20da1bfbec00f63d08e48cbddd">teq</a>(t, canonType))</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="comment">// Found a canonical type.</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[t] = canonType;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[t];</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; }</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="comment">// No canonical type found, so t will be a canonical type.</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; canonicalTypes.insert(t);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>.insert({t, t});</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">canonicalTypeMap</a>[t];</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a498a18fe8702251b6f2a4e6379e5cbb1"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a498a18fe8702251b6f2a4e6379e5cbb1">SVF::DCHGraph::canonicalTypeMap</a></div><div class="ttdeci">Map&lt; const DIType *, const DIType * &gt; canonicalTypeMap</div><div class="ttdoc">Maps types to their canonical type (many-to-one). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00370">DCHG.h:370</a></div></div>
899
899
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a175ed6ad0c9b23d5617f755ab96c76c4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">SVF::DCHGraph::stripQualifiers</a></div><div class="ttdeci">static const DIType * stripQualifiers(const DIType *)</div><div class="ttdoc">Returns the DIType beneath the qualifiers. Does not strip away &quot;DW_TAG_members&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00754">DCHG.cpp:754</a></div></div>
900
900
  <div class="ttc" id="classSVF_1_1DCHGraph_html_acb76ab20da1bfbec00f63d08e48cbddd"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#acb76ab20da1bfbec00f63d08e48cbddd">SVF::DCHGraph::teq</a></div><div class="ttdeci">static bool teq(const DIType *t1, const DIType *t2)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00819">DCHG.cpp:819</a></div></div>
901
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
901
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
902
902
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a10225f56b21eb7f0870fdc433de3c393"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a10225f56b21eb7f0870fdc433de3c393">SVF::DCHGraph::canonicalTypes</a></div><div class="ttdeci">Set&lt; const DIType * &gt; canonicalTypes</div><div class="ttdoc">Set of all possible canonical types (i.e. values of canonicalTypeMap). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00372">DCHG.h:372</a></div></div>
903
903
  </div><!-- fragment -->
904
904
  </div>
@@ -934,7 +934,7 @@ Additional Inherited Members</h2></td></tr>
934
934
  <div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a0cd5347bc8043d4306e66a4a96005ace"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">SVF::cppUtil::ctir::derefMDName</a></div><div class="ttdeci">const std::string derefMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00113">CPPUtil.h:113</a></div></div>
935
935
  <div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00122">BasicTypes.h:122</a></div></div>
936
936
  <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>
937
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
937
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
938
938
  </div><!-- fragment -->
939
939
  </div>
940
940
  </div>
@@ -1011,7 +1011,7 @@ Additional Inherited Members</h2></td></tr>
1011
1011
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a294e7a04aff9cef87c1008e91a620155"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a294e7a04aff9cef87c1008e91a620155">SVF::DCHGraph::vtblCHAMap</a></div><div class="ttdeci">Map&lt; const DIType *, VTableSet &gt; vtblCHAMap</div><div class="ttdoc">Maps types to a set with their vtable and all their children&amp;#39;s. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00366">DCHG.h:366</a></div></div>
1012
1012
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
1013
1013
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00387">GenericGraph.h:387</a></div></div>
1014
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
1014
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
1015
1015
  </div><!-- fragment -->
1016
1016
  </div>
1017
1017
  </div>
@@ -1053,7 +1053,7 @@ Additional Inherited Members</h2></td></tr>
1053
1053
 
1054
1054
  <p class="definition">Definition at line <a class="el" href="DCHG_8h_source.html#l00291">291</a> of file <a class="el" href="DCHG_8h_source.html">DCHG.h</a>.</p>
1055
1055
  <div class="fragment"><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; base = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(base);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (base == <span class="keyword">nullptr</span>)</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="comment">// Conservative; the base object is untyped, sadly.</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="comment">// For TBHC this is conservative because the union type is lower in the DCHG</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">// than its fields. TODO: make more precise.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (base-&gt;getTag() == dwarf::DW_TAG_union_type)</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">return</span> base;</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;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (base-&gt;getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cbase = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(base);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cbase &amp;&amp; <span class="stringliteral">&quot;DCHG: bad DIComposite case&quot;</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> cbase-&gt;getBaseType();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (!(base-&gt;getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; || base-&gt;getTag() == dwarf::DW_TAG_structure_type))</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.find(base) != <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>.end() &amp;&amp; <span class="stringliteral">&quot;DCHG: base not flattened!&quot;</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; std::vector&lt;const DIType *&gt; &amp;fields = <a class="code" href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">fieldTypes</a>[base];</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(fields.size() &gt; idx &amp;&amp; <span class="stringliteral">&quot;DCHG: idx into struct larger than # fields!&quot;</span>);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(fields[idx]);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</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>
1056
- <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
1056
+ <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
1057
1057
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a574ec14099f1112b394b00a79f3fdf1a"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a574ec14099f1112b394b00a79f3fdf1a">SVF::DCHGraph::fieldTypes</a></div><div class="ttdeci">Map&lt; const DIType *, std::vector&lt; const DIType * &gt; &gt; fieldTypes</div><div class="ttdoc">Maps types to their flattened fields&amp;#39; types. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00374">DCHG.h:374</a></div></div>
1058
1058
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00713">DCHG.cpp:713</a></div></div>
1059
1059
  <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>
@@ -1246,13 +1246,13 @@ Additional Inherited Members</h2></td></tr>
1246
1246
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a96c68bbb5ee5e939158ce0b67da2c61d"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a96c68bbb5ee5e939158ce0b67da2c61d">SVF::DCHGraph::getNode</a></div><div class="ttdeci">DCHNode * getNode(const DIType *type)</div><div class="ttdoc">Returns the node for type (nullptr if it doesn&amp;#39;t exist). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00424">DCHG.h:424</a></div></div>
1247
1247
  <div class="ttc" id="namespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
1248
1248
  <div class="ttc" id="classSVF_1_1DCHNode_html"><div class="ttname"><a href="classSVF_1_1DCHNode.html">SVF::DCHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00063">DCHG.h:63</a></div></div>
1249
- <div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00272">BasicTypes.h:272</a></div></div>
1249
+ <div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00267">BasicTypes.h:267</a></div></div>
1250
1250
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a58341e23c1dc2b3e7fce190ed16a8a25"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a58341e23c1dc2b3e7fce190ed16a8a25">SVF::DCHGraph::hasNode</a></div><div class="ttdeci">bool hasNode(const DIType *type)</div><div class="ttdoc">Checks if a node exists for type. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00417">DCHG.h:417</a></div></div>
1251
1251
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a1007c092efaeae41002efd91b803a7f6"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &amp;name)</div></div>
1252
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4f457db1cfa0d4f94762a306c0ac3757"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757">SVF::SVFUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(StringRef name)</div><div class="ttdoc">Get the corresponding Function based on its name. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00227">SVFUtil.h:227</a></div></div>
1252
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4f457db1cfa0d4f94762a306c0ac3757"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757">SVF::SVFUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(StringRef name)</div><div class="ttdoc">Get the corresponding Function based on its name. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00222">SVFUtil.h:222</a></div></div>
1253
1253
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a0a67c31dcc44784b09dca54b4b7c624a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">SVF::cppUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00544">CPPUtil.cpp:544</a></div></div>
1254
- <div class="ttc" id="classSVF_1_1CallSite_html_ad0040f4b7953b509059223d1d52c203f"><div class="ttname"><a href="classSVF_1_1CallSite.html#ad0040f4b7953b509059223d1d52c203f">SVF::CallSite::getFunctionType</a></div><div class="ttdeci">FunctionType * getFunctionType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00279">BasicTypes.h:279</a></div></div>
1255
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
1254
+ <div class="ttc" id="classSVF_1_1CallSite_html_ad0040f4b7953b509059223d1d52c203f"><div class="ttname"><a href="classSVF_1_1CallSite.html#ad0040f4b7953b509059223d1d52c203f">SVF::CallSite::getFunctionType</a></div><div class="ttdeci">FunctionType * getFunctionType() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00274">BasicTypes.h:274</a></div></div>
1255
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
1256
1256
  </div><!-- fragment -->
1257
1257
  </div>
1258
1258
  </div>
@@ -1319,9 +1319,9 @@ Additional Inherited Members</h2></td></tr>
1319
1319
  <div class="ttc" id="classSVF_1_1DCHGraph_html_ab96874bc8f6461fe0c3eb53b7f5cedce"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#ab96874bc8f6461fe0c3eb53b7f5cedce">SVF::DCHGraph::flatten</a></div><div class="ttdeci">void flatten(const DICompositeType *type)</div><div class="ttdoc">Populates fieldTypes for type and all its elements. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00265">DCHG.cpp:265</a></div></div>
1320
1320
  <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>
1321
1321
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a294a2075c97e1db8003393fb472c1def"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a294a2075c97e1db8003393fb472c1def">SVF::DCHGraph::addEdge</a></div><div class="ttdeci">DCHEdge * addEdge(const DIType *t1, const DIType *t2, DCHEdge::GEdgeKind et)</div><div class="ttdoc">Creates an edge between from t1 to t2. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00421">DCHG.cpp:421</a></div></div>
1322
- <div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00180">BasicTypes.h:180</a></div></div>
1323
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
1324
- <div class="ttc" id="namespaceSVF_html_a758f3bee97ed46a719d64a2d4f2bc62d"><div class="ttname"><a href="namespaceSVF.html#a758f3bee97ed46a719d64a2d4f2bc62d">SVF::DINode</a></div><div class="ttdeci">llvm::DINode DINode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
1322
+ <div class="ttc" id="namespaceSVF_html_a0f825e73d115173b05ca54fb8ec65003"><div class="ttname"><a href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">SVF::DINodeArray</a></div><div class="ttdeci">llvm::DINodeArray DINodeArray</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
1323
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
1324
+ <div class="ttc" id="namespaceSVF_html_a758f3bee97ed46a719d64a2d4f2bc62d"><div class="ttname"><a href="namespaceSVF.html#a758f3bee97ed46a719d64a2d4f2bc62d">SVF::DINode</a></div><div class="ttdeci">llvm::DINode DINode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
1325
1325
  <div class="ttc" id="classSVF_1_1DCHEdge_html_a9ab4cd83d9ee475d3d8445cd91839726a3b49b95b713f585b717810dce5ac6564"><div class="ttname"><a href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3b49b95b713f585b717810dce5ac6564">SVF::DCHEdge::FIRST_FIELD</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00037">DCHG.h:37</a></div></div>
1326
1326
  <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>
1327
1327
  <div class="ttc" id="classSVF_1_1DCHGraph_html_aa6f49dfc9e3580d3f2d8c257395eb11e"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#aa6f49dfc9e3580d3f2d8c257395eb11e">SVF::DCHGraph::extended</a></div><div class="ttdeci">bool extended</div><div class="ttdoc">Whether this CHG is an extended CHG (first-field). Set by buildCHG. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00356">DCHG.h:356</a></div></div>
@@ -1427,10 +1427,10 @@ Additional Inherited Members</h2></td></tr>
1427
1427
  <div class="fragment"><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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(typedefType &amp;&amp; typedefType-&gt;getTag() == dwarf::DW_TAG_typedef);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// Need to gather them in a set first because we don&#39;t know the base type till</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// we get to the bottom of the (potentially many) typedefs.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; std::vector&lt;const DIDerivedType *&gt; typedefs;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Check for nullptr because you can typedef void.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">while</span> (typedefType != <span class="keyword">nullptr</span> &amp;&amp; typedefType-&gt;getTag() == dwarf::DW_TAG_typedef)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *typedefDerivedType = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a>&gt;(typedefType);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// The typedef itself.</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; typedefs.push_back(typedefDerivedType);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// Next in the typedef line.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; typedefType = typedefDerivedType-&gt;getBaseType();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = typedefType;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *baseTypeNode = <a class="code" href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">getOrCreateNode</a>(baseType);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *tdef : typedefs)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="comment">// Base type needs to hold its typedefs.</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; baseTypeNode-&gt;<a class="code" href="classSVF_1_1DCHNode.html#a9d1016e3da3462664198b1125dfc8f6e">addTypedef</a>(tdef);</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;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a9ed6b91fad334605f514049a2072b538"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">SVF::DCHGraph::getOrCreateNode</a></div><div class="ttdeci">DCHNode * getOrCreateNode(const DIType *type)</div><div class="ttdoc">Creates a node from type, or returns it if it exists. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00403">DCHG.cpp:403</a></div></div>
1428
1428
  <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>
1429
1429
  <div class="ttc" id="classSVF_1_1DCHNode_html_a9d1016e3da3462664198b1125dfc8f6e"><div class="ttname"><a href="classSVF_1_1DCHNode.html#a9d1016e3da3462664198b1125dfc8f6e">SVF::DCHNode::addTypedef</a></div><div class="ttdeci">void addTypedef(const DIDerivedType *diTypedef)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00154">DCHG.h:154</a></div></div>
1430
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
1430
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
1431
1431
  <div class="ttc" id="classSVF_1_1DCHNode_html"><div class="ttname"><a href="classSVF_1_1DCHNode.html">SVF::DCHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00063">DCHG.h:63</a></div></div>
1432
1432
  <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>
1433
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
1433
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
1434
1434
  </div><!-- fragment -->
1435
1435
  </div>
1436
1436
  </div>
@@ -1638,11 +1638,11 @@ Additional Inherited Members</h2></td></tr>
1638
1638
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00677">677</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
1639
1639
  <div class="fragment"><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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(f &amp;&amp; b &amp;&amp; <span class="stringliteral">&quot;DCHG::isFieldOf: given nullptr!&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; f = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(f);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; b = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(b);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">if</span> (f == b) <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <span class="keywordflow">if</span> (b-&gt;getTag() == dwarf::DW_TAG_array_type || b-&gt;getTag() == dwarf::DW_TAG_pointer_type)</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *arrayType = SVFUtil::dyn_cast&lt;DICompositeType&gt;(b))</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; baseType = arrayType-&gt;getBaseType();</div><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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *ptrType = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(b))</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; baseType = ptrType-&gt;getBaseType();</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(baseType &amp;&amp; <span class="stringliteral">&quot;DCHG::isFieldOf: baseType is neither DIComposite nor DIDerived!&quot;</span>);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; baseType = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(baseType);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">return</span> f == baseType || (baseType != <span class="keyword">nullptr</span> &amp;&amp; <a class="code" href="classSVF_1_1DCHGraph.html#af0534356b4a8c68507e1237f1d7a8c11">isFieldOf</a>(f, baseType));</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (b-&gt;getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; || b-&gt;getTag() == dwarf::DW_TAG_structure_type)</div><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="keyword">const</span> std::vector&lt;const DIType *&gt; &amp;fields = <a class="code" href="classSVF_1_1DCHGraph.html#ae9a0007299178912e2568dc7158d6824">getFieldTypes</a>(b);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">return</span> std::find(fields.begin(), fields.end(), f) != fields.end();</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_ae9a0007299178912e2568dc7158d6824"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#ae9a0007299178912e2568dc7158d6824">SVF::DCHGraph::getFieldTypes</a></div><div class="ttdeci">const std::vector&lt; const DIType * &gt; &amp; getFieldTypes(const DIType *base)</div><div class="ttdoc">Returns a vector of the types of all fields in base. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00327">DCHG.h:327</a></div></div>
1640
1640
  <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>
1641
- <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
1642
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
1641
+ <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
1642
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
1643
1643
  <div class="ttc" id="classSVF_1_1DCHGraph_html_af0534356b4a8c68507e1237f1d7a8c11"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#af0534356b4a8c68507e1237f1d7a8c11">SVF::DCHGraph::isFieldOf</a></div><div class="ttdeci">virtual bool isFieldOf(const DIType *f, const DIType *b)</div><div class="ttdoc">Returns true if f is a field of b (fields from getFieldTypes). </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00677">DCHG.cpp:677</a></div></div>
1644
1644
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00713">DCHG.cpp:713</a></div></div>
1645
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
1645
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
1646
1646
  </div><!-- fragment -->
1647
1647
  </div>
1648
1648
  </div>
@@ -1717,7 +1717,7 @@ Additional Inherited Members</h2></td></tr>
1717
1717
  <div class="ttc" id="classSVF_1_1DCHEdge_html_a9ab4cd83d9ee475d3d8445cd91839726a9c05805c60fe04033bd9815968059e90"><div class="ttname"><a href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a9c05805c60fe04033bd9815968059e90">SVF::DCHEdge::INHERITANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00035">DCHG.h:35</a></div></div>
1718
1718
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
1719
1719
  <div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00049">CPPUtil.h:49</a></div></div>
1720
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
1720
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
1721
1721
  <div class="ttc" id="classSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00178">GenericGraph.h:178</a></div></div>
1722
1722
  <div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00048">CPPUtil.h:48</a></div></div>
1723
1723
  <div class="ttc" id="classSVF_1_1DCHEdge_html_a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb"><div class="ttname"><a href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb">SVF::DCHEdge::STD_DEF</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00038">DCHG.h:38</a></div></div>
@@ -1759,7 +1759,7 @@ Additional Inherited Members</h2></td></tr>
1759
1759
 
1760
1760
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00807">807</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
1761
1761
  <div class="fragment"><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;{</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; t = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(t);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">if</span> (t-&gt;getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; {</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *at = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(t);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a6c276e661e5e63c1c84387f84c8a62e4">stripArray</a>(at-&gt;getBaseType());</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span> t;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a175ed6ad0c9b23d5617f755ab96c76c4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">SVF::DCHGraph::stripQualifiers</a></div><div class="ttdeci">static const DIType * stripQualifiers(const DIType *)</div><div class="ttdoc">Returns the DIType beneath the qualifiers. Does not strip away &quot;DW_TAG_members&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00754">DCHG.cpp:754</a></div></div>
1762
- <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
1762
+ <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
1763
1763
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a6c276e661e5e63c1c84387f84c8a62e4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a6c276e661e5e63c1c84387f84c8a62e4">SVF::DCHGraph::stripArray</a></div><div class="ttdeci">static const DIType * stripArray(const DIType *)</div><div class="ttdoc">Returns the DIType beneath all qualifiers and arrays. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00807">DCHG.cpp:807</a></div></div>
1764
1764
  <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>
1765
1765
  </div><!-- fragment -->
@@ -1793,7 +1793,7 @@ Additional Inherited Members</h2></td></tr>
1793
1793
 
1794
1794
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00754">754</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
1795
1795
  <div class="fragment"><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">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="comment">// nullptr means void.</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">if</span> (t == <span class="keyword">nullptr</span></div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; || SVFUtil::isa&lt;DIBasicType&gt;(t)</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; || SVFUtil::isa&lt;DISubroutineType&gt;(t))</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; <span class="keywordflow">break</span>;</div><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;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordtype">unsigned</span> tag = t-&gt;getTag();</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="comment">// Verbose for clarity.</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_const_type</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; || tag == dwarf::DW_TAG_atomic_type</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; || tag == dwarf::DW_TAG_volatile_type</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; || tag == dwarf::DW_TAG_restrict_type</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; || tag == dwarf::DW_TAG_typedef)</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="comment">// Qualifier - get underlying type.</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *dt = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a>&gt;(t);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(t &amp;&amp; <span class="stringliteral">&quot;DCHG: expected DerivedType&quot;</span>);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; t = dt-&gt;getBaseType();</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; }</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_array_type</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; || tag == dwarf::DW_TAG_class_type</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; || tag == dwarf::DW_TAG_structure_type</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; || tag == dwarf::DW_TAG_union_type</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; || tag == dwarf::DW_TAG_enumeration_type</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; || tag == dwarf::DW_TAG_member</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; || tag == dwarf::DW_TAG_pointer_type</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; || tag == dwarf::DW_TAG_ptr_to_member_type</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; || tag == dwarf::DW_TAG_reference_type</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; || tag == dwarf::DW_TAG_rvalue_reference_type)</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; <span class="comment">// Hit a non-qualifier.</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( tag == dwarf::DW_TAG_inheritance</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; || tag == dwarf::DW_TAG_friend)</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; {</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;DCHG: unexpected tag when stripping qualifiers&quot;</span>);</div><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; <span class="keywordflow">else</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;DCHG: unhandled tag when stripping qualifiers&quot;</span>);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">return</span> t;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</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>
1796
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
1796
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
1797
1797
  <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>
1798
1798
  </div><!-- fragment -->
1799
1799
  </div>
@@ -1836,12 +1836,12 @@ Additional Inherited Members</h2></td></tr>
1836
1836
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00819">819</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
1837
1837
  <div class="fragment"><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;{</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; t1 = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(t1);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; t2 = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(t2);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="keywordflow">if</span> (t1 == t2)</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; {</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="comment">// Trivial case. Handles SubRoutineTypes too.</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div><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> (t1 == <span class="keyword">nullptr</span> || t2 == <span class="keyword">nullptr</span>)</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="comment">// Since t1 != t2 and one of them is null, it is</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="comment">// impossible for them to be equal.</span></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="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="comment">// Check if we need base type comparisons.</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DIBasicType&gt;(t1) &amp;&amp; SVFUtil::isa&lt;DIBasicType&gt;(t2))</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a> *b1 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a>&gt;(t1);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a> *b2 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a>&gt;(t2);</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; <span class="keywordtype">unsigned</span> enc1 = b1-&gt;getEncoding();</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordtype">unsigned</span> enc2 = b2-&gt;getEncoding();</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordtype">bool</span> okayEnc = ((enc1 == dwarf::DW_ATE_signed || enc1 == dwarf::DW_ATE_unsigned || enc1 == dwarf::DW_ATE_boolean)</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; &amp;&amp; (enc2 == dwarf::DW_ATE_signed || enc2 == dwarf::DW_ATE_unsigned || enc2 == dwarf::DW_ATE_boolean))</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; (enc1 == dwarf::DW_ATE_float &amp;&amp; enc2 == dwarf::DW_ATE_float)</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; ((enc1 == dwarf::DW_ATE_signed_char || enc1 == dwarf::DW_ATE_unsigned_char)</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; &amp;&amp;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; (enc2 == dwarf::DW_ATE_signed_char || enc2 == dwarf::DW_ATE_unsigned_char));</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span> (!okayEnc) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="comment">// Now we have split integers, floats, and chars, ignoring signedness.</span></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; <span class="keywordflow">return</span> t1-&gt;getSizeInBits() == t2-&gt;getSizeInBits()</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; &amp;&amp; t1-&gt;getAlignInBits() == t2-&gt;getAlignInBits();</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;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">// Check, do we need to compare base types?</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="comment">// This makes pointers, references, and arrays equivalent.</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="comment">// Will handle member types.</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">if</span> ((SVFUtil::isa&lt;DIDerivedType&gt;(t1) || t1-&gt;getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; &amp;&amp; (SVFUtil::isa&lt;DIDerivedType&gt;(t2) || t2-&gt;getTag() == dwarf::DW_TAG_array_type))</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; {</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#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *base1, *base2;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="comment">// Set base1.</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *d1 = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(t1))</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; base1 = d1-&gt;getBaseType();</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">else</span></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="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *c1 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(t1);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(c1 &amp;&amp; <span class="stringliteral">&quot;teq: bad cast for array type&quot;</span>);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; base1 = c1-&gt;getBaseType();</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; }</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; <span class="comment">// Set base2.</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *d2 = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(t2))</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; base2 = d2-&gt;getBaseType();</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; <span class="keywordflow">else</span></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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *c2 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(t2);</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(c2 &amp;&amp; <span class="stringliteral">&quot;teq: bad cast for array type&quot;</span>);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; base2 = c2-&gt;getBaseType();</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="comment">// For ptr-to-member, there is some imprecision (but soundness) in</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="comment">// that we don&#39;t check the class type.</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#acb76ab20da1bfbec00f63d08e48cbddd">teq</a>(base1, base2);</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;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;DICompositeType&gt;(t1) &amp;&amp; SVFUtil::isa&lt;DICompositeType&gt;(t2))</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *ct1 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(t1);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *ct2 = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(t2);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span> (ct1-&gt;getTag() != ct2-&gt;getTag()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="comment">// Treat all enums the same.</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">if</span> (ct1-&gt;getTag() == dwarf::DW_TAG_enumeration_type)</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; {</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="comment">// C++ classes? Check mangled name.</span></div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">if</span> (ct1-&gt;getTag() == dwarf::DW_TAG_class_type)</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">return</span> ct1-&gt;getIdentifier() == ct2-&gt;getIdentifier();</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// Either union or struct, simply test all fields are equal.</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// Seems like it is enough to check it was defined in the same place.</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="comment">// The elements sometimes differ but are referring to the same fields.</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">return</span> ct1-&gt;getName() == ct2-&gt;getName()</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; &amp;&amp; ct1-&gt;getFile() == ct2-&gt;getFile()</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; &amp;&amp; ct1-&gt;getLine() == ct2-&gt;getLine();</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="comment">// They were not equal base types (discounting signedness), nor were they</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="comment">// &quot;equal&quot; pointers/references/arrays, nor were they the structurally equivalent,</span></div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="comment">// nor were they completely equal.</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a175ed6ad0c9b23d5617f755ab96c76c4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">SVF::DCHGraph::stripQualifiers</a></div><div class="ttdeci">static const DIType * stripQualifiers(const DIType *)</div><div class="ttdoc">Returns the DIType beneath the qualifiers. Does not strip away &quot;DW_TAG_members&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00754">DCHG.cpp:754</a></div></div>
1838
1838
  <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>
1839
- <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00174">BasicTypes.h:174</a></div></div>
1840
- <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
1839
+ <div class="ttc" id="namespaceSVF_html_aded9b991c77acc5284ccead0739e84f1"><div class="ttname"><a href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">SVF::DICompositeType</a></div><div class="ttdeci">llvm::DICompositeType DICompositeType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00169">BasicTypes.h:169</a></div></div>
1840
+ <div class="ttc" id="namespaceSVF_html_a852e75c562139237fcc754c7461533e6"><div class="ttname"><a href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">SVF::DIDerivedType</a></div><div class="ttdeci">llvm::DIDerivedType DIDerivedType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00170">BasicTypes.h:170</a></div></div>
1841
1841
  <div class="ttc" id="classSVF_1_1DCHGraph_html_acb76ab20da1bfbec00f63d08e48cbddd"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#acb76ab20da1bfbec00f63d08e48cbddd">SVF::DCHGraph::teq</a></div><div class="ttdeci">static bool teq(const DIType *t1, const DIType *t2)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00819">DCHG.cpp:819</a></div></div>
1842
- <div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00173">BasicTypes.h:173</a></div></div>
1842
+ <div class="ttc" id="namespaceSVF_html_ada0513be7e25325325ccc9183aeca278"><div class="ttname"><a href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">SVF::DIBasicType</a></div><div class="ttdeci">llvm::DIBasicType DIBasicType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00168">BasicTypes.h:168</a></div></div>
1843
1843
  <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>
1844
- <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00172">BasicTypes.h:172</a></div></div>
1844
+ <div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00167">BasicTypes.h:167</a></div></div>
1845
1845
  </div><!-- fragment -->
1846
1846
  </div>
1847
1847
  </div>