15 #ifndef LLVM_CLANG_AST_VTTBUILDER_H
16 #define LLVM_CLANG_AST_VTTBUILDER_H
23 #include "llvm/ADT/SetVector.h"
29 llvm::PointerIntPair<const CXXRecordDecl *, 1, bool> BaseAndIsVirtual;
35 : BaseAndIsVirtual(Base, BaseIsVirtual), BaseOffset(BaseOffset) {}
37 : BaseAndIsVirtual(Base.
getBase(), BaseIsVirtual),
41 return BaseAndIsVirtual.getPointer();
49 return BaseAndIsVirtual.getInt();
63 : VTableIndex(VTableIndex), VTableBase(VTableBase) {}
87 typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
89 typedef llvm::DenseMap<BaseSubobject, uint64_t> AddressPointsMapTy;
92 llvm::DenseMap<BaseSubobject, uint64_t> SubVTTIndicies;
96 llvm::DenseMap<BaseSubobject, uint64_t> SecondaryVirtualPointerIndices;
99 bool GenerateDefinition;
114 bool BaseIsMorallyVirtual,
115 uint64_t VTableIndex,
117 VisitedVirtualBasesSetTy &VBases);
122 uint64_t VTableIndex);
127 VisitedVirtualBasesSetTy &VBases);
135 bool GenerateDefinition);
139 return VTTComponents;
149 return SubVTTIndicies;
153 const llvm::DenseMap<BaseSubobject, uint64_t> &
155 return SecondaryVirtualPointerIndices;
VTTVTable(const CXXRecordDecl *Base, CharUnits BaseOffset, bool BaseIsVirtual)
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
VTTVTable(BaseSubobject Base, bool BaseIsVirtual)
Enums/classes describing ABI related information about constructors, destructors and thunks...
const llvm::DenseMap< BaseSubobject, uint64_t > & getSubVTTIndicies() const
Returns a reference to the sub-VTT indices.
VTTComponent(uint64_t VTableIndex, BaseSubobject VTableBase)
const CXXRecordDecl * getBase() const
const VTTVTablesVectorTy & getVTTVTables() const
CharUnits getBaseOffset() const
VTTBuilder(ASTContext &Ctx, const CXXRecordDecl *MostDerivedClass, bool GenerateDefinition)
const VTTComponentsVectorTy & getVTTComponents() const
Class for building VTT layout information.
const llvm::DenseMap< BaseSubobject, uint64_t > & getSecondaryVirtualPointerIndices() const
Returns a reference to the secondary virtual pointer indices.
Represents a C++ struct/union/class.
BaseSubobject getBaseSubobject() const