Author: rovka Date: Thu May 11 03:10:41 2017 New Revision: 302776 URL: http://llvm.org/viewvc/llvm-project?rev=302776&view=rev Log: 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() ^ -- Removed: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=302776&r1=302775&r2=302776&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Thu May 11 03:10:41 2017 @@ -512,20 +512,12 @@ void AggExprEmitter::EmitArrayInit(Addre 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 = Removed: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/array-default-argument.cpp?rev=302775&view=auto ============================================================================== --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (original) +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (removed) @@ -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( -} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits