summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-02-23 00:48:20 +0000
committerJohn McCall <rjmccall@apple.com>2010-02-23 00:48:20 +0000
commitf8ff7b9fd1d087c421d0eb1c9cb3104739f7c33a (patch)
treef229d2b5be17ec853b0f84115c68efa65064aa98 /clang/test/CodeGenCXX/vtable-pointer-initialization.cpp
parent886915e3bb7fef8666be60f278dbe982db272870 (diff)
downloadbcm5719-llvm-f8ff7b9fd1d087c421d0eb1c9cb3104739f7c33a.tar.gz
bcm5719-llvm-f8ff7b9fd1d087c421d0eb1c9cb3104739f7c33a.zip
Perform two more constructor/destructor code-size optimizations:
1) emit base destructors as aliases to their unique base class destructors under some careful conditions. This is enabled for the same targets that can support complete-to-base aliases, i.e. not darwin. 2) Emit non-variadic complete constructors for classes with no virtual bases as calls to the base constructor. This is enabled on all targets and in theory can trigger in situations that the alias optimization can't (mostly involving virtual bases, mostly not yet supported). These are bundled together because I didn't think it worthwhile to split them, not because they really need to be. llvm-svn: 96842
Diffstat (limited to 'clang/test/CodeGenCXX/vtable-pointer-initialization.cpp')
-rw-r--r--clang/test/CodeGenCXX/vtable-pointer-initialization.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp b/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp
index ebe531529b8..75620ab8e62 100644
--- a/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp
+++ b/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp
@@ -42,13 +42,16 @@ struct B : Base {
void f() { B b; }
// CHECK: define linkonce_odr void @_ZN1BC1Ev(
-// CHECK: call void @_ZN4BaseC2Ev(
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2)
-// CHECK: call void @_ZN5FieldC1Ev
-// CHECK: ret void
+// CHECK: call void @_ZN1BC2Ev(
// CHECK: define linkonce_odr void @_ZN1BD1Ev(
// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2)
// CHECK: call void @_ZN5FieldD1Ev(
// CHECK: call void @_ZN4BaseD2Ev(
// CHECK: ret void
+
+// CHECK: define linkonce_odr void @_ZN1BC2Ev(
+// CHECK: call void @_ZN4BaseC2Ev(
+// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2)
+// CHECK: call void @_ZN5FieldC1Ev
+// CHECK: ret void
OpenPOWER on IntegriCloud