svf-tools 1.0.552 → 1.0.555

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 (355) hide show
  1. package/README.md +11 -1
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +7 -7
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +1 -1
  8. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +8 -8
  11. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +2 -2
  12. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +18 -18
  14. package/SVF-doxygen/html/html/CHGBuilder_8h.html +1 -0
  15. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +11 -10
  16. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  17. package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
  18. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  19. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +17 -17
  20. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
  22. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +3 -3
  29. package/SVF-doxygen/html/html/DCHG_8cpp.html +2 -2
  30. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +38 -35
  31. package/SVF-doxygen/html/html/DCHG_8h_source.html +9 -10
  32. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +11 -14
  33. package/SVF-doxygen/html/html/DDAPass_8h_source.html +12 -13
  34. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/DPItem_8h_source.html +2 -2
  36. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +5 -5
  37. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +7 -7
  38. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  39. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
  41. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -5
  42. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +4 -4
  43. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +9 -9
  51. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +5 -5
  54. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +5 -5
  56. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  57. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  58. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +3 -3
  59. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +12 -12
  60. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +20 -18
  61. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +27 -27
  62. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +17 -17
  63. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  64. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  66. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +7 -7
  67. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +10 -10
  69. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  71. package/SVF-doxygen/html/html/MHP_8cpp_source.html +11 -11
  72. package/SVF-doxygen/html/html/MHP_8h_source.html +3 -3
  73. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  75. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  76. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -12
  77. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +4 -4
  78. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
  79. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  80. package/SVF-doxygen/html/html/MTA_8h_source.html +3 -3
  81. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  82. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  83. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
  84. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +10 -10
  86. package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
  87. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  88. package/SVF-doxygen/html/html/PCG_8cpp_source.html +6 -6
  89. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  90. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +6 -6
  91. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  92. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
  93. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  94. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  95. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +11 -11
  96. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  97. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  98. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +2 -0
  100. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +110 -109
  101. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  102. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  103. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  104. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  105. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  106. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  107. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +61 -61
  108. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +47 -47
  109. package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
  110. package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
  111. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  112. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +9 -9
  113. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +49 -52
  114. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  115. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
  116. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
  117. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  118. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +10 -10
  119. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
  120. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  121. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  122. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +34 -34
  124. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  125. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +5 -5
  126. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +5 -5
  127. package/SVF-doxygen/html/html/TCT_8cpp_source.html +12 -12
  128. package/SVF-doxygen/html/html/TCT_8h_source.html +8 -8
  129. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +4 -4
  130. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
  131. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  132. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
  133. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  134. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -2
  135. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +79 -80
  136. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  137. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
  138. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  139. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  140. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +9 -12
  141. package/SVF-doxygen/html/html/WPAPass_8h_source.html +10 -11
  142. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +7 -7
  149. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +2 -2
  159. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +8 -8
  160. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +50 -50
  161. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
  162. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  165. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  169. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  170. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +3 -3
  174. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -4
  175. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +2 -2
  179. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph-members.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +114 -111
  184. package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +5 -6
  185. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +42 -79
  186. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  188. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  189. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +5 -5
  192. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +8 -8
  194. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI_1_1Operation-members.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI_1_1Operation.html +5 -5
  196. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
  198. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +12 -12
  200. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  202. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
  205. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  206. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  210. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  211. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  212. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +13 -13
  213. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  214. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  221. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  226. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  228. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
  229. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +3 -3
  230. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +20 -19
  231. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +95 -54
  232. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
  233. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  234. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +4 -4
  236. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +20 -20
  237. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
  238. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +19 -19
  239. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
  240. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  242. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
  243. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
  244. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +15 -15
  245. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  246. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -13
  248. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  250. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +11 -11
  253. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +4 -4
  255. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +4 -4
  257. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  258. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  260. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
  261. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +16 -16
  263. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +3 -3
  264. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +1 -1
  266. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
  267. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  269. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  271. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  272. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  274. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +61 -61
  275. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
  276. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  277. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  278. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +123 -120
  279. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +3 -3
  281. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
  282. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
  283. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +14 -14
  284. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +2 -2
  287. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  288. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  290. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +40 -40
  291. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +8 -8
  292. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +19 -19
  293. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  294. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +4 -4
  296. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +4 -4
  297. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  300. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  303. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  304. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
  305. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  308. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1WPAPass-members.html +4 -5
  311. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +28 -66
  312. package/SVF-doxygen/html/html/functions_b.html +1 -1
  313. package/SVF-doxygen/html/html/functions_func_b.html +1 -1
  314. package/SVF-doxygen/html/html/functions_func_g.html +8 -8
  315. package/SVF-doxygen/html/html/functions_func_r.html +3 -3
  316. package/SVF-doxygen/html/html/functions_g.html +9 -9
  317. package/SVF-doxygen/html/html/functions_r.html +2 -4
  318. package/SVF-doxygen/html/html/namespaceSVF.html +141 -141
  319. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +49 -49
  320. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +168 -171
  321. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +28 -28
  322. package/SVF-doxygen/html/html/search/all_11.js +1 -1
  323. package/SVF-doxygen/html/html/search/all_13.js +1 -1
  324. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  325. package/SVF-doxygen/html/html/search/all_7.js +3 -3
  326. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  327. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  328. package/SVF-doxygen/html/html/search/functions_6.js +3 -3
  329. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
  330. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  331. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  332. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  333. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +3 -3
  334. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +4 -4
  335. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
  336. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  337. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  338. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  339. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  340. package/include/DDA/DDAPass.h +0 -3
  341. package/include/SVF-FE/BasicTypes.h +1 -0
  342. package/include/SVF-FE/CHGBuilder.h +1 -0
  343. package/include/SVF-FE/DCHG.h +1 -1
  344. package/include/SVF-FE/LLVMModule.h +17 -0
  345. package/include/Util/BasicTypes.h +0 -1
  346. package/include/Util/ExtAPI.h +2 -2
  347. package/include/Util/ExtAPI.json +3 -3
  348. package/include/Util/SVFUtil.h +1 -13
  349. package/include/WPA/WPAPass.h +0 -3
  350. package/lib/DDA/DDAPass.cpp +0 -7
  351. package/lib/SVF-FE/DCHG.cpp +4 -7
  352. package/lib/SVF-FE/SVFIRBuilder.cpp +63 -23
  353. package/lib/Util/ExtAPI.cpp +1 -1
  354. package/lib/WPA/WPAPass.cpp +0 -10
  355. package/package.json +1 -1
@@ -125,7 +125,7 @@ Private Attributes</h2></td></tr>
125
125
  </table>
126
126
  <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
127
127
  <div class="textblock">
128
- <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00035">35</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
128
+ <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00036">36</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
129
129
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
130
130
  <a id="adbff217477a779de9024d9a5777413a7"></a>
131
131
  <h2 class="memtitle"><span class="permalink"><a href="#adbff217477a779de9024d9a5777413a7">&#9670;&nbsp;</a></span>CHNodeSetTy</h2>
@@ -139,7 +139,7 @@ Private Attributes</h2></td></tr>
139
139
  </table>
140
140
  </div><div class="memdoc">
141
141
 
142
- <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00042">42</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
142
+ <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00043">43</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
143
143
 
144
144
  </div>
145
145
  </div>
@@ -155,7 +155,7 @@ Private Attributes</h2></td></tr>
155
155
  </table>
156
156
  </div><div class="memdoc">
157
157
 
158
- <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00043">43</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
158
+ <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00044">44</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
159
159
 
160
160
  </div>
161
161
  </div>
@@ -184,8 +184,8 @@ Private Attributes</h2></td></tr>
184
184
  </table>
185
185
  </div><div class="memdoc">
186
186
 
187
- <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00045">45</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
188
- <div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; : <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>(c)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
187
+ <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00046">46</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
188
+ <div class="fragment"><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; : <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>(c)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
189
189
  </div><!-- fragment -->
190
190
  </div>
191
191
  </div>
