]> granicus.if.org Git - clang/commitdiff
Revert "PR22877: When constructing an array via a constructor with a default argument...
authorDiana Picus <diana.picus@linaro.org>
Thu, 11 May 2017 08:10:41 +0000 (08:10 +0000)
committerDiana Picus <diana.picus@linaro.org>
Thu, 11 May 2017 08:10:41 +0000 (08:10 +0000)
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()
 ^

--

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302776 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExprAgg.cpp
test/CodeGenCXX/array-default-argument.cpp [deleted file]

index a05a088f09191a96aaebdcacabfd9faa46251cfd..49bbb4808eaa2c0df167e5c82719c4ede0c5d892 100644 (file)
@@ -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/test/CodeGenCXX/array-default-argument.cpp b/test/CodeGenCXX/array-default-argument.cpp
deleted file mode 100644 (file)
index cedeff3..0000000
+++ /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(
-}