diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2011-11-27 22:09:28 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2011-11-27 22:09:28 +0000 |
commit | bceb75528a4a9757f85df002ab45c6002dc10f94 (patch) | |
tree | 1854d6fa4a0f29082f92528ba8a987b78f553e7f /test/CodeGenCXX/temporaries.cpp | |
parent | 86811609d9353e3aed198045d56e790eb3b6118c (diff) |
In Sema::MaybeBindToTemporary, create a CXXBindTemporaryExpr for an
array of objects with non-trivial destructors. PR11365.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145203 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/temporaries.cpp')
-rw-r--r-- | test/CodeGenCXX/temporaries.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/CodeGenCXX/temporaries.cpp b/test/CodeGenCXX/temporaries.cpp index 98e5ae3e6e..e90c94796f 100644 --- a/test/CodeGenCXX/temporaries.cpp +++ b/test/CodeGenCXX/temporaries.cpp @@ -519,3 +519,21 @@ namespace PR8623 { b ? A(2) : A(3); } } + +namespace PR11365 { + struct A { A(); ~A(); }; + + // CHECK: define void @_ZN7PR113653fooEv( + void foo() { + // CHECK: [[BEGIN:%.*]] = getelementptr inbounds [3 x [[A:%.*]]]* {{.*}}, i32 0, i32 0 + // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 3 + // CHECK-NEXT: br label + + // CHECK: [[PHI:%.*]] = phi + // CHECK-NEXT: [[ELEM:%.*]] = getelementptr inbounds [[A]]* [[PHI]], i64 -1 + // CHECK-NEXT: call void @_ZN7PR113651AD1Ev([[A]]* [[ELEM]]) + // CHECK-NEXT: icmp eq [[A]]* [[ELEM]], [[BEGIN]] + // CHECK-NEXT: br i1 + (void) (A [3]) {}; + } +} |