@@ -220,8 +220,8 @@ Private Attributes</h2></td></tr>
220
220
  <div class="fragment"><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;{</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *lf = f-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">isCPPThunkFunction</a>(lf))</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <span class="keyword">auto</span> *tf = <a class="code" href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">getThunkTarget</a>(lf))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; v.push_back(<a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a62a3ccdbc55381d5f8d96dc23141f2e5">svfMod</a>-&gt;<a class="code" href="classSVF_1_1SVFModule.html#af969d7739f27c8242985656bafbabaeb">getSVFFunction</a>(tf));</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; v.push_back(f);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;}</div><div class="ttc" id="classSVF_1_1CHGraph_html_a62a3ccdbc55381d5f8d96dc23141f2e5"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a62a3ccdbc55381d5f8d96dc23141f2e5">SVF::CHGraph::svfMod</a></div><div class="ttdeci">SVFModule * svfMod</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00310">CHG.h:310</a></div></div>
221
221
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a917c4bd2d5fd1354b5069bf0a68533d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">SVF::cppUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00285">CPPUtil.cpp:285</a></div></div>
222
222
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ac9c6d4315e7a1a826add7ed9cf924553"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">SVF::cppUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00291">CPPUtil.cpp:291</a></div></div>
223
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
224
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
223
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
224
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
225
225
  <div class="ttc" id="classSVF_1_1SVFModule_html_af969d7739f27c8242985656bafbabaeb"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af969d7739f27c8242985656bafbabaeb">SVF::SVFModule::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00130">SVFModule.h:130</a></div></div>
226
226
  </div><!-- fragment -->
227
227
  </div>
@@ -243,33 +243,33 @@ Private Attributes</h2></td></tr>
243
243
  </div><div class="memdoc">
244
244
 
245
245
  <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00368">368</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
246
- <div class="fragment"><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;{</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">for</span> (Module::const_global_iterator I = <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>.global_begin(),</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; E = <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>.global_end(); I != E; ++I)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a> *globalvalue = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>&gt;(&amp;(*I));</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(globalvalue) &amp;&amp; globalvalue-&gt;getNumOperands() &gt; 0)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct =</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>&gt;(globalvalue-&gt;getOperand(0));</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; assert(vtblStruct &amp;&amp; <span class="stringliteral">&quot;Initializer of a vtable not a struct?&quot;</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">string</span> vtblClassName = <a class="code" href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">getClassNameFromVtblObj</a>(globalvalue);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">getNode</a>(vtblClassName);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; assert(node &amp;&amp; <span class="stringliteral">&quot;node not found?&quot;</span>);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a2c31580f1cf43fbdd01a07b6f9f6b04e">setVTable</a>(globalvalue);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ei = 0; ei &lt; vtblStruct-&gt;getNumOperands(); ++ei)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *vtbl =</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>&gt;(vtblStruct-&gt;getOperand(ei));</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; assert(vtbl &amp;&amp; <span class="stringliteral">&quot;Element of initializer not an array?&quot;</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> * items in vtables can be classified into 3 categories:</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> * 1. i8* null</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"> * 2. i8* inttoptr xxx</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> * 3. i8* bitcast xxx</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordtype">bool</span> pure_abstract = <span class="keyword">true</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">while</span> (i &lt; vtbl-&gt;getNumOperands())</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1CHNode.html#aa4af6538c9994ec54a7b82691f846a31">CHNode::FuncVector</a> virtualFunctions;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordtype">bool</span> is_virtual = <span class="keyword">false</span>; <span class="comment">// virtual inheritance</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">int</span> null_ptr_num = 0;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (; i &lt; vtbl-&gt;getNumOperands(); ++i)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(vtbl-&gt;getOperand(i)))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (i &gt; 0 &amp;&amp; !SVFUtil::isa&lt;ConstantPointerNull&gt;(vtbl-&gt;getOperand(i-1)))</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce =</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>&gt;(vtbl-&gt;getOperand(i-1));</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (ce-&gt;getOpcode() == Instruction::BitCast)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *bitcastValue = ce-&gt;getOperand(0);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordtype">string</span> bitcastValueName = bitcastValue-&gt;getName().str();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (bitcastValueName.compare(0, <a class="code" href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a>.size(), <a class="code" href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a>) == 0)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; is_virtual = <span class="keyword">true</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; null_ptr_num = 1;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">while</span> (i+null_ptr_num &lt; vtbl-&gt;getNumOperands())</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(vtbl-&gt;getOperand(i+null_ptr_num)))</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; null_ptr_num++;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce =</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>&gt;(vtbl-&gt;getOperand(i));</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; assert(ce != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;item in vtable not constantexp or null&quot;</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode = ce-&gt;getOpcode();</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; assert(opcode == Instruction::IntToPtr ||</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; opcode == Instruction::BitCast);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; assert(ce-&gt;getNumOperands() == 1 &amp;&amp;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="stringliteral">&quot;inttptr or bitcast operand num not 1&quot;</span>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (opcode == Instruction::IntToPtr)</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; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a5d751a3a0d88c0de374bfeb526051440">setMultiInheritance</a>();</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; ++i;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (opcode == Instruction::BitCast)</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *bitcastValue = ce-&gt;getOperand(0);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordtype">string</span> bitcastValueName = bitcastValue-&gt;getName().str();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment"> * value in bitcast:</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> * _ZTIXXX</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"> * Function</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment"> * GlobalAlias (alias to other function)</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; assert(SVFUtil::isa&lt;Function&gt;(bitcastValue) ||</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; SVFUtil::isa&lt;GlobalValue&gt;(bitcastValue));</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f = SVFUtil::dyn_cast&lt;Function&gt;(bitcastValue))</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(f);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a77753749b34b00c18d419057b4757a26">addFuncToFuncVector</a>(virtualFunctions, func);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span> (func-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>().compare(<a class="code" href="CHGBuilder_8cpp.html#a5b49460faf973332d3cbfc561c994c6c">pureVirtualFunName</a>) == 0)</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; pure_abstract &amp;= <span class="keyword">true</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; pure_abstract &amp;= <span class="keyword">false</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">struct </span>DemangledName dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(func-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>());</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (dname.className.size() &gt; 0 &amp;&amp;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; vtblClassName.compare(dname.className) != 0)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">addEdge</a>(vtblClassName, dname.className, <a class="code" href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">CHEdge::INHERITANCE</a>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">else</span></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">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a> *alias =</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; SVFUtil::dyn_cast&lt;GlobalAlias&gt;(bitcastValue))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *aliasValue = alias-&gt;getAliasee();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* aliasFunc =</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; SVFUtil::dyn_cast&lt;Function&gt;(aliasValue))</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(aliasFunc);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a77753749b34b00c18d419057b4757a26">addFuncToFuncVector</a>(virtualFunctions, func);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *aliasconst =</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; SVFUtil::dyn_cast&lt;ConstantExpr&gt;(aliasValue))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> aliasopcode = aliasconst-&gt;getOpcode();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; assert(aliasopcode == Instruction::BitCast &amp;&amp;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="stringliteral">&quot;aliased constantexpr in vtable not a bitcast&quot;</span>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* aliasbitcastfunc =</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(aliasconst-&gt;getOperand(0));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; assert(aliasbitcastfunc &amp;&amp;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="stringliteral">&quot;aliased bitcast in vtable not a function&quot;</span>);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(aliasbitcastfunc);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a77753749b34b00c18d419057b4757a26">addFuncToFuncVector</a>(virtualFunctions, func);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;alias not function or bitcast&quot;</span>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; pure_abstract &amp;= <span class="keyword">false</span>;</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">else</span> <span class="keywordflow">if</span> (bitcastValueName.compare(0, <a class="code" href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a>.size(),</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a>) == 0)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; assert(<span class="stringliteral">&quot;what else can be in bitcast of a vtable?&quot;</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; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (is_virtual &amp;&amp; virtualFunctions.size() &gt; 0)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; null_ptr_num; ++i)</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = virtualFunctions[i];</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; virtualFunctions.insert(virtualFunctions.begin(), fun);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span> (virtualFunctions.size() &gt; 0)</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a8c51571df92b5e152cc42e9aaf712dc9">addVirtualFunctionVector</a>(virtualFunctions);</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> (pure_abstract == <span class="keyword">true</span>)</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; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#abac89987927dadd53dd646eae540a024">setPureAbstract</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="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00063">BasicTypes.h:63</a></div></div>
246
+ <div class="fragment"><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;{</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">for</span> (Module::const_global_iterator I = <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>.global_begin(),</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; E = <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>.global_end(); I != E; ++I)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a> *globalvalue = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a>&gt;(&amp;(*I));</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(globalvalue) &amp;&amp; globalvalue-&gt;getNumOperands() &gt; 0)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct =</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>&gt;(globalvalue-&gt;getOperand(0));</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; assert(vtblStruct &amp;&amp; <span class="stringliteral">&quot;Initializer of a vtable not a struct?&quot;</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">string</span> vtblClassName = <a class="code" href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">getClassNameFromVtblObj</a>(globalvalue);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">getNode</a>(vtblClassName);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; assert(node &amp;&amp; <span class="stringliteral">&quot;node not found?&quot;</span>);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a2c31580f1cf43fbdd01a07b6f9f6b04e">setVTable</a>(globalvalue);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ei = 0; ei &lt; vtblStruct-&gt;getNumOperands(); ++ei)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *vtbl =</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>&gt;(vtblStruct-&gt;getOperand(ei));</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; assert(vtbl &amp;&amp; <span class="stringliteral">&quot;Element of initializer not an array?&quot;</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> * items in vtables can be classified into 3 categories:</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> * 1. i8* null</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"> * 2. i8* inttoptr xxx</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> * 3. i8* bitcast xxx</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordtype">bool</span> pure_abstract = <span class="keyword">true</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">while</span> (i &lt; vtbl-&gt;getNumOperands())</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1CHNode.html#aa4af6538c9994ec54a7b82691f846a31">CHNode::FuncVector</a> virtualFunctions;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordtype">bool</span> is_virtual = <span class="keyword">false</span>; <span class="comment">// virtual inheritance</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">int</span> null_ptr_num = 0;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (; i &lt; vtbl-&gt;getNumOperands(); ++i)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(vtbl-&gt;getOperand(i)))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (i &gt; 0 &amp;&amp; !SVFUtil::isa&lt;ConstantPointerNull&gt;(vtbl-&gt;getOperand(i-1)))</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce =</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>&gt;(vtbl-&gt;getOperand(i-1));</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (ce-&gt;getOpcode() == Instruction::BitCast)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *bitcastValue = ce-&gt;getOperand(0);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordtype">string</span> bitcastValueName = bitcastValue-&gt;getName().str();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (bitcastValueName.compare(0, <a class="code" href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a>.size(), <a class="code" href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a>) == 0)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; is_virtual = <span class="keyword">true</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; null_ptr_num = 1;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">while</span> (i+null_ptr_num &lt; vtbl-&gt;getNumOperands())</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(vtbl-&gt;getOperand(i+null_ptr_num)))</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; null_ptr_num++;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce =</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a>&gt;(vtbl-&gt;getOperand(i));</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; assert(ce != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;item in vtable not constantexp or null&quot;</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode = ce-&gt;getOpcode();</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; assert(opcode == Instruction::IntToPtr ||</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; opcode == Instruction::BitCast);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; assert(ce-&gt;getNumOperands() == 1 &amp;&amp;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="stringliteral">&quot;inttptr or bitcast operand num not 1&quot;</span>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (opcode == Instruction::IntToPtr)</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; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a5d751a3a0d88c0de374bfeb526051440">setMultiInheritance</a>();</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; ++i;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (opcode == Instruction::BitCast)</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *bitcastValue = ce-&gt;getOperand(0);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordtype">string</span> bitcastValueName = bitcastValue-&gt;getName().str();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment"> * value in bitcast:</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> * _ZTIXXX</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"> * Function</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment"> * GlobalAlias (alias to other function)</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; assert(SVFUtil::isa&lt;Function&gt;(bitcastValue) ||</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; SVFUtil::isa&lt;GlobalValue&gt;(bitcastValue));</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f = SVFUtil::dyn_cast&lt;Function&gt;(bitcastValue))</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(f);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a77753749b34b00c18d419057b4757a26">addFuncToFuncVector</a>(virtualFunctions, func);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span> (func-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>().compare(<a class="code" href="CHGBuilder_8cpp.html#a5b49460faf973332d3cbfc561c994c6c">pureVirtualFunName</a>) == 0)</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; pure_abstract &amp;= <span class="keyword">true</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; pure_abstract &amp;= <span class="keyword">false</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">struct </span>DemangledName dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(func-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>());</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (dname.className.size() &gt; 0 &amp;&amp;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; vtblClassName.compare(dname.className) != 0)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">addEdge</a>(vtblClassName, dname.className, <a class="code" href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">CHEdge::INHERITANCE</a>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">else</span></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">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">GlobalAlias</a> *alias =</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; SVFUtil::dyn_cast&lt;GlobalAlias&gt;(bitcastValue))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">Constant</a> *aliasValue = alias-&gt;getAliasee();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* aliasFunc =</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; SVFUtil::dyn_cast&lt;Function&gt;(aliasValue))</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(aliasFunc);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a77753749b34b00c18d419057b4757a26">addFuncToFuncVector</a>(virtualFunctions, func);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *aliasconst =</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; SVFUtil::dyn_cast&lt;ConstantExpr&gt;(aliasValue))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> aliasopcode = aliasconst-&gt;getOpcode();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; assert(aliasopcode == Instruction::BitCast &amp;&amp;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="stringliteral">&quot;aliased constantexpr in vtable not a bitcast&quot;</span>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* aliasbitcastfunc =</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(aliasconst-&gt;getOperand(0));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; assert(aliasbitcastfunc &amp;&amp;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="stringliteral">&quot;aliased bitcast in vtable not a function&quot;</span>);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(aliasbitcastfunc);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a77753749b34b00c18d419057b4757a26">addFuncToFuncVector</a>(virtualFunctions, func);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;alias not function or bitcast&quot;</span>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; pure_abstract &amp;= <span class="keyword">false</span>;</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">else</span> <span class="keywordflow">if</span> (bitcastValueName.compare(0, <a class="code" href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a>.size(),</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a>) == 0)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; assert(<span class="stringliteral">&quot;what else can be in bitcast of a vtable?&quot;</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; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (is_virtual &amp;&amp; virtualFunctions.size() &gt; 0)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; null_ptr_num; ++i)</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = virtualFunctions[i];</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; virtualFunctions.insert(virtualFunctions.begin(), fun);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span> (virtualFunctions.size() &gt; 0)</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#a8c51571df92b5e152cc42e9aaf712dc9">addVirtualFunctionVector</a>(virtualFunctions);</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> (pure_abstract == <span class="keyword">true</span>)</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; node-&gt;<a class="code" href="classSVF_1_1CHNode.html#abac89987927dadd53dd646eae540a024">setPureAbstract</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="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00064">BasicTypes.h:64</a></div></div>
247
247
  <div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
248
248
  <div class="ttc" id="classSVF_1_1CHGraph_html_a7beec68a60036c93a741a7152e8198b6"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">SVF::CHGraph::getNode</a></div><div class="ttdeci">CHNode * getNode(const std::string name) const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00088">CHG.cpp:88</a></div></div>
249
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
249
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
250
250
  <div class="ttc" id="classSVF_1_1CHNode_html_aa4af6538c9994ec54a7b82691f846a31"><div class="ttname"><a href="classSVF_1_1CHNode.html#aa4af6538c9994ec54a7b82691f846a31">SVF::CHNode::FuncVector</a></div><div class="ttdeci">std::vector&lt; const SVFFunction * &gt; FuncVector</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00114">CHG.h:114</a></div></div>
251
251
  <div class="ttc" id="classSVF_1_1CHNode_html_a2c31580f1cf43fbdd01a07b6f9f6b04e"><div class="ttname"><a href="classSVF_1_1CHNode.html#a2c31580f1cf43fbdd01a07b6f9f6b04e">SVF::CHNode::setVTable</a></div><div class="ttdeci">void setVTable(const GlobalValue *vtbl)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00182">CHG.h:182</a></div></div>
252
252
  <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#l00085">SVFBasicTypes.h:85</a></div></div>
253
253
  <div class="ttc" id="classSVF_1_1CHGBuilder_html_a77753749b34b00c18d419057b4757a26"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a77753749b34b00c18d419057b4757a26">SVF::CHGBuilder::addFuncToFuncVector</a></div><div class="ttdeci">void addFuncToFuncVector(CHNode::FuncVector &amp;v, const SVFFunction *f)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00696">CHGBuilder.cpp:696</a></div></div>
254
254
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad83c097f1c77cdf52fc219ef07ee0b1a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00434">CPPUtil.cpp:434</a></div></div>
255
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
255
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
256
256
  <div class="ttc" id="classSVF_1_1CHNode_html_a5d751a3a0d88c0de374bfeb526051440"><div class="ttname"><a href="classSVF_1_1CHNode.html#a5d751a3a0d88c0de374bfeb526051440">SVF::CHNode::setMultiInheritance</a></div><div class="ttdeci">void setMultiInheritance()</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00145">CHG.h:145</a></div></div>
257
257
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
258
258
  <div class="ttc" id="classSVF_1_1CHNode_html_a8c51571df92b5e152cc42e9aaf712dc9"><div class="ttname"><a href="classSVF_1_1CHNode.html#a8c51571df92b5e152cc42e9aaf712dc9">SVF::CHNode::addVirtualFunctionVector</a></div><div class="ttdeci">void addVirtualFunctionVector(FuncVector vfuncvec)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00167">CHG.h:167</a></div></div>
259
259
  <div class="ttc" id="classSVF_1_1CHEdge_html_a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c"><div class="ttname"><a href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">SVF::CHEdge::INHERITANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00082">CHG.h:82</a></div></div>
260
- <div class="ttc" id="namespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
260
+ <div class="ttc" id="namespaceSVF_html_a0fd33072b099f61eaa642e94ed0c03fc"><div class="ttname"><a href="namespaceSVF.html#a0fd33072b099f61eaa642e94ed0c03fc">SVF::GlobalAlias</a></div><div class="ttdeci">llvm::GlobalAlias GlobalAlias</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
261
261
  <div class="ttc" id="namespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
262
262
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00124">CPPUtil.cpp:124</a></div></div>
263
263
  <div class="ttc" id="classSVF_1_1CHGraph_html_a3867db3e76f068bd8c4399b103dcd0b7"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">SVF::CHGraph::addEdge</a></div><div class="ttdeci">void addEdge(const std::string className, const std::string baseClassName, CHEdge::CHEDGETYPE edgeType)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00073">CHG.cpp:73</a></div></div>
264
- <div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00064">BasicTypes.h:64</a></div></div>
264
+ <div class="ttc" id="namespaceSVF_html_a7e230c0cba2e3a7c2e5a5f2ee7d88af9"><div class="ttname"><a href="namespaceSVF.html#a7e230c0cba2e3a7c2e5a5f2ee7d88af9">SVF::Constant</a></div><div class="ttdeci">llvm::Constant Constant</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
265
265
  <div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00253">SVFBasicTypes.h:253</a></div></div>
266
266
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
267
267
  <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>
268
268
  <div class="ttc" id="CHGBuilder_8cpp_html_a4ecb39b2fb5510fb20341373b7ad5450"><div class="ttname"><a href="CHGBuilder_8cpp.html#a4ecb39b2fb5510fb20341373b7ad5450">ztiLabel</a></div><div class="ttdeci">const string ztiLabel</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00055">CHGBuilder.cpp:55</a></div></div>
269
269
  <div class="ttc" id="classSVF_1_1CHNode_html_abac89987927dadd53dd646eae540a024"><div class="ttname"><a href="classSVF_1_1CHNode.html#abac89987927dadd53dd646eae540a024">SVF::CHNode::setPureAbstract</a></div><div class="ttdeci">void setPureAbstract()</div><div class="ttdoc">Attribute. </div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00141">CHG.h:141</a></div></div>
270
270
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
271
- <div class="ttc" id="namespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00052">BasicTypes.h:52</a></div></div>
272
- <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00060">BasicTypes.h:60</a></div></div>
271
+ <div class="ttc" id="namespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00053">BasicTypes.h:53</a></div></div>
272
+ <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
273
273
  <div class="ttc" id="CHGBuilder_8cpp_html_a5b49460faf973332d3cbfc561c994c6c"><div class="ttname"><a href="CHGBuilder_8cpp.html#a5b49460faf973332d3cbfc561c994c6c">pureVirtualFunName</a></div><div class="ttdeci">const string pureVirtualFunName</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00053">CHGBuilder.cpp:53</a></div></div>
274
274
  <div class="ttc" id="PEGGrammar_8txt_html_abd600039647a1e73c88e7161fa6eb989"><div class="ttname"><a href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a></div><div class="ttdeci">V M</div><div class="ttdef"><b>Definition:</b> <a href="PEGGrammar_8txt_source.html#l00010">PEGGrammar.txt:10</a></div></div>
275
275
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
@@ -293,15 +293,15 @@ Private Attributes</h2></td></tr>
293
293
  </div><div class="memdoc">
294
294
 
295
295
  <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00058">58</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
296
- <div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">double</span> timeStart, timeEnd;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; timeStart = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> *<a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(i);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; assert(M &amp;&amp; <span class="stringliteral">&quot;module not found?&quot;</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;construct CHGraph From module &quot;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; + M-&gt;getName().str() + <span class="stringliteral">&quot;...\n&quot;</span>));</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a443b021eb2b08b92164515750385b058">readInheritanceMetadataFromModule</a>(*M);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (Module::const_global_iterator I = M-&gt;global_begin(), E = M-&gt;global_end(); I != E; ++I)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a648e97899c16a5634fc8369aef8a031f">buildCHGNodes</a>(&amp;(*I));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (Module::const_iterator <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = M-&gt;begin(), E = M-&gt;end(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a648e97899c16a5634fc8369aef8a031f">buildCHGNodes</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(&amp;(*<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (Module::const_iterator <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = M-&gt;begin(), E = M-&gt;end(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a7420a3a4858ebe861aaa47d76f49ab1f">buildCHGEdges</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(&amp;(*<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a2828eb6b2bd86d6f279967c34da8e7e4">analyzeVTables</a>(*M);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;build Internal Maps ...\n&quot;</span>));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ad9f1c51ba6dc279f22aa671f29257a50">buildInternalMaps</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; timeEnd = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#ab5bd2348e4418fcb2f3b18227fccd836">buildingCHGTime</a> = (timeEnd - timeStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ab13a47f6dd4eedfaa607d36448a1d456">Options::DumpCHA</a>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a29351163649618332394fc72cc35212f">dump</a>(<span class="stringliteral">&quot;cha&quot;</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
296
+ <div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">double</span> timeStart, timeEnd;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; timeStart = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> *<a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(i);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; assert(M &amp;&amp; <span class="stringliteral">&quot;module not found?&quot;</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;construct CHGraph From module &quot;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; + M-&gt;getName().str() + <span class="stringliteral">&quot;...\n&quot;</span>));</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a443b021eb2b08b92164515750385b058">readInheritanceMetadataFromModule</a>(*M);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (Module::const_global_iterator I = M-&gt;global_begin(), E = M-&gt;global_end(); I != E; ++I)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a648e97899c16a5634fc8369aef8a031f">buildCHGNodes</a>(&amp;(*I));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (Module::const_iterator <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = M-&gt;begin(), E = M-&gt;end(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a648e97899c16a5634fc8369aef8a031f">buildCHGNodes</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(&amp;(*<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span> (Module::const_iterator <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = M-&gt;begin(), E = M-&gt;end(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a7420a3a4858ebe861aaa47d76f49ab1f">buildCHGEdges</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(&amp;(*<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a2828eb6b2bd86d6f279967c34da8e7e4">analyzeVTables</a>(*M);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;build Internal Maps ...\n&quot;</span>));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ad9f1c51ba6dc279f22aa671f29257a50">buildInternalMaps</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; timeEnd = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#ab5bd2348e4418fcb2f3b18227fccd836">buildingCHGTime</a> = (timeEnd - timeStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ab13a47f6dd4eedfaa607d36448a1d456">Options::DumpCHA</a>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a29351163649618332394fc72cc35212f">dump</a>(<span class="stringliteral">&quot;cha&quot;</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00041">BasicTypes.h:41</a></div></div>
297
297
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
298
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a142e650415cb81011eb59dadd3cb0637"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">SVF::SVFUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const SVFFunction * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00269">SVFUtil.h:269</a></div></div>
298
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a142e650415cb81011eb59dadd3cb0637"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">SVF::SVFUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const SVFFunction * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00257">SVFUtil.h:257</a></div></div>
299
299
  <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#l00095">LLVMModule.h:95</a></div></div>
300
300
  <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#l00085">SVFBasicTypes.h:85</a></div></div>
301
301
  <div class="ttc" id="classSVF_1_1CHGraph_html_a29351163649618332394fc72cc35212f"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a29351163649618332394fc72cc35212f">SVF::CHGraph::dump</a></div><div class="ttdeci">void dump(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00220">CHG.cpp:220</a></div></div>
302
302
  <div class="ttc" id="classSVF_1_1CHGBuilder_html_ad9f1c51ba6dc279f22aa671f29257a50"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ad9f1c51ba6dc279f22aa671f29257a50">SVF::CHGBuilder::buildInternalMaps</a></div><div class="ttdeci">void buildInternalMaps()</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00158">CHGBuilder.cpp:158</a></div></div>
303
303
  <div class="ttc" id="classSVF_1_1CHGBuilder_html_a443b021eb2b08b92164515750385b058"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a443b021eb2b08b92164515750385b058">SVF::CHGBuilder::readInheritanceMetadataFromModule</a></div><div class="ttdeci">void readInheritanceMetadataFromModule(const Module &amp;M)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00221">CHGBuilder.cpp:221</a></div></div>
304
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
304
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
305
305
  <div class="ttc" id="classSVF_1_1CHGBuilder_html_a2828eb6b2bd86d6f279967c34da8e7e4"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a2828eb6b2bd86d6f279967c34da8e7e4">SVF::CHGBuilder::analyzeVTables</a></div><div class="ttdeci">void analyzeVTables(const Module &amp;M)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00368">CHGBuilder.cpp:368</a></div></div>
306
306
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a8afb7ab3ee4632e78d546e549110e74c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">SVF::LLVMModuleSet::getModule</a></div><div class="ttdeci">Module * getModule(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00100">LLVMModule.h:100</a></div></div>
307
307
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::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>
@@ -337,15 +337,15 @@ Private Attributes</h2></td></tr>
337
337
 
338
338
  <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00133">133</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
339
339
  <div class="fragment"><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* F = fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(F) || <a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(F))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator B = F-&gt;begin(), E = F-&gt;end(); B != E; ++B)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator I = B-&gt;begin(), E = B-&gt;end(); I != E; ++I)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(&amp;(*I)))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(&amp;(*I));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a06db89019c094ad35bea97be1d3b452a">connectInheritEdgeViaCall</a>(fun, cs);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a> *store = SVFUtil::dyn_cast&lt;StoreInst&gt;(&amp;(*I)))</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#acbdf97de6a24cec8d0ae020e3bfb79e6">connectInheritEdgeViaStore</a>(fun, store);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
340
- <div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
340
+ <div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
341
341
  <div class="ttc" id="classSVF_1_1CHGBuilder_html_a06db89019c094ad35bea97be1d3b452a"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a06db89019c094ad35bea97be1d3b452a">SVF::CHGBuilder::connectInheritEdgeViaCall</a></div><div class="ttdeci">void connectInheritEdgeViaCall(const SVFFunction *caller, CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00165">CHGBuilder.cpp:165</a></div></div>
342
342
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad6f9578cdce518141772a11617160da8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">SVF::cppUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00454">CPPUtil.cpp:454</a></div></div>
343
343
  <div class="ttc" id="classSVF_1_1CHGBuilder_html_acbdf97de6a24cec8d0ae020e3bfb79e6"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#acbdf97de6a24cec8d0ae020e3bfb79e6">SVF::CHGBuilder::connectInheritEdgeViaStore</a></div><div class="ttdeci">void connectInheritEdgeViaStore(const SVFFunction *caller, const StoreInst *store)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00194">CHGBuilder.cpp:194</a></div></div>
344
344
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_af19bec54621f4605bac4feaf9f73803c"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">SVF::cppUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00486">CPPUtil.cpp:486</a></div></div>
345
345
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
346
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
346
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
347
347
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
348
- <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00251">BasicTypes.h:251</a></div></div>
348
+ <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00250">BasicTypes.h:250</a></div></div>
349
349
  </div><!-- fragment -->
350
350
  </div>
351
351
  </div>
@@ -367,18 +367,18 @@ Private Attributes</h2></td></tr>
367
367
 
368
368
  <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00090">90</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
369
369
  <div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(globalvalue) &amp;&amp; globalvalue-&gt;getNumOperands() &gt; 0)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a>&gt;(globalvalue-&gt;getOperand(0));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; assert(vtblStruct &amp;&amp; <span class="stringliteral">&quot;Initializer of a vtable not a struct?&quot;</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">string</span> className = <a class="code" href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">getClassNameFromVtblObj</a>(globalvalue);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">getNode</a>(className))</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a8e915f257224b1d8e40d0e4c9b5e1df0">createNode</a>(className);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ei = 0; ei &lt; vtblStruct-&gt;getNumOperands(); ++ei)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a> *vtbl = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">ConstantArray</a>&gt;(vtblStruct-&gt;getOperand(ei));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; assert(vtbl &amp;&amp; <span class="stringliteral">&quot;Element of initializer not an array?&quot;</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; vtbl-&gt;getNumOperands(); ++i)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">isCastConstantExpr</a>(vtbl-&gt;getOperand(i)))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *bitcastValue = ce-&gt;getOperand(0);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(bitcastValue))</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">struct </span>DemangledName dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(func-&gt;getName().str());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">getNode</a>(dname.className))</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#a8e915f257224b1d8e40d0e4c9b5e1df0">createNode</a>(dname.className);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;}</div><div class="ttc" id="classSVF_1_1CHGBuilder_html_a8e915f257224b1d8e40d0e4c9b5e1df0"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a8e915f257224b1d8e40d0e4c9b5e1df0">SVF::CHGBuilder::createNode</a></div><div class="ttdeci">CHNode * createNode(const std::string name)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00242">CHGBuilder.cpp:242</a></div></div>
370
- <div class="ttc" id="namespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00063">BasicTypes.h:63</a></div></div>
370
+ <div class="ttc" id="namespaceSVF_html_a5ae718cba37d8e34d2946530dc098c8e"><div class="ttname"><a href="namespaceSVF.html#a5ae718cba37d8e34d2946530dc098c8e">SVF::ConstantArray</a></div><div class="ttdeci">llvm::ConstantArray ConstantArray</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00064">BasicTypes.h:64</a></div></div>
371
371
  <div class="ttc" id="classSVF_1_1CHGraph_html_a7beec68a60036c93a741a7152e8198b6"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">SVF::CHGraph::getNode</a></div><div class="ttdeci">CHNode * getNode(const std::string name) const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00088">CHG.cpp:88</a></div></div>
372
372
  <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_af983b0e1fbd371d8672e8f03f63084fc"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af983b0e1fbd371d8672e8f03f63084fc">SVF::LLVMUtil::isCastConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isCastConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00217">LLVMUtil.h:217</a></div></div>
373
373
  <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#l00085">SVFBasicTypes.h:85</a></div></div>
374
374
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad83c097f1c77cdf52fc219ef07ee0b1a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00434">CPPUtil.cpp:434</a></div></div>
375
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
375
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
376
376
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
377
377
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00124">CPPUtil.cpp:124</a></div></div>
378
378
  <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>
379
379
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
380
- <div class="ttc" id="namespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00052">BasicTypes.h:52</a></div></div>
381
- <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00060">BasicTypes.h:60</a></div></div>
380
+ <div class="ttc" id="namespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00053">BasicTypes.h:53</a></div></div>
381
+ <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
382
382
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
383
383
  </div><!-- fragment -->
384
384
  </div>
@@ -405,10 +405,10 @@ Private Attributes</h2></td></tr>
405
405
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad6f9578cdce518141772a11617160da8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">SVF::cppUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00454">CPPUtil.cpp:454</a></div></div>
406
406
  <div class="ttc" id="classSVF_1_1CHGraph_html_a7beec68a60036c93a741a7152e8198b6"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">SVF::CHGraph::getNode</a></div><div class="ttdeci">CHNode * getNode(const std::string name) const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00088">CHG.cpp:88</a></div></div>
407
407
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_af19bec54621f4605bac4feaf9f73803c"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">SVF::cppUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00486">CPPUtil.cpp:486</a></div></div>
408
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
408
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
409
409
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
410
410
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::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>
411
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
411
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
412
412
  <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>
413
413
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
414
414
  </div><!-- fragment -->
@@ -435,12 +435,12 @@ Private Attributes</h2></td></tr>
435
435
  <div class="ttc" id="classSVF_1_1CHGraph_html_a083f726d74208c2d8107a75e0d6b3ca9"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a083f726d74208c2d8107a75e0d6b3ca9">SVF::CHGraph::classNameToAncestorsMap</a></div><div class="ttdeci">NameToCHNodesMap classNameToAncestorsMap</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00316">CHG.h:316</a></div></div>
436
436
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::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#l00343">GenericGraph.h:343</a></div></div>
437
437
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::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>
438
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
438
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
439
439
  <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#l00182">GenericGraph.h:182</a></div></div>
440
440
  <div class="ttc" id="classSVF_1_1CHEdge_html_a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c"><div class="ttname"><a href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">SVF::CHEdge::INHERITANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00082">CHG.h:82</a></div></div>
441
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_adbff217477a779de9024d9a5777413a7"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#adbff217477a779de9024d9a5777413a7">SVF::CHGBuilder::CHNodeSetTy</a></div><div class="ttdeci">CHGraph::CHNodeSetTy CHNodeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00042">CHGBuilder.h:42</a></div></div>
441
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_adbff217477a779de9024d9a5777413a7"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#adbff217477a779de9024d9a5777413a7">SVF::CHGBuilder::CHNodeSetTy</a></div><div class="ttdeci">CHGraph::CHNodeSetTy CHNodeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00043">CHGBuilder.h:43</a></div></div>
442
442
  <div class="ttc" id="classSVF_1_1CHGraph_html_ac08f846413b6aed26a1bf39eb865b006"><div class="ttname"><a href="classSVF_1_1CHGraph.html#ac08f846413b6aed26a1bf39eb865b006">SVF::CHGraph::classNameToDescendantsMap</a></div><div class="ttdeci">NameToCHNodesMap classNameToDescendantsMap</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00315">CHG.h:315</a></div></div>
443
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_a727a1737e7290536b29b05e03d8b85ac"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a727a1737e7290536b29b05e03d8b85ac">SVF::CHGBuilder::WorkList</a></div><div class="ttdeci">CHGraph::WorkList WorkList</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00043">CHGBuilder.h:43</a></div></div>
443
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_a727a1737e7290536b29b05e03d8b85ac"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a727a1737e7290536b29b05e03d8b85ac">SVF::CHGBuilder::WorkList</a></div><div class="ttdeci">CHGraph::WorkList WorkList</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00044">CHGBuilder.h:44</a></div></div>
444
444
  <div class="ttc" id="classSVF_1_1CHNode_html_af6e71c1a932464b1b615fc177f5af089"><div class="ttname"><a href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">SVF::CHNode::getName</a></div><div class="ttdeci">std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00123">CHG.h:123</a></div></div>
445
445
  </div><!-- fragment -->
446
446
  </div>
@@ -465,16 +465,16 @@ Private Attributes</h2></td></tr>
465
465
  <div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
466
466
  <div class="ttc" id="classSVF_1_1CHNode_html_a600b63dac83e526c933c141d4e2bcc0c"><div class="ttname"><a href="classSVF_1_1CHNode.html#a600b63dac83e526c933c141d4e2bcc0c">SVF::CHNode::getVTable</a></div><div class="ttdeci">const GlobalValue * getVTable() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00177">CHG.h:177</a></div></div>
467
467
  <div class="ttc" id="cJSON_8cpp_html_ad00efb41ca386db28bacc7aefe79535c"><div class="ttname"><a href="cJSON_8cpp.html#ad00efb41ca386db28bacc7aefe79535c">child</a></div><div class="ttdeci">cJSON * child</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02723">cJSON.cpp:2723</a></div></div>
468
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
468
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
469
469
  <div class="ttc" id="classSVF_1_1CHGraph_html_a5e6502c5baad99c70e1cf56c84ce9474"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a5e6502c5baad99c70e1cf56c84ce9474">SVF::CHGraph::csToCHAVFnsMap</a></div><div class="ttdeci">CallSiteToVFunSetMap csToCHAVFnsMap</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00323">CHG.h:323</a></div></div>
470
470
  <div class="ttc" id="namespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
471
471
  <div class="ttc" id="namespaceSVF_html_ad2b487757f1e1a1d81073120fc1d49c7"><div class="ttname"><a href="namespaceSVF.html#ad2b487757f1e1a1d81073120fc1d49c7">SVF::VFunSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; VFunSet</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00047">CHG.h:47</a></div></div>
472
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_adbff217477a779de9024d9a5777413a7"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#adbff217477a779de9024d9a5777413a7">SVF::CHGBuilder::CHNodeSetTy</a></div><div class="ttdeci">CHGraph::CHNodeSetTy CHNodeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00042">CHGBuilder.h:42</a></div></div>
472
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_adbff217477a779de9024d9a5777413a7"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#adbff217477a779de9024d9a5777413a7">SVF::CHGBuilder::CHNodeSetTy</a></div><div class="ttdeci">CHGraph::CHNodeSetTy CHNodeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00043">CHGBuilder.h:43</a></div></div>
473
473
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00106">SymbolTableInfo.cpp:106</a></div></div>
474
474
  <div class="ttc" id="classSVF_1_1CHGraph_html_ac5f5646db24455609cd86c421774dd3e"><div class="ttname"><a href="classSVF_1_1CHGraph.html#ac5f5646db24455609cd86c421774dd3e">SVF::CHGraph::getVFnsFromVtbls</a></div><div class="ttdeci">void getVFnsFromVtbls(CallSite cs, const VTableSet &amp;vtbls, VFunSet &amp;virtualFunctions) override</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00100">CHG.cpp:100</a></div></div>
475
475
  <div class="ttc" id="namespaceSVF_html_a53511f619c06836ee85acf12153810e2"><div class="ttname"><a href="namespaceSVF.html#a53511f619c06836ee85acf12153810e2">SVF::VTableSet</a></div><div class="ttdeci">Set&lt; const GlobalValue * &gt; VTableSet</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00044">CHG.h:44</a></div></div>
476
476
  <div class="ttc" id="classSVF_1_1CHGraph_html_af3ed2bee5d76e5a848b250950c3be333"><div class="ttname"><a href="classSVF_1_1CHGraph.html#af3ed2bee5d76e5a848b250950c3be333">SVF::CHGraph::csToCHAVtblsMap</a></div><div class="ttdeci">CallSiteToVTableSetMap csToCHAVtblsMap</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00322">CHG.h:322</a></div></div>
477
- <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00251">BasicTypes.h:251</a></div></div>
477
+ <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00250">BasicTypes.h:250</a></div></div>
478
478
  <div class="ttc" id="classSVF_1_1CHGBuilder_html_adc3e52b70db841cb1566a1fb855256b6"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#adc3e52b70db841cb1566a1fb855256b6">SVF::CHGBuilder::getCSClasses</a></div><div class="ttdeci">const CHNodeSetTy &amp; getCSClasses(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00673">CHGBuilder.cpp:673</a></div></div>
479
479
  </div><!-- fragment -->
480
480
  </div>
@@ -520,11 +520,11 @@ Private Attributes</h2></td></tr>
520
520
  <div class="fragment"><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;{</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="comment"> * 1. Divide classes into groups</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="comment"> * 2. Get all virtual functions in a group</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"> * 3. Assign consecutive IDs to virtual functions that have</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="comment"> * the same name (after demangling) in a group</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classSVF_1_1CHGraph.html#ad0f60c720b277c60ed8a8966189bb42b">CHGraph::CHNodeSetTy</a> visitedNodes;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> nit = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; neit = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); nit != neit; ++nit)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = nit-&gt;second;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span> (visitedNodes.find(node) != visitedNodes.end())</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordtype">string</span> className = node-&gt;<a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>();</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="comment"> * get all the classes in a specific group</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="classSVF_1_1CHGraph.html#ad0f60c720b277c60ed8a8966189bb42b">CHGraph::CHNodeSetTy</a> group;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; stack&lt;const CHNode*&gt; nodeStack;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; nodeStack.push(node);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">while</span> (!nodeStack.empty())</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *curnode = nodeStack.top();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; nodeStack.pop();</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; group.insert(curnode);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (visitedNodes.find(curnode) != visitedNodes.end())</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">for</span> (CHEdge::CHEdgeSetTy::const_iterator it = curnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().begin(),</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; eit = curnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().end(); it != eit; ++it)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *tmpnode = (*it)-&gt;getDstNode();</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; nodeStack.push(tmpnode);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; group.insert(tmpnode);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">for</span> (CHEdge::CHEdgeSetTy::const_iterator it = curnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(),</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; eit = curnode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it != eit; ++it)</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *tmpnode = (*it)-&gt;getSrcNode();</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; nodeStack.push(tmpnode);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; group.insert(tmpnode);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; visitedNodes.insert(curnode);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"> * get all virtual functions in a specific group</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; set&lt;const SVFFunction*&gt; virtualFunctions;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">for</span> (CHGraph::CHNodeSetTy::iterator it = group.begin(),</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; eit = group.end(); it != eit; ++it)</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keyword">const</span> vector&lt;CHNode::FuncVector&gt; &amp;vecs = (*it)-&gt;<a class="code" href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">getVirtualFunctionVectors</a>();</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">for</span> (vector&lt;CHNode::FuncVector&gt;::const_iterator vit = vecs.begin(),</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; veit = vecs.end(); vit != veit; ++vit)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">for</span> (vector&lt;const SVFFunction*&gt;::const_iterator fit = (*vit).begin(),</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; feit = (*vit).end(); fit != feit; ++fit)</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; virtualFunctions.insert(*fit);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; }</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="comment"> * build a set of pairs of demangled function name and function in a</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="comment"> * specific group, items in the set will be sort by the first item of the</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="comment"> * pair, so all the virtual functions in a group will be sorted by the</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment"> * demangled function name</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"> * &lt;f, A::f&gt;</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment"> * &lt;f, B::f&gt;</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="comment"> * &lt;g, A::g&gt;</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="comment"> * &lt;g, B::g&gt;</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment"> * &lt;g, C::g&gt;</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment"> * &lt;~A, A::~A&gt;</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="comment"> * &lt;~B, B::~B&gt;</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="comment"> * &lt;~C, C::~C&gt;</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="comment"> * ...</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; set&lt;pair&lt;string, const SVFFunction*&gt; &gt; fNameSet;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">for</span> (set&lt;const SVFFunction*&gt;::iterator fit = virtualFunctions.begin(),</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; feit = virtualFunctions.end(); fit != feit; ++fit)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f = *fit;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keyword">struct </span>DemangledName dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(f-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>());</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; fNameSet.insert(pair&lt;string, const SVFFunction*&gt;(dname.funcName, f));</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">set</span>&lt;pair&lt;string, const SVFFunction*&gt;&gt;::iterator it = fNameSet.begin(),</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; eit = fNameSet.end(); it != eit; ++it)</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a70a2bab82563a910d32a9169030596c0">virtualFunctionToIDMap</a>[it-&gt;second] = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#ab2d60bc836482fb98142da6151a91270">vfID</a>++;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::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>
521
521
  <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#l00186">GenericGraph.h:186</a></div></div>
522
522
  <div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
523
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
523
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
524
524
  <div class="ttc" id="classSVF_1_1CHGraph_html_ad0f60c720b277c60ed8a8966189bb42b"><div class="ttname"><a href="classSVF_1_1CHGraph.html#ad0f60c720b277c60ed8a8966189bb42b">SVF::CHGraph::CHNodeSetTy</a></div><div class="ttdeci">Set&lt; const CHNode * &gt; CHNodeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00213">CHG.h:213</a></div></div>
525
525
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::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#l00343">GenericGraph.h:343</a></div></div>
526
526
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::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>
527
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
527
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
528
528
  <div class="ttc" id="classSVF_1_1CHGraph_html_a70a2bab82563a910d32a9169030596c0"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a70a2bab82563a910d32a9169030596c0">SVF::CHGraph::virtualFunctionToIDMap</a></div><div class="ttdeci">Map&lt; const SVFFunction *, u32_t &gt; virtualFunctionToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00321">CHG.h:321</a></div></div>
529
529
  <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#l00182">GenericGraph.h:182</a></div></div>
530
530
  <div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00253">SVFBasicTypes.h:253</a></div></div>
@@ -565,15 +565,15 @@ Private Attributes</h2></td></tr>
565
565
  <div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs) == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs)-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = callerfun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">struct </span>DemangledName dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(caller-&gt;getName().str());</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> ((<a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(caller) &amp;&amp; <a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(callee)) || (<a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(caller) &amp;&amp; <a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(callee)))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>() &lt; 1 || (cs.<a class="code" href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">arg_size</a>() &lt; 2 &amp;&amp; cs.<a class="code" href="classSVF_1_1CallSite.html#a15a98a5e0fe91f0e239a052acd029cc2">paramHasAttr</a>(0, llvm::Attribute::StructRet)))</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *csThisPtr = <a class="code" href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">getVCallThisPtr</a>(cs);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">//const Argument *consThisPtr = getConstructorThisPtr(caller);</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">//bool samePtr = isSameThisPtrInConstructor(consThisPtr, csThisPtr);</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">bool</span> samePtrTrue = <span class="keyword">true</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (csThisPtr != <span class="keyword">nullptr</span> &amp;&amp; samePtrTrue)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">struct </span>DemangledName basename = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(callee-&gt;getName().str());</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(csThisPtr) &amp;&amp;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; basename.className.size() &gt; 0)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">addEdge</a>(dname.className, basename.className, <a class="code" href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">CHEdge::INHERITANCE</a>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
