diff options
author | dim <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
commit | 952eddef9aff85b1e92626e89baaf7a360e2ac85 (patch) | |
tree | df8df0b0067b381eab470a3b8f28d14a552a6340 /test/CodeGenCXX/cxx0x-initializer-constructors.cpp | |
parent | ea266cad53e3d49771fa38103913d3ec7a166694 (diff) | |
download | FreeBSD-src-952eddef9aff85b1e92626e89baaf7a360e2ac85.zip FreeBSD-src-952eddef9aff85b1e92626e89baaf7a360e2ac85.tar.gz |
Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3):
https://llvm.org/svn/llvm-project/cfe/branches/release_34@197841
Diffstat (limited to 'test/CodeGenCXX/cxx0x-initializer-constructors.cpp')
-rw-r--r-- | test/CodeGenCXX/cxx0x-initializer-constructors.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/test/CodeGenCXX/cxx0x-initializer-constructors.cpp b/test/CodeGenCXX/cxx0x-initializer-constructors.cpp index be5b44d..f60536e 100644 --- a/test/CodeGenCXX/cxx0x-initializer-constructors.cpp +++ b/test/CodeGenCXX/cxx0x-initializer-constructors.cpp @@ -6,21 +6,21 @@ struct S { }; void fn1() { - // CHECK: define void @_Z3fn1v + // CHECK-LABEL: define void @_Z3fn1v S s { 1 }; // CHECK: alloca %struct.S, align 1 // CHECK: call void @_ZN1SC1Ei(%struct.S* %s, i32 1) } void fn2() { - // CHECK: define void @_Z3fn2v + // CHECK-LABEL: define void @_Z3fn2v S s { 1, 2.0, 3.0 }; // CHECK: alloca %struct.S, align 1 // CHECK: call void @_ZN1SC1Eidd(%struct.S* %s, i32 1, double 2.000000e+00, double 3.000000e+00) } void fn3() { - // CHECK: define void @_Z3fn3v + // CHECK-LABEL: define void @_Z3fn3v S sa[] { { 1 }, { 2 }, { 3 } }; // CHECK: alloca [3 x %struct.S], align 1 // CHECK: call void @_ZN1SC1Ei(%struct.S* %{{.+}}, i32 1) @@ -29,9 +29,25 @@ void fn3() { } void fn4() { - // CHECK: define void @_Z3fn4v + // CHECK-LABEL: define void @_Z3fn4v S sa[] { { 1, 2.0, 3.0 }, { 4, 5.0, 6.0 } }; // CHECK: alloca [2 x %struct.S], align 1 // CHECK: call void @_ZN1SC1Eidd(%struct.S* %{{.+}}, i32 1, double 2.000000e+00, double 3.000000e+00) // CHECK: call void @_ZN1SC1Eidd(%struct.S* %{{.+}}, i32 4, double 5.000000e+00, double 6.000000e+00) } + +namespace TreeTransformBracedInit { + struct S {}; + struct T { T(const S &); T(const T&); ~T(); }; + void x(const T &); + template<typename> void foo(const S &s) { + // Instantiation of this expression used to lose the CXXBindTemporaryExpr + // node and thus not destroy the temporary. + x({s}); + } + template void foo<void>(const S&); + // CHECK: define {{.*}} void @_ZN23TreeTransformBracedInit3fooIvEEvRKNS_1SE( + // CHECK: call void @_ZN23TreeTransformBracedInit1TC1ERKNS_1SE( + // CHECK-NEXT: call void @_ZN23TreeTransformBracedInit1xERKNS_1TE( + // CHECK-NEXT: call void @_ZN23TreeTransformBracedInit1TD1Ev( +} |