svf-tools 1.0.310 → 1.0.311

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 (316) hide show
  1. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +6 -6
  5. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  7. package/SVF-doxygen/html/html/Andersen_8h_source.html +8 -8
  8. package/SVF-doxygen/html/html/CHG_8cpp.html +1 -1
  9. package/SVF-doxygen/html/html/CHG_8cpp_source.html +9 -9
  10. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  11. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
  12. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  14. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +10 -10
  15. package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
  17. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +4 -4
  18. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +11 -11
  19. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  20. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  25. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
  28. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +8 -8
  29. package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +8 -8
  31. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  36. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +9 -9
  37. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +4 -4
  39. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +82 -81
  40. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  41. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  45. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
  46. package/SVF-doxygen/html/html/ICFG_8h_source.html +6 -6
  47. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  48. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  50. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  51. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +4 -4
  52. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
  55. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  56. package/SVF-doxygen/html/html/MHP_8cpp_source.html +13 -13
  57. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  58. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  59. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  62. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  63. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/MemModel_8cpp_source.html +1 -1
  65. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +11 -11
  66. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  67. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -1
  70. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +15 -15
  71. package/SVF-doxygen/html/html/PAGBuilder_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/PAGEdge_8h_source.html +2 -2
  73. package/SVF-doxygen/html/html/PAGNode_8h_source.html +6 -6
  74. package/SVF-doxygen/html/html/PAG_8cpp_source.html +27 -27
  75. package/SVF-doxygen/html/html/PAG_8h_source.html +17 -17
  76. package/SVF-doxygen/html/html/PCG_8cpp_source.html +8 -8
  77. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +8 -8
  79. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  80. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -8
  81. package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
  82. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  84. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +34 -33
  85. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +7 -7
  86. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +11 -11
  87. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +66 -66
  88. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
  89. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
  90. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  91. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  92. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +10 -10
  94. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
  95. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +5 -5
  96. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +9 -9
  97. package/SVF-doxygen/html/html/SVFG_8h_source.html +7 -7
  98. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/html/SVFModule_8h.html +3 -0
  100. package/SVF-doxygen/html/html/SVFModule_8h_source.html +53 -46
  101. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +7 -7
  103. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  104. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  105. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  106. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  107. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +11 -11
  108. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +16 -16
  109. package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
  110. package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
  111. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  112. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  113. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  114. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +4 -4
  115. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  116. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  117. package/SVF-doxygen/html/html/VFG_8cpp_source.html +6 -6
  118. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  119. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  120. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +10 -10
  121. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  122. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  131. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +29 -29
  132. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
  135. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +15 -15
  137. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +69 -68
  141. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +25 -25
  144. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjPN.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjPN.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjPN.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
  153. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +15 -15
  154. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
  155. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +9 -9
  156. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +20 -20
  159. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  160. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  161. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
  162. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1DummyObjPN.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1DummyValPN.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +8 -8
  166. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +6 -6
  168. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +38 -38
  169. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +20 -20
  170. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +30 -30
  171. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +5 -5
  172. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +47 -47
  179. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +58 -57
  180. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +13 -13
  186. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  187. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  188. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  189. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  191. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +17 -17
  197. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1LocObjTypeInfo.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1LocSymTableInfo.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
  203. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +15 -15
  205. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +17 -17
  206. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
  209. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -3
  210. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  211. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +21 -21
  212. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  213. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
  214. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +3 -3
  215. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +2 -2
  216. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +33 -33
  217. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +21 -21
  218. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  219. package/SVF-doxygen/html/html/classSVF_1_1PAGEdge.html +5 -5
  220. package/SVF-doxygen/html/html/classSVF_1_1PAGNode.html +10 -10
  221. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +15 -15
  222. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +16 -16
  224. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +4 -4
  225. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  226. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +6 -6
  227. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +5 -5
  228. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +10 -10
  229. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +39 -38
  230. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +153 -116
  231. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +11 -11
  232. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
  233. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  237. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
  238. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  239. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +35 -35
  240. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +7 -7
  241. package/SVF-doxygen/html/html/classSVF_1_1SVFModule-members.html +1 -0
  242. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +110 -77
  243. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
  244. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +15 -15
  245. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +3 -3
  246. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +7 -7
  247. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  248. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +66 -65
  251. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +28 -28
  252. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  255. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  256. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
  257. package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +14 -14
  261. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +31 -31
  265. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
  266. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +3 -3
  267. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +5 -5
  268. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  269. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  270. package/SVF-doxygen/html/html/functions_0x7e.html +3 -0
  271. package/SVF-doxygen/html/html/functions_c.html +27 -26
  272. package/SVF-doxygen/html/html/functions_func_0x7e.html +3 -0
  273. package/SVF-doxygen/html/html/functions_func_c.html +11 -10
  274. package/SVF-doxygen/html/html/functions_i.html +3 -3
  275. package/SVF-doxygen/html/html/functions_r.html +1 -1
  276. package/SVF-doxygen/html/html/functions_s.html +12 -12
  277. package/SVF-doxygen/html/html/functions_u.html +3 -3
  278. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  279. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  280. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  281. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  282. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  283. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  284. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  285. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  286. package/SVF-doxygen/html/html/search/all_14.js +2 -2
  287. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  288. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  289. package/SVF-doxygen/html/html/search/all_1b.js +1 -0
  290. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  291. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  292. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  293. package/SVF-doxygen/html/html/search/functions_16.js +1 -0
  294. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  295. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  296. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  297. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  298. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  299. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html +17 -17
  300. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  301. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +1 -1
  302. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +14 -14
  303. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +20 -20
  304. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +16 -16
  305. package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -5
  306. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  307. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  308. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  309. package/include/Graphs/GenericGraph.h +5 -8
  310. package/include/MemoryModel/PersistentPointsToCache.h +13 -7
  311. package/include/MemoryModel/PointerAnalysisImpl.h +1 -0
  312. package/include/Util/SVFModule.h +16 -0
  313. package/lib/Graphs/PAG.cpp +3 -10
  314. package/lib/SVF-FE/SymbolTableInfo.cpp +3 -0
  315. package/lib/Util/Options.cpp +2 -2
  316. package/package.json +1 -1