566
566
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad6f9578cdce518141772a11617160da8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">SVF::cppUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00454">CPPUtil.cpp:454</a></div></div>
567
567
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_af19bec54621f4605bac4feaf9f73803c"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">SVF::cppUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00486">CPPUtil.cpp:486</a></div></div>
568
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
568
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
569
569
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
570
570
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a7c9507812041b5de8dbbca5b602fefbd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">SVF::cppUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00315">CPPUtil.cpp:315</a></div></div>
571
571
  <div class="ttc" id="classSVF_1_1CHEdge_html_a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c"><div class="ttname"><a href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">SVF::CHEdge::INHERITANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00082">CHG.h:82</a></div></div>
572
572
  <div class="ttc" id="classSVF_1_1CHGraph_html_a3867db3e76f068bd8c4399b103dcd0b7"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">SVF::CHGraph::addEdge</a></div><div class="ttdeci">void addEdge(const std::string className, const std::string baseClassName, CHEdge::CHEDGETYPE edgeType)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00073">CHG.cpp:73</a></div></div>
573
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00281">SVFUtil.h:281</a></div></div>
574
- <div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00280">BasicTypes.h:280</a></div></div>
575
- <div class="ttc" id="classSVF_1_1CallSite_html_a15a98a5e0fe91f0e239a052acd029cc2"><div class="ttname"><a href="classSVF_1_1CallSite.html#a15a98a5e0fe91f0e239a052acd029cc2">SVF::CallSite::paramHasAttr</a></div><div class="ttdeci">bool paramHasAttr(unsigned ArgNo, llvm::Attribute::AttrKind Kind) const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00312">BasicTypes.h:312</a></div></div>
576
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00152">BasicTypes.h:152</a></div></div>
573
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00269">SVFUtil.h:269</a></div></div>
574
+ <div class="ttc" id="classSVF_1_1CallSite_html_a145676880fce313b4634d14118476c27"><div class="ttname"><a href="classSVF_1_1CallSite.html#a145676880fce313b4634d14118476c27">SVF::CallSite::arg_size</a></div><div class="ttdeci">unsigned arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00279">BasicTypes.h:279</a></div></div>
575
+ <div class="ttc" id="classSVF_1_1CallSite_html_a15a98a5e0fe91f0e239a052acd029cc2"><div class="ttname"><a href="classSVF_1_1CallSite.html#a15a98a5e0fe91f0e239a052acd029cc2">SVF::CallSite::paramHasAttr</a></div><div class="ttdeci">bool paramHasAttr(unsigned ArgNo, llvm::Attribute::AttrKind Kind) const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00311">BasicTypes.h:311</a></div></div>
576
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
577
577
  <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>
578
578
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
579
579
  </div><!-- fragment -->
@@ -607,13 +607,13 @@ Private Attributes</h2></td></tr>
607
607
 
608
608
  <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00194">194</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
609
609
  <div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;{</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">struct </span>DemangledName dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(caller-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>());</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(storeInst-&gt;getValueOperand()))</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (ce-&gt;getOpcode() == Instruction::BitCast)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *bitcastval = ce-&gt;getOperand(0);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *bcce = SVFUtil::dyn_cast&lt;ConstantExpr&gt;(bitcastval))</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">if</span> (bcce-&gt;getOpcode() == Instruction::GetElementPtr)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *gepval = bcce-&gt;getOperand(0);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(gepval))</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">string</span> vtblClassName = <a class="code" href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">getClassNameFromVtblObj</a>(gepval);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (vtblClassName.size() &gt; 0 &amp;&amp; dname.className.compare(vtblClassName) != 0)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">addEdge</a>(dname.className, vtblClassName, <a class="code" href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">CHEdge::INHERITANCE</a>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad83c097f1c77cdf52fc219ef07ee0b1a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00434">CPPUtil.cpp:434</a></div></div>
610
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
610
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
611
611
  <div class="ttc" id="classSVF_1_1CHEdge_html_a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c"><div class="ttname"><a href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">SVF::CHEdge::INHERITANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00082">CHG.h:82</a></div></div>
612
612
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00124">CPPUtil.cpp:124</a></div></div>
613
613
  <div class="ttc" id="classSVF_1_1CHGraph_html_a3867db3e76f068bd8c4399b103dcd0b7"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">SVF::CHGraph::addEdge</a></div><div class="ttdeci">void addEdge(const std::string className, const std::string baseClassName, CHEdge::CHEDGETYPE edgeType)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00073">CHG.cpp:73</a></div></div>
614
614
  <div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00253">SVFBasicTypes.h:253</a></div></div>
615
615
  <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>
616
- <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00060">BasicTypes.h:60</a></div></div>
616
+ <div class="ttc" id="namespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
617
617
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
618
618
  </div><!-- fragment -->
619
619
  </div>
@@ -642,7 +642,7 @@ Private Attributes</h2></td></tr>
642
642
  <div class="ttc" id="classSVF_1_1CHNode_html_a00343177422c8d84d707432d0c483438"><div class="ttname"><a href="classSVF_1_1CHNode.html#a00343177422c8d84d707432d0c483438">SVF::CHNode::setTemplate</a></div><div class="ttdeci">void setTemplate()</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00149">CHG.h:149</a></div></div>
643
643
  <div class="ttc" id="classSVF_1_1CHGraph_html_a7beec68a60036c93a741a7152e8198b6"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">SVF::CHGraph::getNode</a></div><div class="ttdeci">CHNode * getNode(const std::string name) const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00088">CHG.cpp:88</a></div></div>
