diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index a05a088f0919..49bbb4808eaa 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 cedeff394ccc..000000000000 --- 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( -}