Re: r302750 - PR22877: When constructing an array via a constructor with a default argument

2017-05-12 Thread Galina Kistanova via cfe-commits
I will look at this.

Thanks

Galina

On Fri, May 12, 2017 at 2:00 PM, Richard Smith 
wrote:

> On 12 May 2017 at 13:24, Renato Golin  wrote:
>
>> On 12 May 2017 at 20:46, Diana Picus  wrote:
>> > On 11 May 2017 at 21:14, Richard Smith  wrote:
>> >> Thanks for the revert, fixed up and recommitted in r302817.
>> >>
>> >> Any idea why not a single buildbot sent me any email about this? :( (A
>> >> couple of them were red at the previous change too, but some of them
>> were
>> >> not (eg. clang-cmake-armv7-a15).
>> >
>> > Hm, I have no idea... @Renato, thoughts?
>>
>> This seems to be the one:
>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6961
>>
>> First red in a long line of greens.
>>
>> I have received breakage emails this week, so if you didn't get the
>> email it could be some outage in the bots (Galina?) or some filters?
>>
>> I really have no better idea. :(
>
>
> Looks like I've been receiving the expected build failure mails from
> llvm.greendra...@gmail.com, but have only received one build failure
> email from llvm.buildmas...@lab.llvm.org since January 12th (on March
> 9th, for http://lab.llvm.org:8011/builders/clang-ppc64le-linux-ln
> t/builds/3791).
>
> Could this be a DMARC / DKIM issue?
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r302750 - PR22877: When constructing an array via a constructor with a default argument

2017-05-12 Thread Richard Smith via cfe-commits
On 12 May 2017 at 13:24, Renato Golin  wrote:

> On 12 May 2017 at 20:46, Diana Picus  wrote:
> > On 11 May 2017 at 21:14, Richard Smith  wrote:
> >> Thanks for the revert, fixed up and recommitted in r302817.
> >>
> >> Any idea why not a single buildbot sent me any email about this? :( (A
> >> couple of them were red at the previous change too, but some of them
> were
> >> not (eg. clang-cmake-armv7-a15).
> >
> > Hm, I have no idea... @Renato, thoughts?
>
> This seems to be the one:
> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6961
>
> First red in a long line of greens.
>
> I have received breakage emails this week, so if you didn't get the
> email it could be some outage in the bots (Galina?) or some filters?
>
> I really have no better idea. :(


Looks like I've been receiving the expected build failure mails from
llvm.greendra...@gmail.com, but have only received one build failure email
from llvm.buildmas...@lab.llvm.org since January 12th (on March 9th, for
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/3791).

Could this be a DMARC / DKIM issue?
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r302750 - PR22877: When constructing an array via a constructor with a default argument

2017-05-12 Thread Renato Golin via cfe-commits
On 12 May 2017 at 20:46, Diana Picus  wrote:
> On 11 May 2017 at 21:14, Richard Smith  wrote:
>> Thanks for the revert, fixed up and recommitted in r302817.
>>
>> Any idea why not a single buildbot sent me any email about this? :( (A
>> couple of them were red at the previous change too, but some of them were
>> not (eg. clang-cmake-armv7-a15).
>
> Hm, I have no idea... @Renato, thoughts?

This seems to be the one:
http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6961

First red in a long line of greens.

I have received breakage emails this week, so if you didn't get the
email it could be some outage in the bots (Galina?) or some filters?

I really have no better idea. :(

--renato
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r302750 - PR22877: When constructing an array via a constructor with a default argument

2017-05-12 Thread Diana Picus via cfe-commits
On 11 May 2017 at 21:14, Richard Smith  wrote:
> Thanks for the revert, fixed up and recommitted in r302817.
>
> Any idea why not a single buildbot sent me any email about this? :( (A
> couple of them were red at the previous change too, but some of them were
> not (eg. clang-cmake-armv7-a15).

Hm, I have no idea... @Renato, thoughts?

>
> On 11 May 2017 at 01:28, Diana Picus  wrote:
>>
>> Hexagon too:
>> http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/7916
>>
>> On 11 May 2017 at 10:27, Diana Picus  wrote:
>> > Hi Richard,
>> >
>> > I reverted this and its fixup in r302776 since some of the ARM bots
>> > were still broken:
>> > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6969
>> > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/6959
>> > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/6717
>> >
>> > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/1518
>> >
>> > Sorry,
>> > Diana
>> >
>> > On 11 May 2017 at 02:17, Richard Smith via cfe-commits
>> >  wrote:
>> >> Author: rsmith
>> >> Date: Wed May 10 19:17:17 2017
>> >> New Revision: 302750
>> >>
>> >> URL: http://llvm.org/viewvc/llvm-project?rev=302750=rev
>> >> Log:
>> >> 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.
>> >>
>> >> We previously only ran the destructor for any temporary once, at the
>> >> end of the
>> >> complete loop, rather than once per iteration!
>> >>
>> >> Added:
>> >> 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=302750=302749=302750=diff
>> >>
>> >> ==
>> >> --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original)
>> >> +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Wed May 10 19:17:17 2017
>> >> @@ -512,12 +512,20 @@ void AggExprEmitter::EmitArrayInit(Addre
>> >>  currentElement->addIncoming(element, entryBB);
>> >>
>> >>  // Emit the actual filler expression.
>> >> -LValue elementLV =
>> >> -  CGF.MakeAddrLValue(Address(currentElement, elementAlign),
>> >> elementType);
>> >> -if (filler)
>> >> -  EmitInitializationToLValue(filler, elementLV);
>> >> -else
>> >> -  EmitNullInitializationToLValue(elementLV);
>> >> +{
>> >> +  // 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);
>> >> +}
>> >>
>> >>  // Move on to the next element.
>> >>  llvm::Value *nextElement =
>> >>
>> >> Added: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp
>> >> URL:
>> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/array-default-argument.cpp?rev=302750=auto
>> >>
>> >> ==
>> >> --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (added)
>> >> +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Wed May 10
>> >> 19:17:17 2017
>> >> @@ -0,0 +1,36 @@
>> >> +// 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}} void @_ZN1AC1Ev([[TEMPORARY:.*]])
>> >> +  // CHECK-EH:  unwind label %[[PARTIAL_ARRAY_LPAD:.*]]
>> >> +  // CHECK: {{call|invoke}} void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]])
>> >> +  // CHECK-EH:  unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]]
>> >> +  // CHECK: {{call|invoke}} void @_ZN1AD1Ev([[TEMPORARY]])
>> >> +  // CHECK-EH:  unwind label %[[PARTIAL_ARRAY_LPAD]]
>> >> +  // 

Re: r302750 - PR22877: When constructing an array via a constructor with a default argument

2017-05-11 Thread Richard Smith via cfe-commits
Thanks for the revert, fixed up and recommitted in r302817.

Any idea why not a single buildbot sent me any email about this? :( (A
couple of them were red at the previous change too, but some of them were
not (eg. clang-cmake-armv7-a15).

On 11 May 2017 at 01:28, Diana Picus  wrote:

> Hexagon too:
> http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/7916
>
> On 11 May 2017 at 10:27, Diana Picus  wrote:
> > Hi Richard,
> >
> > I reverted this and its fixup in r302776 since some of the ARM bots
> > were still broken:
> > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6969
> > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/6959
> > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/6717
> > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-
> a15-full-sh/builds/1518
> >
> > Sorry,
> > Diana
> >
> > On 11 May 2017 at 02:17, Richard Smith via cfe-commits
> >  wrote:
> >> Author: rsmith
> >> Date: Wed May 10 19:17:17 2017
> >> New Revision: 302750
> >>
> >> URL: http://llvm.org/viewvc/llvm-project?rev=302750=rev
> >> Log:
> >> 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.
> >>
> >> We previously only ran the destructor for any temporary once, at the
> end of the
> >> complete loop, rather than once per iteration!
> >>
> >> Added:
> >> 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=302750=302749=302750=diff
> >> 
> ==
> >> --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original)
> >> +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Wed May 10 19:17:17 2017
> >> @@ -512,12 +512,20 @@ void AggExprEmitter::EmitArrayInit(Addre
> >>  currentElement->addIncoming(element, entryBB);
> >>
> >>  // Emit the actual filler expression.
> >> -LValue elementLV =
> >> -  CGF.MakeAddrLValue(Address(currentElement, elementAlign),
> elementType);
> >> -if (filler)
> >> -  EmitInitializationToLValue(filler, elementLV);
> >> -else
> >> -  EmitNullInitializationToLValue(elementLV);
> >> +{
> >> +  // 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);
> >> +}
> >>
> >>  // Move on to the next element.
> >>  llvm::Value *nextElement =
> >>
> >> Added: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp
> >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/
> CodeGenCXX/array-default-argument.cpp?rev=302750=auto
> >> 
> ==
> >> --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (added)
> >> +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Wed May 10
> 19:17:17 2017
> >> @@ -0,0 +1,36 @@
> >> +// 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}} void @_ZN1AC1Ev([[TEMPORARY:.*]])
> >> +  // CHECK-EH:  unwind label %[[PARTIAL_ARRAY_LPAD:.*]]
> >> +  // CHECK: {{call|invoke}} void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]])
> >> +  // CHECK-EH:  unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]]
> >> +  // CHECK: {{call|invoke}} 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}} void @_ZN1BD1Ev(
> 

Re: r302750 - PR22877: When constructing an array via a constructor with a default argument

2017-05-11 Thread Diana Picus via cfe-commits
Hexagon too:
http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/7916

On 11 May 2017 at 10:27, Diana Picus  wrote:
> Hi Richard,
>
> I reverted this and its fixup in r302776 since some of the ARM bots
> were still broken:
> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6969
> http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/6959
> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/6717
> http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/1518
>
> Sorry,
> Diana
>
> On 11 May 2017 at 02:17, Richard Smith via cfe-commits
>  wrote:
>> Author: rsmith
>> Date: Wed May 10 19:17:17 2017
>> New Revision: 302750
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=302750=rev
>> Log:
>> 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.
>>
>> We previously only ran the destructor for any temporary once, at the end of 
>> the
>> complete loop, rather than once per iteration!
>>
>> Added:
>> 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=302750=302749=302750=diff
>> ==
>> --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Wed May 10 19:17:17 2017
>> @@ -512,12 +512,20 @@ void AggExprEmitter::EmitArrayInit(Addre
>>  currentElement->addIncoming(element, entryBB);
>>
>>  // Emit the actual filler expression.
>> -LValue elementLV =
>> -  CGF.MakeAddrLValue(Address(currentElement, elementAlign), 
>> elementType);
>> -if (filler)
>> -  EmitInitializationToLValue(filler, elementLV);
>> -else
>> -  EmitNullInitializationToLValue(elementLV);
>> +{
>> +  // 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);
>> +}
>>
>>  // Move on to the next element.
>>  llvm::Value *nextElement =
>>
>> Added: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/array-default-argument.cpp?rev=302750=auto
>> ==
>> --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (added)
>> +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Wed May 10 19:17:17 
>> 2017
>> @@ -0,0 +1,36 @@
>> +// 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}} void @_ZN1AC1Ev([[TEMPORARY:.*]])
>> +  // CHECK-EH:  unwind label %[[PARTIAL_ARRAY_LPAD:.*]]
>> +  // CHECK: {{call|invoke}} void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]])
>> +  // CHECK-EH:  unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]]
>> +  // CHECK: {{call|invoke}} 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}} void @_ZN1BD1Ev(
>> +}
>>
>>
>> ___
>> cfe-commits mailing list
>> cfe-commits@lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r302750 - PR22877: When constructing an array via a constructor with a default argument

2017-05-11 Thread Diana Picus via cfe-commits
Hi Richard,

I reverted this and its fixup in r302776 since some of the ARM bots
were still broken:
http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6969
http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/6959
http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/6717
http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/1518

Sorry,
Diana

On 11 May 2017 at 02:17, Richard Smith via cfe-commits
 wrote:
> Author: rsmith
> Date: Wed May 10 19:17:17 2017
> New Revision: 302750
>
> URL: http://llvm.org/viewvc/llvm-project?rev=302750=rev
> Log:
> 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.
>
> We previously only ran the destructor for any temporary once, at the end of 
> the
> complete loop, rather than once per iteration!
>
> Added:
> 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=302750=302749=302750=diff
> ==
> --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Wed May 10 19:17:17 2017
> @@ -512,12 +512,20 @@ void AggExprEmitter::EmitArrayInit(Addre
>  currentElement->addIncoming(element, entryBB);
>
>  // Emit the actual filler expression.
> -LValue elementLV =
> -  CGF.MakeAddrLValue(Address(currentElement, elementAlign), elementType);
> -if (filler)
> -  EmitInitializationToLValue(filler, elementLV);
> -else
> -  EmitNullInitializationToLValue(elementLV);
> +{
> +  // 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);
> +}
>
>  // Move on to the next element.
>  llvm::Value *nextElement =
>
> Added: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/array-default-argument.cpp?rev=302750=auto
> ==
> --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (added)
> +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Wed May 10 19:17:17 
> 2017
> @@ -0,0 +1,36 @@
> +// 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}} void @_ZN1AC1Ev([[TEMPORARY:.*]])
> +  // CHECK-EH:  unwind label %[[PARTIAL_ARRAY_LPAD:.*]]
> +  // CHECK: {{call|invoke}} void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]])
> +  // CHECK-EH:  unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]]
> +  // CHECK: {{call|invoke}} 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}} void @_ZN1BD1Ev(
> +}
>
>
> ___
> cfe-commits mailing list
> cfe-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits