diff options
author | Diana Picus <diana.picus@linaro.org> | 2017-05-11 08:10:41 +0000 |
---|---|---|
committer | Diana Picus <diana.picus@linaro.org> | 2017-05-11 08:10:41 +0000 |
commit | 1f53d03a15d3ba35fa19ffeb08d5dce1392e3139 (patch) | |
tree | 98def9bbdb9a04dc403f04fdfe39c98855a0bb53 /clang | |
parent | c5cc230587a01130ffe8a5a4b9e2779c25222984 (diff) | |
download | bcm5719-llvm-1f53d03a15d3ba35fa19ffeb08d5dce1392e3139.tar.gz bcm5719-llvm-1f53d03a15d3ba35fa19ffeb08d5dce1392e3139.zip |
Revert "PR22877: When constructing an array via a constructor with a default argument in list-initialization, run cleanups for the default argument after each iteration of the initialization loop."
Revert "clang/test/CodeGenCXX/array-default-argument.cpp: Satisfy targets that have x86_thiscallcc."
This reverts commit r302750 and its fixup r302757 because the test is
still breaking on some of the ARM bots.
array-default-argument.cpp:20:12: error: expected string not found in input
// CHECK: {{call|invoke}}[[THISCALL:( x86_thiscallcc)?]] void @_ZN1AC1Ev([[TEMPORARY:.*]])
^
<stdin>:18:1: note: scanning from here
arrayctor.loop: ; preds = %arrayctor.loop, %entry
^
<stdin>:28:2: note: possible intended match here
call void @_Z1fv()
^
--
llvm-svn: 302776
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CGExprAgg.cpp | 20 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/array-default-argument.cpp | 36 |
2 files changed, 6 insertions, 50 deletions
diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index a05a088f091..49bbb4808ea 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -512,20 +512,12 @@ void AggExprEmitter::EmitArrayInit(Address DestPtr, llvm::ArrayType *AType, currentElement->addIncoming(element, entryBB); // Emit the actual filler expression. - { - // C++1z [class.temporary]p5: - // when a default constructor is called to initialize an element of - // an array with no corresponding initializer [...] the destruction of - // every temporary created in a default argument is sequenced before - // the construction of the next array element, if any - CodeGenFunction::RunCleanupsScope CleanupsScope(CGF); - LValue elementLV = - CGF.MakeAddrLValue(Address(currentElement, elementAlign), elementType); - if (filler) - EmitInitializationToLValue(filler, elementLV); - else - EmitNullInitializationToLValue(elementLV); - } + LValue elementLV = + CGF.MakeAddrLValue(Address(currentElement, elementAlign), elementType); + if (filler) + EmitInitializationToLValue(filler, elementLV); + else + EmitNullInitializationToLValue(elementLV); // Move on to the next element. llvm::Value *nextElement = diff --git a/clang/test/CodeGenCXX/array-default-argument.cpp b/clang/test/CodeGenCXX/array-default-argument.cpp deleted file mode 100644 index cedeff394cc..00000000000 --- a/clang/test/CodeGenCXX/array-default-argument.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple | FileCheck %s -// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple -fexceptions -fcxx-exceptions | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-EH - -struct A { - A(); - ~A(); -}; - -struct B { - B(A = A()); - ~B(); -}; - -void f(); -// CHECK-LABEL: define void @_Z1gv() -void g() { - // CHECK: br label %[[LOOP:.*]] - - // [[LOOP]]: - // CHECK: {{call|invoke}}[[THISCALL:( x86_thiscallcc)?]] void @_ZN1AC1Ev([[TEMPORARY:.*]]) - // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD:.*]] - // CHECK: {{call|invoke}}[[THISCALL]] void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]]) - // CHECK-EH: unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]] - // CHECK: {{call|invoke}}[[THISCALL]] void @_ZN1AD1Ev([[TEMPORARY]]) - // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD]] - // CHECK: getelementptr {{.*}}, i{{[0-9]*}} 1 - // CHECK: icmp eq - // CHECK: br i1 {{.*}} label %[[LOOP]] - B b[5]; - - // CHECK: {{call|invoke}} void @_Z1fv() - f(); - - // CHECK-NOT: @_ZN1AD1Ev( - // CHECK: {{call|invoke}}[[THISCALL]] void @_ZN1BD1Ev( -} |