diff options
author | Mike Stump <mrs@apple.com> | 2009-08-16 01:46:26 +0000 |
---|---|---|
committer | Mike Stump <mrs@apple.com> | 2009-08-16 01:46:26 +0000 |
commit | 276b9f1d814f4f6551cc3000590759a34185d6da (patch) | |
tree | eb19d6f382e4d9ab6ef27809dc9f5498ca43df61 /lib/CodeGen/CodeGenFunction.h | |
parent | 089c2602ebaccdda271beaabdd32575b354d4d09 (diff) |
Cleanups and fixups for calculating the virtual base offsets. WIP.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79156 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | lib/CodeGen/CodeGenFunction.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h index b4469c503b..3110ac00af 100644 --- a/lib/CodeGen/CodeGenFunction.h +++ b/lib/CodeGen/CodeGenFunction.h @@ -362,19 +362,26 @@ public: void FinishFunction(SourceLocation EndLoc=SourceLocation()); llvm::Constant *GenerateRtti(const CXXRecordDecl *RD); + void GenerateVBaseOffsets(std::vector<llvm::Constant *> &methods, + const CXXRecordDecl *RD, + llvm::SmallSet<const CXXRecordDecl *, 32> &SeenVBase, + uint64_t Offset, + const ASTRecordLayout &Layout, llvm::Type *Ptr8Ty); void GenerateVcalls(std::vector<llvm::Constant *> &methods, const CXXRecordDecl *RD, llvm::Type *Ptr8Ty); void GenerateMethods(std::vector<llvm::Constant *> &methods, const CXXRecordDecl *RD, llvm::Type *Ptr8Ty); -void GenerateVtableForVBases(const CXXRecordDecl *RD, - llvm::Constant *rtti, - std::vector<llvm::Constant *> &methods, + void GenerateVtableForVBases(const CXXRecordDecl *RD, + const CXXRecordDecl *Class, + llvm::Constant *rtti, + std::vector<llvm::Constant *> &methods, llvm::SmallSet<const CXXRecordDecl *, 32> &IndirectPrimary); void GenerateVtableForBase(const CXXRecordDecl *RD, + bool ForPrimary, + int64_t Offset, const CXXRecordDecl *Class, llvm::Constant *rtti, std::vector<llvm::Constant *> &methods, - bool isPrimary, bool ForVirtualBase, llvm::SmallSet<const CXXRecordDecl *, 32> &IndirectPrimary); llvm::Value *GenerateVtable(const CXXRecordDecl *RD); |