@@ -434,8 +434,8 @@ Additional Inherited Members</h2></td></tr>
434
434
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00421">421</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
435
435
  <div class="fragment"><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;{</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *src = <a class="code" href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">getOrCreateNode</a>(t1);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *dst = <a class="code" href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">getOrCreateNode</a>(t2);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classSVF_1_1DCHEdge.html">DCHEdge</a> *edge = <a class="code" href="classSVF_1_1DCHGraph.html#a74b2e5787f65cf3e3b4a03ebec806b91">hasEdge</a>(t1, t2, et);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (edge == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="comment">// Create a new edge.</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1DCHEdge.html">DCHEdge</a>(src, dst, et);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae74283fbc788665296a69e56f334557b">addOutgoingEdge</a>(edge);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a93d217b0c9fd8008a2989ca2b4f3fbfb">addIncomingEdge</a>(edge);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</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>
436
436
  <div class="ttc" id="classSVF_1_1DCHEdge_html"><div class="ttname"><a href="classSVF_1_1DCHEdge.html">SVF::DCHEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00030">DCHG.h:30</a></div></div>
437
- <div class="ttc" id="classSVF_1_1GenericNode_html_ae74283fbc788665296a69e56f334557b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae74283fbc788665296a69e56f334557b">SVF::GenericNode::addOutgoingEdge</a></div><div class="ttdeci">bool addOutgoingEdge(EdgeType *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00278">GenericGraph.h:278</a></div></div>
438
- <div class="ttc" id="classSVF_1_1GenericNode_html_a93d217b0c9fd8008a2989ca2b4f3fbfb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a93d217b0c9fd8008a2989ca2b4f3fbfb">SVF::GenericNode::addIncomingEdge</a></div><div class="ttdeci">bool addIncomingEdge(EdgeType *inEdge)</div><div class="ttdoc">Add incoming and outgoing edges. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00274">GenericGraph.h:274</a></div></div>
437
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ae74283fbc788665296a69e56f334557b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae74283fbc788665296a69e56f334557b">SVF::GenericNode::addOutgoingEdge</a></div><div class="ttdeci">bool addOutgoingEdge(EdgeType *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00279">GenericGraph.h:279</a></div></div>
438
+ <div class="ttc" id="classSVF_1_1GenericNode_html_a93d217b0c9fd8008a2989ca2b4f3fbfb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a93d217b0c9fd8008a2989ca2b4f3fbfb">SVF::GenericNode::addIncomingEdge</a></div><div class="ttdeci">bool addIncomingEdge(EdgeType *inEdge)</div><div class="ttdoc">Add incoming and outgoing edges. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00275">GenericGraph.h:275</a></div></div>
439
439
  <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>
440
440
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a74b2e5787f65cf3e3b4a03ebec806b91"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a74b2e5787f65cf3e3b4a03ebec806b91">SVF::DCHGraph::hasEdge</a></div><div class="ttdeci">DCHEdge * hasEdge(const DIType *t1, const DIType *t2, DCHEdge::GEdgeKind et)</div><div class="ttdoc">Returns the edge between t1 and t2 if it exists, returns nullptr otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00438">DCHG.cpp:438</a></div></div>
441
441
  </div><!-- fragment -->
@@ -468,7 +468,7 @@ Additional Inherited Members</h2></td></tr>
468
468
 
469
469
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00457">457</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
470
470
  <div class="fragment"><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#aa6f49dfc9e3580d3f2d8c257395eb11e">extended</a> = extend;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="namespaceSVF.html#a5ae98f122c64b0114df2e5861b341321">DebugInfoFinder</a> finder;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>(); ++i)</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; finder.processModule(*(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getModule(i)));</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">// Create the void node regardless of whether it appears.</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">getOrCreateNode</a>(<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// Find any char type.</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *charType = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment"> * We want void at the top, char as a child, and everything is a child of char:</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment"> * void</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="comment"> * |</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="comment"> * char</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment"> * / | \</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="comment"> * x y z</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *type : finder.types())</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ada0513be7e25325325ccc9183aeca278">DIBasicType</a> *basicType = SVFUtil::dyn_cast&lt;DIBasicType&gt;(type))</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (basicType-&gt;getEncoding() == dwarf::DW_ATE_unsigned_char</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; || basicType-&gt;getEncoding() == dwarf::DW_ATE_signed_char)</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; charType = type;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a86bf48776ccf53092f4cb742cf95f8eb">handleDIBasicType</a>(basicType);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *compositeType = SVFUtil::dyn_cast&lt;DICompositeType&gt;(type))</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a3ce75cbe92a1fa7d34c6fca2d2ca1b0f">handleDICompositeType</a>(compositeType);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a852e75c562139237fcc754c7461533e6">DIDerivedType</a> *derivedType = SVFUtil::dyn_cast&lt;DIDerivedType&gt;(type))</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a1a4162e68b22d53e9dca73c6780ed3e5">handleDIDerivedType</a>(derivedType);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a090e0791e8c200104ed3ab6bab157129">DISubroutineType</a> *subroutineType = SVFUtil::dyn_cast&lt;DISubroutineType&gt;(type))</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a671f379ae54eef247b5e013478eb3f0c">handleDISubroutineType</a>(subroutineType);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;DCHGraph::buildCHG: unexpected DIType.&quot;</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>(); ++i)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a0c873ab28d5967991e636696fae8c67f">buildVTables</a>(*(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;getModule(i)));</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// Build the void/char/everything else relation.</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#aa6f49dfc9e3580d3f2d8c257395eb11e">extended</a> &amp;&amp; charType != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="comment">// void &lt;-- char</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a294a2075c97e1db8003393fb472c1def">addEdge</a>(charType, <span class="keyword">nullptr</span>, <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb">DCHEdge::STD_DEF</a>);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">// char &lt;-- x, char &lt;-- y, ...</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">iterator</a> nodeI = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nodeI != <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nodeI)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// Everything without a parent gets char as a parent.</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span> (nodeI-&gt;second-&gt;getType() != <span class="keyword">nullptr</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; &amp;&amp; nodeI-&gt;second-&gt;getOutEdges().size() == 0)</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a294a2075c97e1db8003393fb472c1def">addEdge</a>(nodeI-&gt;second-&gt;getType(), charType, <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb">DCHEdge::STD_DEF</a>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#adf6c289ef9f2d0196984dd4024ea4316">Options::PrintDCHG</a>)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a5f08ed4cbba3e4b7a348d5ad77664726">print</a>();</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a0c873ab28d5967991e636696fae8c67f"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a0c873ab28d5967991e636696fae8c67f">SVF::DCHGraph::buildVTables</a></div><div class="ttdeci">void buildVTables(const Module &amp;module)</div><div class="ttdoc">Finds all defined virtual functions and attaches them to nodes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00166">DCHG.cpp:166</a></div></div>
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#l00365">GenericGraph.h:365</a></div></div>
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
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="BasicTypes_8h_source.html#l00223">BasicTypes.h:223</a></div></div>
@@ -476,10 +476,10 @@ Additional Inherited Members</h2></td></tr>
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#l00075">SVFBasicTypes.h:75</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#l00205">Options.h:205</a></div></div>
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#l00369">GenericGraph.h:369</a></div></div>
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
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="BasicTypes_8h_source.html#l00225">BasicTypes.h:225</a></div></div>
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#l00337">GenericGraph.h:337</a></div></div>
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
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="BasicTypes_8h_source.html#l00224">BasicTypes.h:224</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>
@@ -579,7 +579,7 @@ Additional Inherited Members</h2></td></tr>
579
579
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00220">220</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
580
580
  <div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; type = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const DIType *, NodeBS&gt;</a> &amp;cacheMap = firstField ? <a class="code" href="classSVF_1_1DCHGraph.html#abe8d313b501182ab62f2276a19d670a4">chaFFMap</a> : <a class="code" href="classSVF_1_1DCHGraph.html#ac0d5f1e10f642aac5b64792bf5fcbd9d">chaMap</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// Check if we&#39;ve already computed.</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (cacheMap.find(type) != cacheMap.end())</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> cacheMap[type];</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> children;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *node = <a class="code" href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">getOrCreateNode</a>(type);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// Consider oneself a child, otherwise the recursion will just come up with nothing.</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; children.set(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1DCHEdge.html">DCHEdge</a> *edge : node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// Don&#39;t care about anything but inheritance, first-field, and standard def. edges.</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> ( edge-&gt;getEdgeKind() != <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a9c05805c60fe04033bd9815968059e90">DCHEdge::INHERITANCE</a></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; &amp;&amp; edge-&gt;getEdgeKind() != <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3b49b95b713f585b717810dce5ac6564">DCHEdge::FIRST_FIELD</a></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; &amp;&amp; edge-&gt;getEdgeKind() != <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb">DCHEdge::STD_DEF</a>)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// We only care about first-field edges if the flag is on.</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (!firstField &amp;&amp; edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3b49b95b713f585b717810dce5ac6564">DCHEdge::FIRST_FIELD</a>)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;cchildren = <a class="code" href="classSVF_1_1DCHGraph.html#a0a3dfe1f2757eabd75082e2c4caec47a">cha</a>(edge-&gt;getSrcNode()-&gt;getType(), firstField);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// Children&#39;s children are my children.</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cchild : cchildren)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; children.set(cchild);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="comment">// Cache results.</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; cacheMap.insert({type, children});</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// Return the permanent object; we&#39;re returning a reference.</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> cacheMap[type];</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</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>
581
581
  <div class="ttc" id="classSVF_1_1DCHEdge_html"><div class="ttname"><a href="classSVF_1_1DCHEdge.html">SVF::DCHEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00030">DCHG.h:30</a></div></div>
582
- <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00181">GenericGraph.h:181</a></div></div>
582
+ <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
583
583
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
584
584
  <div class="ttc" id="classSVF_1_1DCHGraph_html_abe8d313b501182ab62f2276a19d670a4"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#abe8d313b501182ab62f2276a19d670a4">SVF::DCHGraph::chaFFMap</a></div><div class="ttdeci">Map&lt; const DIType *, NodeBS &gt; chaFFMap</div><div class="ttdoc">Maps types to all children but also considering first field. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00364">DCHG.h:364</a></div></div>
585
585
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00100">SVFBasicTypes.h:100</a></div></div>
@@ -590,7 +590,7 @@ Additional Inherited Members</h2></td></tr>
590
590
  <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>
591
591
  <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>
592
592
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a0a3dfe1f2757eabd75082e2c4caec47a"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a0a3dfe1f2757eabd75082e2c4caec47a">SVF::DCHGraph::cha</a></div><div class="ttdeci">const NodeBS &amp; cha(const DIType *type, bool firstField)</div><div class="ttdoc">Returns a set of all children of type (CHA). Also gradually builds chaMap. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00220">DCHG.cpp:220</a></div></div>
593
- <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00164">GenericGraph.h:164</a></div></div>
593
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
594
594
  <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#l00086">SVFBasicTypes.h:86</a></div></div>
595
595
  </div><!-- fragment -->
596
596
  </div>
@@ -829,12 +829,12 @@ Additional Inherited Members</h2></td></tr>
829
829
  <p>Populates containingAggs for type and all its elements. </p>
830
830
 
831
831
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00350">350</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
832
- <div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>.find(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)) != <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>.end())</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// Initialise an empty set. We want all aggregates to have a value in</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">// this map, even if empty (e.g. struct has no aggs, only scalars).</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)];</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (type-&gt;getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *bt = type-&gt;getBaseType();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; bt = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(bt);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">isAgg</a>(bt))</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cbt = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(bt);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)].insert(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cbt));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a8fcbea9435a77beb27ad64d5a3175b0b">gatherAggs</a>(cbt);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">// These must be canonical already because of aggs.insert above/below.</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)].insert(</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cbt)].<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cbt)].<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>());</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">DINodeArray</a> fields = type-&gt;getElements();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</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="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// Unwrap the member (could be a subprogram, not type, so guard needed).</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <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="l00384"></a><span class="lineno"> 384</span>&#160; {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *ft = mt-&gt;getBaseType();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; ft = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(ft);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">isAgg</a>(ft))</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cft = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(ft);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)].insert(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cft));</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a8fcbea9435a77beb27ad64d5a3175b0b">gatherAggs</a>(cft);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// These must be canonical already because of aggs.insert above.</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)].insert(</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cft)].<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cft)].<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>());</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div><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#l00365">GenericGraph.h:365</a></div></div>
832
+ <div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>.find(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)) != <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>.end())</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// Initialise an empty set. We want all aggregates to have a value in</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">// this map, even if empty (e.g. struct has no aggs, only scalars).</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)];</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (type-&gt;getTag() == dwarf::DW_TAG_array_type)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *bt = type-&gt;getBaseType();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; bt = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(bt);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">isAgg</a>(bt))</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cbt = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(bt);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)].insert(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cbt));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a8fcbea9435a77beb27ad64d5a3175b0b">gatherAggs</a>(cbt);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">// These must be canonical already because of aggs.insert above/below.</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)].insert(</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cbt)].<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cbt)].<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>());</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="namespaceSVF.html#a0f825e73d115173b05ca54fb8ec65003">DINodeArray</a> fields = type-&gt;getElements();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</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="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// Unwrap the member (could be a subprogram, not type, so guard needed).</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <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="l00384"></a><span class="lineno"> 384</span>&#160; {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *ft = mt-&gt;getBaseType();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; ft = <a class="code" href="classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4">stripQualifiers</a>(ft);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">isAgg</a>(ft))</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a> *cft = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#aded9b991c77acc5284ccead0739e84f1">DICompositeType</a>&gt;(ft);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)].insert(<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cft));</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a8fcbea9435a77beb27ad64d5a3175b0b">gatherAggs</a>(cft);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// These must be canonical already because of aggs.insert above.</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type)].insert(</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cft)].<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#adc7a17f70ac3fa89624ad874dbd16ff9">containingAggs</a>[<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(cft)].<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>());</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div><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>
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
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="BasicTypes_8h_source.html#l00223">BasicTypes.h:223</a></div></div>
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#l00369">GenericGraph.h:369</a></div></div>
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
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="BasicTypes_8h_source.html#l00229">BasicTypes.h:229</a></div></div>
840
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="BasicTypes_8h_source.html#l00224">BasicTypes.h:224</a></div></div>
@@ -1010,7 +1010,7 @@ Additional Inherited Members</h2></td></tr>
1010
1010
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a0a3dfe1f2757eabd75082e2c4caec47a"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a0a3dfe1f2757eabd75082e2c4caec47a">SVF::DCHGraph::cha</a></div><div class="ttdeci">const NodeBS &amp; cha(const DIType *type, bool firstField)</div><div class="ttdoc">Returns a set of all children of type (CHA). Also gradually builds chaMap. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00220">DCHG.cpp:220</a></div></div>
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#l00086">SVFBasicTypes.h:86</a></div></div>
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#l00391">GenericGraph.h:391</a></div></div>
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
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="BasicTypes_8h_source.html#l00221">BasicTypes.h:221</a></div></div>
1015
1015
  </div><!-- fragment -->
1016
1016
  </div>
@@ -1186,9 +1186,9 @@ Additional Inherited Members</h2></td></tr>
1186
1186
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00403">403</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
1187
1187
  <div class="fragment"><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;{</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; type = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="comment">// Check, does the node for type exist?</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a581ce71cbc7994f71c9a6b9b145d3b9f">diTypeToNodeMap</a>[type] != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1DCHGraph.html#a581ce71cbc7994f71c9a6b9b145d3b9f">diTypeToNodeMap</a>[type];</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a>(type, <a class="code" href="classSVF_1_1DCHGraph.html#a76fd3154a31584bb64683f2d762cc56c">numTypes</a>++);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), node);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1DCHGraph.html#a581ce71cbc7994f71c9a6b9b145d3b9f">diTypeToNodeMap</a>[type] = node;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">// TODO: handle templates.</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a581ce71cbc7994f71c9a6b9b145d3b9f"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a581ce71cbc7994f71c9a6b9b145d3b9f">SVF::DCHGraph::diTypeToNodeMap</a></div><div class="ttdeci">Map&lt; const DIType *, DCHNode * &gt; diTypeToNodeMap</div><div class="ttdoc">Maps DITypes to their nodes. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00358">DCHG.h:358</a></div></div>
1188
1188
  <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>
1189
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a0a8831a5429005ff9d71adbd6bf3994f"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::addGNode</a></div><div class="ttdeci">void addGNode(NodeID id, NodeType *node)</div><div class="ttdoc">Add a Node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00384">GenericGraph.h:384</a></div></div>
1189
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a0a8831a5429005ff9d71adbd6bf3994f"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::addGNode</a></div><div class="ttdeci">void addGNode(NodeID id, NodeType *node)</div><div class="ttdoc">Add a Node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00380">GenericGraph.h:380</a></div></div>
1190
1190
  <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>
1191
- <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00164">GenericGraph.h:164</a></div></div>
1191
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
1192
1192
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a76fd3154a31584bb64683f2d762cc56c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a76fd3154a31584bb64683f2d762cc56c">SVF::DCHGraph::numTypes</a></div><div class="ttdeci">NodeID numTypes</div><div class="ttdoc">Number of types (nodes) in the graph. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00442">DCHG.h:442</a></div></div>
1193
1193
  </div><!-- fragment -->
1194
1194
  </div>
@@ -1480,7 +1480,7 @@ Additional Inherited Members</h2></td></tr>
1480
1480
  <div class="fragment"><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *src = <a class="code" href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">getOrCreateNode</a>(t1);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *dst = <a class="code" href="classSVF_1_1DCHGraph.html#a9ed6b91fad334605f514049a2072b538">getOrCreateNode</a>(t2);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1DCHEdge.html">DCHEdge</a> *edge : src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>())</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *node = edge-&gt;getDstNode();</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classSVF_1_1GenericEdge.html#a7eb93c9018c80057672a8ce71615dc0d">DCHEdge::GEdgeKind</a> edgeType = edge-&gt;getEdgeKind();</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (node == dst &amp;&amp; edgeType == et)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;DCHEdge&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;Non-DCHEdge in DCHNode edge set.&quot;</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</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>
1481
1481
  <div class="ttc" id="classSVF_1_1DCHEdge_html"><div class="ttname"><a href="classSVF_1_1DCHEdge.html">SVF::DCHEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00030">DCHG.h:30</a></div></div>
1482
1482
  <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>
1483
- <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#l00177">GenericGraph.h:177</a></div></div>
1483
+ <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>
1484
1484
  <div class="ttc" id="classSVF_1_1GenericEdge_html_a7eb93c9018c80057672a8ce71615dc0d"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a7eb93c9018c80057672a8ce71615dc0d">SVF::GenericEdge&lt; DCHNode &gt;::GEdgeKind</a></div><div class="ttdeci">s32_t GEdgeKind</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00053">GenericGraph.h:53</a></div></div>
1485
1485
  <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>
1486
1486
  </div><!-- fragment -->
@@ -1594,7 +1594,7 @@ Additional Inherited Members</h2></td></tr>
1594
1594
  <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>
1595
1595
  <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>
1596
1596
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a0a3dfe1f2757eabd75082e2c4caec47a"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a0a3dfe1f2757eabd75082e2c4caec47a">SVF::DCHGraph::cha</a></div><div class="ttdeci">const NodeBS &amp; cha(const DIType *type, bool firstField)</div><div class="ttdoc">Returns a set of all children of type (CHA). Also gradually builds chaMap. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00220">DCHG.cpp:220</a></div></div>
1597
- <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00164">GenericGraph.h:164</a></div></div>
1597
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
1598
1598
  <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#l00086">SVFBasicTypes.h:86</a></div></div>
1599
1599
  </div><!-- fragment -->
1600
1600
  </div>
@@ -1674,7 +1674,7 @@ Additional Inherited Members</h2></td></tr>
1674
1674
 
1675
1675
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l00931">931</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
1676
1676
  <div class="fragment"><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;{</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="comment">// TODO: some improvements.</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="comment">// - cha should be changed to accept which edge types to use,</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="comment">// then we can call cha(..., DCHEdge::FIRST_FIELD).</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="comment">// - If not ^, this could benefit from caching.</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; f = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(f);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; b = <a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(b);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">if</span> (f == b) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *node = <a class="code" href="classSVF_1_1DCHGraph.html#a96c68bbb5ee5e939158ce0b67da2c61d">getNode</a>(f);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(node &amp;&amp; <span class="stringliteral">&quot;DCHG::isFirstField: node not found&quot;</span>);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="comment">// Consider oneself a child, otherwise the recursion will just come up with nothing.</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1DCHEdge.html">DCHEdge</a> *edge : node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; {</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="comment">// Only care about first-field edges.</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3b49b95b713f585b717810dce5ac6564">DCHEdge::FIRST_FIELD</a>)</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; {</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getSrcNode()-&gt;getType() == b) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a2b2dbc52089696854a8339f2e83fc333">isFirstField</a>(edge-&gt;getSrcNode()-&gt;getType(), b)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; }</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;}</div><div class="ttc" id="classSVF_1_1DCHEdge_html"><div class="ttname"><a href="classSVF_1_1DCHEdge.html">SVF::DCHEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00030">DCHG.h:30</a></div></div>
1677
- <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00181">GenericGraph.h:181</a></div></div>
1677
+ <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
1678
1678
  <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>
1679
1679
  <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>
1680
1680
  <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>
@@ -1701,7 +1701,7 @@ Additional Inherited Members</h2></td></tr>
1701
1701
  </div><div class="memdoc">
1702
1702
 
1703
1703
  <p class="definition">Definition at line <a class="el" href="DCHG_8cpp_source.html#l01131">1131</a> of file <a class="el" href="DCHG_8cpp_source.html">DCHG.cpp</a>.</p>
1704
- <div class="fragment"><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;{</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string line = <span class="stringliteral">&quot;-------------------------------------\n&quot;</span>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string thickLine = <span class="stringliteral">&quot;=====================================\n&quot;</span>;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> singleIndent = 2;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordtype">size_t</span> currIndent = 0;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; thickLine;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordtype">unsigned</span> numStructs = 0;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordtype">unsigned</span> largestStruct = 0;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> nodes;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">DCHGraph::const_iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; {</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; nodes.insert(it-&gt;first);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> : nodes)</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; {</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">if</span> (*nodes.begin() != id)</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; {</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; line;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; }</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()) &lt;&lt; <span class="stringliteral">&quot; [&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>() &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>() != <span class="keyword">nullptr</span></div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; &amp;&amp; (node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()-&gt;getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; || node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()-&gt;getTag() == dwarf::DW_TAG_structure_type))</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; ++numStructs;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordtype">unsigned</span> numFields = <a class="code" href="classSVF_1_1DCHGraph.html#ae9a0007299178912e2568dc7158d6824">getFieldTypes</a>(node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()).size();</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; largestStruct = numFields &gt; largestStruct ? numFields : largestStruct;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; }</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;Virtual functions\n&quot;</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keyword">const</span> std::vector&lt;std::vector&lt;const Function *&gt;&gt; &amp;vfnVectors = node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#a0669b995c4fe72f206154f5cf6889fe8">getVfnVectors</a>();</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; vfnVectors.size(); ++i)</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; {</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;[ vtable #&quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot; ]\n&quot;</span>;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j &lt; vfnVectors[i].size(); ++j)</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; {</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">cppUtil::demangle</a>(vfnVectors[i][j]-&gt;getName().str());</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; j &lt;&lt; <span class="stringliteral">&quot;] &quot;</span></div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; &lt;&lt; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> &lt;&lt; <span class="stringliteral">&quot;::&quot;</span> &lt;&lt; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; }</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">// Nothing was printed.</span></div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">if</span> (vfnVectors.size() == 0)</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; {</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;(none)\n&quot;</span>;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;Bases\n&quot;</span>;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1DCHEdge.html">DCHEdge</a> *edge : node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>())</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; {</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; std::string arrow;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a9c05805c60fe04033bd9815968059e90">DCHEdge::INHERITANCE</a>)</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; {</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; arrow = <span class="stringliteral">&quot;--inheritance--&gt;&quot;</span>;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; }</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3b49b95b713f585b717810dce5ac6564">DCHEdge::FIRST_FIELD</a>)</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; {</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; arrow = <span class="stringliteral">&quot;--first-field--&gt;&quot;</span>;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3e807b4caeb170c5cd1e855ac1a92d77">DCHEdge::INSTANCE</a>)</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; arrow = <span class="stringliteral">&quot;---instance----&gt;&quot;</span>;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb">DCHEdge::STD_DEF</a>)</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; {</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; arrow = <span class="stringliteral">&quot;---standard----&gt;&quot;</span>;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; arrow = <span class="stringliteral">&quot;----unknown----&gt;&quot;</span>;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; }</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;[ &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()) &lt;&lt; <span class="stringliteral">&quot; ] &quot;</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; &lt;&lt; arrow &lt;&lt; <span class="stringliteral">&quot; [ &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(edge-&gt;getDstNode()-&gt;getType()) &lt;&lt; <span class="stringliteral">&quot; ]\n&quot;</span>;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().size() == 0)</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; {</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;(none)\n&quot;</span>;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; }</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;Typedefs\n&quot;</span>;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const DIDerivedType *&gt;</a> &amp;typedefs = node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#ac77edc44c3c5acc185c27c018837d066">getTypedefs</a>();</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</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="l01235"></a><span class="lineno"> 1235</span>&#160; {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; std::string typedefName = <span class="stringliteral">&quot;void&quot;</span>;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keywordflow">if</span> (tdef != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; typedefName = tdef-&gt;getName().str();</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; }</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; typedefName &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; }</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">if</span> (typedefs.size() == 0)</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; {</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;(none)\n&quot;</span>;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; }</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; }</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; thickLine;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;Other stats\n&quot;</span>;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; line;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;# Canonical types : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a10225f56b21eb7f0870fdc433de3c393">canonicalTypes</a>.size() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;# structs : &quot;</span> &lt;&lt; numStructs &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;Largest struct : &quot;</span> &lt;&lt; largestStruct &lt;&lt; <span class="stringliteral">&quot; fields\n&quot;</span>;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; thickLine;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;}</div><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#l00365">GenericGraph.h:365</a></div></div>
1704
+ <div class="fragment"><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;{</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string line = <span class="stringliteral">&quot;-------------------------------------\n&quot;</span>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string thickLine = <span class="stringliteral">&quot;=====================================\n&quot;</span>;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> singleIndent = 2;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordtype">size_t</span> currIndent = 0;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; thickLine;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordtype">unsigned</span> numStructs = 0;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordtype">unsigned</span> largestStruct = 0;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> nodes;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">DCHGraph::const_iterator</a> it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; {</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; nodes.insert(it-&gt;first);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> : nodes)</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; {</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">if</span> (*nodes.begin() != id)</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; {</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; line;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; }</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1DCHNode.html">DCHNode</a> *node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()) &lt;&lt; <span class="stringliteral">&quot; [&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>() &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>() != <span class="keyword">nullptr</span></div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; &amp;&amp; (node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()-&gt;getTag() == dwarf::DW_TAG_class_type</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; || node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()-&gt;getTag() == dwarf::DW_TAG_structure_type))</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; ++numStructs;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordtype">unsigned</span> numFields = <a class="code" href="classSVF_1_1DCHGraph.html#ae9a0007299178912e2568dc7158d6824">getFieldTypes</a>(node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()).size();</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; largestStruct = numFields &gt; largestStruct ? numFields : largestStruct;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; }</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;Virtual functions\n&quot;</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keyword">const</span> std::vector&lt;std::vector&lt;const Function *&gt;&gt; &amp;vfnVectors = node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#a0669b995c4fe72f206154f5cf6889fe8">getVfnVectors</a>();</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; vfnVectors.size(); ++i)</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; {</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;[ vtable #&quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot; ]\n&quot;</span>;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j &lt; vfnVectors[i].size(); ++j)</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; {</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">cppUtil::demangle</a>(vfnVectors[i][j]-&gt;getName().str());</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; j &lt;&lt; <span class="stringliteral">&quot;] &quot;</span></div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; &lt;&lt; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> &lt;&lt; <span class="stringliteral">&quot;::&quot;</span> &lt;&lt; dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; }</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">// Nothing was printed.</span></div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">if</span> (vfnVectors.size() == 0)</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; {</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;(none)\n&quot;</span>;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;Bases\n&quot;</span>;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1DCHEdge.html">DCHEdge</a> *edge : node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>())</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; {</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; std::string arrow;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a9c05805c60fe04033bd9815968059e90">DCHEdge::INHERITANCE</a>)</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; {</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; arrow = <span class="stringliteral">&quot;--inheritance--&gt;&quot;</span>;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; }</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3b49b95b713f585b717810dce5ac6564">DCHEdge::FIRST_FIELD</a>)</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; {</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; arrow = <span class="stringliteral">&quot;--first-field--&gt;&quot;</span>;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3e807b4caeb170c5cd1e855ac1a92d77">DCHEdge::INSTANCE</a>)</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; arrow = <span class="stringliteral">&quot;---instance----&gt;&quot;</span>;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;getEdgeKind() == <a class="code" href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a8b07351616a1798fa34ec3828f485ebb">DCHEdge::STD_DEF</a>)</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; {</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; arrow = <span class="stringliteral">&quot;---standard----&gt;&quot;</span>;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; arrow = <span class="stringliteral">&quot;----unknown----&gt;&quot;</span>;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; }</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;[ &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">getType</a>()) &lt;&lt; <span class="stringliteral">&quot; ] &quot;</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; &lt;&lt; arrow &lt;&lt; <span class="stringliteral">&quot; [ &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a2dc488345cc3a5f37079952f638d8c2b">diTypeToStr</a>(edge-&gt;getDstNode()-&gt;getType()) &lt;&lt; <span class="stringliteral">&quot; ]\n&quot;</span>;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().size() == 0)</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; {</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;(none)\n&quot;</span>;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; }</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;Typedefs\n&quot;</span>;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; currIndent += singleIndent;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const DIDerivedType *&gt;</a> &amp;typedefs = node-&gt;<a class="code" href="classSVF_1_1DCHNode.html#ac77edc44c3c5acc185c27c018837d066">getTypedefs</a>();</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</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="l01235"></a><span class="lineno"> 1235</span>&#160; {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; std::string typedefName = <span class="stringliteral">&quot;void&quot;</span>;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keywordflow">if</span> (tdef != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; typedefName = tdef-&gt;getName().str();</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; }</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; typedefName &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; }</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">if</span> (typedefs.size() == 0)</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; {</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a>(currIndent) &lt;&lt; <span class="stringliteral">&quot;(none)\n&quot;</span>;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; }</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; currIndent -= singleIndent;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; }</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; thickLine;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;Other stats\n&quot;</span>;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; line;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;# Canonical types : &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1DCHGraph.html#a10225f56b21eb7f0870fdc433de3c393">canonicalTypes</a>.size() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;# structs : &quot;</span> &lt;&lt; numStructs &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;Largest struct : &quot;</span> &lt;&lt; largestStruct &lt;&lt; <span class="stringliteral">&quot; fields\n&quot;</span>;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>() &lt;&lt; thickLine;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;}</div><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>
1705
1705
  <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>
1706
1706
  <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>
1707
1707
  <div class="ttc" id="classSVF_1_1DCHEdge_html"><div class="ttname"><a href="classSVF_1_1DCHEdge.html">SVF::DCHEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00030">DCHG.h:30</a></div></div>
@@ -1710,22 +1710,22 @@ Additional Inherited Members</h2></td></tr>
1710
1710
  <div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html">SVF::cppUtil::DemangledName</a></div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00046">CPPUtil.h:46</a></div></div>
1711
1711
  <div class="ttc" id="classSVF_1_1DCHNode_html_aaf4036d892bdae02a01d31bfe3db2153"><div class="ttname"><a href="classSVF_1_1DCHNode.html#aaf4036d892bdae02a01d31bfe3db2153">SVF::DCHNode::getType</a></div><div class="ttdeci">const DIType * getType(void) const</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00096">DCHG.h:96</a></div></div>
1712
1712
  <div class="ttc" id="DCHG_8cpp_html_a6673217180d3b6fb73c7c6387777f269"><div class="ttname"><a href="DCHG_8cpp.html#a6673217180d3b6fb73c7c6387777f269">indent</a></div><div class="ttdeci">static std::string indent(size_t n)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l01126">DCHG.cpp:1126</a></div></div>
1713
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00338">GenericGraph.h:338</a></div></div>
1713
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph&lt; DCHNode, DCHEdge &gt;::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00339">GenericGraph.h:339</a></div></div>
1714
1714
  <div class="ttc" id="classSVF_1_1DCHNode_html_a0669b995c4fe72f206154f5cf6889fe8"><div class="ttname"><a href="classSVF_1_1DCHNode.html#a0669b995c4fe72f206154f5cf6889fe8">SVF::DCHNode::getVfnVectors</a></div><div class="ttdeci">const std::vector&lt; std::vector&lt; const Function * &gt; &gt; &amp; getVfnVectors(void) const</div><div class="ttdoc">Returns the vector of virtual function vectors. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00175">DCHG.h:175</a></div></div>
1715
1715
  <div class="ttc" id="classSVF_1_1DCHEdge_html_a9ab4cd83d9ee475d3d8445cd91839726a3e807b4caeb170c5cd1e855ac1a92d77"><div class="ttname"><a href="classSVF_1_1DCHEdge.html#a9ab4cd83d9ee475d3d8445cd91839726a3e807b4caeb170c5cd1e855ac1a92d77">SVF::DCHEdge::INSTANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00036">DCHG.h:36</a></div></div>
1716
- <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#l00369">GenericGraph.h:369</a></div></div>
1716
+ <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>
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#l00095">SVFBasicTypes.h:95</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
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="BasicTypes_8h_source.html#l00224">BasicTypes.h:224</a></div></div>
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#l00177">GenericGraph.h:177</a></div></div>
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>
1724
1724
  <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>
1725
1725
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
1726
1726
  <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>
1727
1727
  <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>
1728
- <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#l00391">GenericGraph.h:391</a></div></div>
1728
+ <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>
1729
1729
  <div class="ttc" id="classSVF_1_1DCHNode_html_ac77edc44c3c5acc185c27c018837d066"><div class="ttname"><a href="classSVF_1_1DCHNode.html#ac77edc44c3c5acc185c27c018837d066">SVF::DCHNode::getTypedefs</a></div><div class="ttdeci">const Set&lt; const DIDerivedType * &gt; &amp; getTypedefs(void) const</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00159">DCHG.h:159</a></div></div>
1730
1730
  <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>
1731
1731
  </div><!-- fragment -->