diff options
author | John McCall <rjmccall@apple.com> | 2011-05-17 21:05:49 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2011-05-17 21:05:49 +0000 |
commit | 3597b6340c00dd2bf720b0f66c43b5698e2d04b6 (patch) | |
tree | 24b7758b453740985ecbda552fd225a271bde8fb | |
parent | c7e291b3541bce7a28aadf53eae00b72b40f4e86 (diff) | |
download | bcm5719-llvm-3597b6340c00dd2bf720b0f66c43b5698e2d04b6.tar.gz bcm5719-llvm-3597b6340c00dd2bf720b0f66c43b5698e2d04b6.zip |
Revert r131434, my commit disabling the complete-object constructor
optimization for abstract classes; there was a misunderstanding, and
it turns out that there are no kexts which rely on this.
llvm-svn: 131489
-rw-r--r-- | clang/lib/CodeGen/CGCXX.cpp | 3 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/apple-kext-symbols.cpp | 20 |
2 files changed, 1 insertions, 22 deletions
diff --git a/clang/lib/CodeGen/CGCXX.cpp b/clang/lib/CodeGen/CGCXX.cpp index 09e0aa63b6d..f6fc202eaae 100644 --- a/clang/lib/CodeGen/CGCXX.cpp +++ b/clang/lib/CodeGen/CGCXX.cpp @@ -176,9 +176,8 @@ bool CodeGenModule::TryEmitDefinitionAsAlias(GlobalDecl AliasDecl, void CodeGenModule::EmitCXXConstructors(const CXXConstructorDecl *D) { // The constructor used for constructing this as a complete class; // constucts the virtual bases, then calls the base constructor. - if (!D->getParent()->isAbstract() || getLangOptions().AppleKext) { + if (!D->getParent()->isAbstract()) { // We don't need to emit the complete ctor if the class is abstract. - // But kexts somehow manage to violate this assumption. EmitGlobal(GlobalDecl(D, Ctor_Complete)); } diff --git a/clang/test/CodeGenCXX/apple-kext-symbols.cpp b/clang/test/CodeGenCXX/apple-kext-symbols.cpp deleted file mode 100644 index f9aeafc3ada..00000000000 --- a/clang/test/CodeGenCXX/apple-kext-symbols.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -emit-llvm -o - %s | FileCheck %s - -// rdar://problem/9429976 -namespace test0 { - struct A { - A(); - virtual ~A(); - virtual void foo() = 0; - }; - - // CHECK: define void @_ZN5test01AC1Ev( - // CHECK: define void @_ZN5test01AC2Ev( - A::A() {} - - // CHECK: define void @_ZN5test01AD0Ev( - // CHECK: define void @_ZN5test01AD1Ev( - // CHECK: define void @_ZN5test01AD2Ev( - A::~A() {} -} - |