644
644
  <div class="ttc" id="classSVF_1_1CHEdge_html_a26280c3b724551036f7e3ba2b5922676a8721eaefd547d6ba5229463d644815f4"><div class="ttname"><a href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a8721eaefd547d6ba5229463d644815f4">SVF::CHEdge::INSTANTCE</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00083">CHG.h:83</a></div></div>
645
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
645
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
646
646
  <div class="ttc" id="classSVF_1_1CHGraph_html_a5ee7e559425045f3af5c35ea6d6f03ee"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a5ee7e559425045f3af5c35ea6d6f03ee">SVF::CHGraph::addInstances</a></div><div class="ttdeci">void addInstances(const std::string templateName, CHNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00262">CHG.h:262</a></div></div>
647
647
  <div class="ttc" id="classSVF_1_1CHGraph_html_a3867db3e76f068bd8c4399b103dcd0b7"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">SVF::CHGraph::addEdge</a></div><div class="ttdeci">void addEdge(const std::string className, const std::string baseClassName, CHEdge::CHEDGETYPE edgeType)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00073">CHG.cpp:73</a></div></div>
648
648
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::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>
@@ -674,7 +674,7 @@ Private Attributes</h2></td></tr>
674
674
  <div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
675
675
  <div class="ttc" id="classSVF_1_1CHGraph_html_a7beec68a60036c93a741a7152e8198b6"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">SVF::CHGraph::getNode</a></div><div class="ttdeci">CHNode * getNode(const std::string name) const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00088">CHG.cpp:88</a></div></div>
