diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-08-22 17:20:18 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-08-22 17:20:18 +0000 |
commit | 8c3e554d00d456d5093c21ce8a0c205461279aab (patch) | |
tree | 66f1333480789c8fb62e06dd67cf0ddc21764bac /test/CodeGenCXX/value-init.cpp | |
parent | 759e41baf6a95c3a265970b6bf1c97c233fd28b0 (diff) |
Preserve the zero-initialization and construction-kind settings when
instantiating CXXConstructExpr expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111780 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/value-init.cpp')
-rw-r--r-- | test/CodeGenCXX/value-init.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/CodeGenCXX/value-init.cpp b/test/CodeGenCXX/value-init.cpp index 6977e73e8b..c4eb1c8990 100644 --- a/test/CodeGenCXX/value-init.cpp +++ b/test/CodeGenCXX/value-init.cpp @@ -111,4 +111,30 @@ namespace zeroinit { // CHECK-NEXT: call void @_ZN8zeroinit2X11fEv X1().f(); } + + template<typename> + struct X2 : X0 { + int x2; + void f(); + }; + + template<typename> + struct X3 : X2<int> { + X3() : X2<int>() { } + }; + + + // CHECK: define void @_ZN8zeroinit9testX0_X3Ev + void testX0_X3() { + // CHECK-NOT: call void @llvm.memset + // CHECK: call void @_ZN8zeroinit2X3IiEC1Ev + // CHECK: call void @_ZN8zeroinit2X2IiE1fEv + // CHECK-NEXT: ret void + X3<int>().f(); + } + + // CHECK: define linkonce_odr void @_ZN8zeroinit2X3IiEC2Ev + // CHECK: call void @llvm.memset.p0i8.i64 + // CHECK-NEXT: call void @_ZN8zeroinit2X2IiEC2Ev + // CHECK-NEXT: ret void } |