diff options
| author | Anders Carlsson <andersca@mac.com> | 2011-05-16 04:08:36 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2011-05-16 04:08:36 +0000 |
| commit | d6f1518cc905cffa641a0ced3be943664cb5e8e6 (patch) | |
| tree | 8661cdd3bfe4ecba1a76ce8787881ee68f659fc6 /clang/lib/CodeGen | |
| parent | 2050af838d717c1bc06fd1f340f8839c092e694a (diff) | |
| download | bcm5719-llvm-d6f1518cc905cffa641a0ced3be943664cb5e8e6.tar.gz bcm5719-llvm-d6f1518cc905cffa641a0ced3be943664cb5e8e6.zip | |
Fix another regression from the "skip vtable pointer initialization"
optimization. Make sure to require a vtable when trying to get the address
of a VTT, otherwise we would never end up emitting the VTT.
llvm-svn: 131400
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGClass.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CGVTT.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CGVTables.cpp | 2 |
3 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index 8b4684cb387..0d2500894e9 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/lib/CodeGen/CGClass.cpp @@ -812,7 +812,7 @@ FieldHasTrivialDestructorBody(ASTContext &Context, /// CanSkipVTablePointerInitialization - Check whether we need to initialize /// any vtable pointers before calling this destructor. static bool CanSkipVTablePointerInitialization(ASTContext &Context, - const CXXDestructorDecl *Dtor) { + const CXXDestructorDecl *Dtor) { if (!Dtor->hasTrivialBody()) return false; diff --git a/clang/lib/CodeGen/CGVTT.cpp b/clang/lib/CodeGen/CGVTT.cpp index a6849f8f3d2..aefc41e5000 100644 --- a/clang/lib/CodeGen/CGVTT.cpp +++ b/clang/lib/CodeGen/CGVTT.cpp @@ -411,6 +411,8 @@ llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) { Out.flush(); llvm::StringRef Name = OutName.str(); + ComputeVTableRelatedInformation(RD, /*VTableRequired=*/true); + VTTBuilder Builder(CGM, RD, /*GenerateDefinition=*/false); const llvm::Type *Int8PtrTy = diff --git a/clang/lib/CodeGen/CGVTables.cpp b/clang/lib/CodeGen/CGVTables.cpp index c7ef9c74183..9ac5e67ada4 100644 --- a/clang/lib/CodeGen/CGVTables.cpp +++ b/clang/lib/CodeGen/CGVTables.cpp @@ -3175,7 +3175,7 @@ llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTable(const CXXRecordDecl *RD) { Out.flush(); llvm::StringRef Name = OutName.str(); - ComputeVTableRelatedInformation(RD, true); + ComputeVTableRelatedInformation(RD, /*VTableRequired=*/true); const llvm::Type *Int8PtrTy = llvm::Type::getInt8PtrTy(CGM.getLLVMContext()); llvm::ArrayType *ArrayType = |