676
676
  <div class="ttc" id="classSVF_1_1CHGraph_html_ad0f60c720b277c60ed8a8966189bb42b"><div class="ttname"><a href="classSVF_1_1CHGraph.html#ad0f60c720b277c60ed8a8966189bb42b">SVF::CHGraph::CHNodeSetTy</a></div><div class="ttdeci">Set&lt; const CHNode * &gt; CHNodeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00213">CHG.h:213</a></div></div>
677
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
677
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
678
678
  <div class="ttc" id="classSVF_1_1CHGraph_html_a7ef9982d89a4932883bd58bc49ad9986"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7ef9982d89a4932883bd58bc49ad9986">SVF::CHGraph::csToClassesMap</a></div><div class="ttdeci">CallSiteToCHNodesMap csToClassesMap</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00319">CHG.h:319</a></div></div>
679
679
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3bed7bc0a0ae580841ca049f91690ff7"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">SVF::cppUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00520">CPPUtil.cpp:520</a></div></div>
680
680
  <div class="ttc" id="classSVF_1_1CHGBuilder_html_a444dba7f18bee07a6cad51f88bb63e30"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#a444dba7f18bee07a6cad51f88bb63e30">SVF::CHGBuilder::getInstancesAndDescendants</a></div><div class="ttdeci">const CHGraph::CHNodeSetTy &amp; getInstancesAndDescendants(const std::string className)</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8cpp_source.html#l00303">CHGBuilder.cpp:303</a></div></div>
@@ -701,10 +701,10 @@ Private Attributes</h2></td></tr>
701
701
  <div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; CHGraph::NameToCHNodesMap::const_iterator it = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#aaec4bdde66e4a7a63ea3f3c6ec0bd045">classNameToInstAndDescsMap</a>.find(className);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#aaec4bdde66e4a7a63ea3f3c6ec0bd045">classNameToInstAndDescsMap</a>.end())</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#aaec4bdde66e4a7a63ea3f3c6ec0bd045">classNameToInstAndDescsMap</a>[className] = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a26f89a9b269cad3fc894110d25598715">getDescendants</a>(className);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">getNode</a>(className)-&gt;<a class="code" href="classSVF_1_1CHNode.html#aff23fda93401c60422a4a5a08d77d749">isTemplate</a>())</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHGBuilder.html#adbff217477a779de9024d9a5777413a7">CHNodeSetTy</a>&amp; instances = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a894a69fa143d3f460d433646a0521b6f">getInstances</a>(className);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span> (CHNodeSetTy::const_iterator it = instances.begin(), eit = instances.end(); it != eit; ++it)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = *it;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#aaec4bdde66e4a7a63ea3f3c6ec0bd045">classNameToInstAndDescsMap</a>[className].insert(node);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHGBuilder.html#adbff217477a779de9024d9a5777413a7">CHNodeSetTy</a>&amp; instance_descendants = <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a26f89a9b269cad3fc894110d25598715">getDescendants</a>(node-&gt;<a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>());</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">for</span> (CHNodeSetTy::const_iterator dit =</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; instance_descendants.begin(), deit =</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; instance_descendants.end(); dit != deit; ++dit)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#aaec4bdde66e4a7a63ea3f3c6ec0bd045">classNameToInstAndDescsMap</a>[className].insert(*dit);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#aaec4bdde66e4a7a63ea3f3c6ec0bd045">classNameToInstAndDescsMap</a>[className];</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;}</div><div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
702
702
  <div class="ttc" id="classSVF_1_1CHGraph_html_a7beec68a60036c93a741a7152e8198b6"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a7beec68a60036c93a741a7152e8198b6">SVF::CHGraph::getNode</a></div><div class="ttdeci">CHNode * getNode(const std::string name) const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00088">CHG.cpp:88</a></div></div>
703
703
  <div class="ttc" id="classSVF_1_1CHGraph_html_aaec4bdde66e4a7a63ea3f3c6ec0bd045"><div class="ttname"><a href="classSVF_1_1CHGraph.html#aaec4bdde66e4a7a63ea3f3c6ec0bd045">SVF::CHGraph::classNameToInstAndDescsMap</a></div><div class="ttdeci">NameToCHNodesMap classNameToInstAndDescsMap</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00317">CHG.h:317</a></div></div>
704
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
704
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
705
705
  <div class="ttc" id="classSVF_1_1CHGraph_html_a894a69fa143d3f460d433646a0521b6f"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a894a69fa143d3f460d433646a0521b6f">SVF::CHGraph::getInstances</a></div><div class="ttdeci">const CHNodeSetTy &amp; getInstances(const std::string className)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00275">CHG.h:275</a></div></div>
706
706
  <div class="ttc" id="classSVF_1_1CHNode_html_aff23fda93401c60422a4a5a08d77d749"><div class="ttname"><a href="classSVF_1_1CHNode.html#aff23fda93401c60422a4a5a08d77d749">SVF::CHNode::isTemplate</a></div><div class="ttdeci">bool isTemplate() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00161">CHG.h:161</a></div></div>
707
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_adbff217477a779de9024d9a5777413a7"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#adbff217477a779de9024d9a5777413a7">SVF::CHGBuilder::CHNodeSetTy</a></div><div class="ttdeci">CHGraph::CHNodeSetTy CHNodeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00042">CHGBuilder.h:42</a></div></div>
707
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_adbff217477a779de9024d9a5777413a7"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#adbff217477a779de9024d9a5777413a7">SVF::CHGBuilder::CHNodeSetTy</a></div><div class="ttdeci">CHGraph::CHNodeSetTy CHNodeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00043">CHGBuilder.h:43</a></div></div>
708
708
  <div class="ttc" id="classSVF_1_1CHGraph_html_a26f89a9b269cad3fc894110d25598715"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a26f89a9b269cad3fc894110d25598715">SVF::CHGraph::getDescendants</a></div><div class="ttdeci">const CHNodeSetTy &amp; getDescendants(const std::string className)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00271">CHG.h:271</a></div></div>
709
709
  <div class="ttc" id="classSVF_1_1CHNode_html_af6e71c1a932464b1b615fc177f5af089"><div class="ttname"><a href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">SVF::CHNode::getName</a></div><div class="ttdeci">std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00123">CHG.h:123</a></div></div>
710
710
  </div><!-- fragment -->
@@ -727,12 +727,12 @@ Private Attributes</h2></td></tr>
727
727
  </div><div class="memdoc">
728
728
 
729
729
  <p class="definition">Definition at line <a class="el" href="CHGBuilder_8cpp_source.html#l00221">221</a> of file <a class="el" href="CHGBuilder_8cpp_source.html">CHGBuilder.cpp</a>.</p>
730
- <div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;{</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">for</span> (Module::const_named_metadata_iterator mdit = <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>.named_metadata_begin(),</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; mdeit = <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>.named_metadata_end(); mdit != mdeit; ++mdit)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a> *md = &amp;*mdit;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordtype">string</span> mdname = md-&gt;getName().str();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (mdname.compare(0, 15, <span class="stringliteral">&quot;__cxx_bases_of_&quot;</span>) != 0)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">string</span> className = mdname.substr(15);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">for</span> (NamedMDNode::const_op_iterator opit = md-&gt;op_begin(),</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; opeit = md-&gt;op_end(); opit != opeit; ++opit)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = *opit;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a> &amp;mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordtype">string</span> baseName = mdstr.getString().str();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">addEdge</a>(className, baseName, <a class="code" href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">CHEdge::INHERITANCE</a>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a28eec26ec8edaa5e96aecfeb01f6c0d4"><div class="ttname"><a href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">SVF::MDString</a></div><div class="ttdeci">llvm::MDString MDString</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00047">BasicTypes.h:47</a></div></div>
731
- <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00039">CHGBuilder.h:39</a></div></div>
730
+ <div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;{</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">for</span> (Module::const_named_metadata_iterator mdit = <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>.named_metadata_begin(),</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; mdeit = <a class="code" href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a>.named_metadata_end(); mdit != mdeit; ++mdit)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a> *md = &amp;*mdit;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordtype">string</span> mdname = md-&gt;getName().str();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (mdname.compare(0, 15, <span class="stringliteral">&quot;__cxx_bases_of_&quot;</span>) != 0)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">string</span> className = mdname.substr(15);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">for</span> (NamedMDNode::const_op_iterator opit = md-&gt;op_begin(),</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; opeit = md-&gt;op_end(); opit != opeit; ++opit)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = *opit;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a> &amp;mdstr = SVFUtil::cast&lt;MDString&gt;(N-&gt;getOperand(0));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordtype">string</span> baseName = mdstr.getString().str();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">chg</a>-&gt;<a class="code" href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">addEdge</a>(className, baseName, <a class="code" href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">CHEdge::INHERITANCE</a>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a28eec26ec8edaa5e96aecfeb01f6c0d4"><div class="ttname"><a href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">SVF::MDString</a></div><div class="ttdeci">llvm::MDString MDString</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00048">BasicTypes.h:48</a></div></div>
731
+ <div class="ttc" id="classSVF_1_1CHGBuilder_html_ab3471cc9afba5976c7e5fbd07dfb22dc"><div class="ttname"><a href="classSVF_1_1CHGBuilder.html#ab3471cc9afba5976c7e5fbd07dfb22dc">SVF::CHGBuilder::chg</a></div><div class="ttdeci">CHGraph * chg</div><div class="ttdef"><b>Definition:</b> <a href="CHGBuilder_8h_source.html#l00040">CHGBuilder.h:40</a></div></div>
732
732
  <div class="ttc" id="classSVF_1_1CHEdge_html_a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c"><div class="ttname"><a href="classSVF_1_1CHEdge.html#a26280c3b724551036f7e3ba2b5922676a78df5157ac61c49a724af5aa03d36d0c">SVF::CHEdge::INHERITANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00082">CHG.h:82</a></div></div>
733
733
  <div class="ttc" id="classSVF_1_1CHGraph_html_a3867db3e76f068bd8c4399b103dcd0b7"><div class="ttname"><a href="classSVF_1_1CHGraph.html#a3867db3e76f068bd8c4399b103dcd0b7">SVF::CHGraph::addEdge</a></div><div class="ttdeci">void addEdge(const std::string className, const std::string baseClassName, CHEdge::CHEDGETYPE edgeType)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00073">CHG.cpp:73</a></div></div>
734
- <div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
735
- <div class="ttc" id="namespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
734
+ <div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
735
+ <div class="ttc" id="namespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00098">BasicTypes.h:98</a></div></div>
736
736
  <div class="ttc" id="PEGGrammar_8txt_html_abd600039647a1e73c88e7161fa6eb989"><div class="ttname"><a href="PEGGrammar_8txt.html#abd600039647a1e73c88e7161fa6eb989">M</a></div><div class="ttdeci">V M</div><div class="ttdef"><b>Definition:</b> <a href="PEGGrammar_8txt_source.html#l00010">PEGGrammar.txt:10</a></div></div>
737
737
  </div><!-- fragment -->
738
738
  </div>
@@ -758,7 +758,7 @@ Private Attributes</h2></td></tr>
758
758
  </table>
759
759
  </div><div class="memdoc">
760
760
 
761
- <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00039">39</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
761
+ <p class="definition">Definition at line <a class="el" href="CHGBuilder_8h_source.html#l00040">40</a> of file <a class="el" href="CHGBuilder_8h_source.html">CHGBuilder.h</a>.</p>
762
762
 
763
763
  </div>
764
764
  </div>