Re: [PATCH] middle-end, rs6000: Handle empty [[no_unique_address]] fields like empty bases on powerpc64le-linux [PR94707]

2020-04-28 Thread Jonathan Wakely via Gcc-patches
On 28/04/20 19:11 +0200, Jakub Jelinek wrote: On Tue, Apr 28, 2020 at 12:01:15PM -0500, Segher Boessenkool wrote: So the attribute says an object of this struct can have the same address as another object of this struct. But that is not what the backend code uses it for! There is a FAQ at the

Re: [PATCH] middle-end, rs6000: Handle empty [[no_unique_address]] fields like empty bases on powerpc64le-linux [PR94707]

2020-04-28 Thread Jakub Jelinek via Gcc-patches
On Tue, Apr 28, 2020 at 12:01:15PM -0500, Segher Boessenkool wrote: > So the attribute says an object of this struct can have the same address > as another object of this struct. But that is not what the backend code > uses it for! There is a FAQ at the start of the paper that says various intent

Re: [PATCH] middle-end, rs6000: Handle empty [[no_unique_address]] fields like empty bases on powerpc64le-linux [PR94707]

2020-04-28 Thread Segher Boessenkool
On Tue, Apr 28, 2020 at 06:45:05PM +0200, Jakub Jelinek wrote: > On Tue, Apr 28, 2020 at 11:32:02AM -0500, Segher Boessenkool wrote: > > > G++ 9 -std=c++14 A, B, C passed in fprs, the rest in gprs > > > G++ 9 -std=c++17 A passed in fprs, the rest in gprs > > > current trunk -std=c

Re: [PATCH] middle-end, rs6000: Handle empty [[no_unique_address]] fields like empty bases on powerpc64le-linux [PR94707]

2020-04-28 Thread Jakub Jelinek via Gcc-patches
On Tue, Apr 28, 2020 at 11:32:02AM -0500, Segher Boessenkool wrote: > > testcase on powerpc64-linux. Results: > > You mean powerpc64le-linux here (I hope!) Yes, sorry. > > G++ 9 -std=c++14A, B, C passed in fprs, the rest in gprs > > G++ 9 -std=c++17A passed in fprs, the

Re: [PATCH] middle-end, rs6000: Handle empty [[no_unique_address]] fields like empty bases on powerpc64le-linux [PR94707]

2020-04-28 Thread Segher Boessenkool
Hi! On Tue, Apr 28, 2020 at 01:38:52PM +0200, Jakub Jelinek wrote: > Ok, I've tried: > struct X { }; > struct Y { int : 0; }; > struct Z { int : 0; Y y; }; > struct U : public X { X q; }; > struct A { float a, b, c, d; }; > struct B : public X { float a, b, c, d; }; > struct C : public Y { float a

Re: [PATCH] middle-end, rs6000: Handle empty [[no_unique_address]] fields like empty bases on powerpc64le-linux [PR94707]

2020-04-28 Thread Bill Schmidt via Gcc-patches
On 4/28/20 6:38 AM, Jakub Jelinek via Gcc-patches wrote: Hi! Ok, I've tried: struct X { }; struct Y { int : 0; }; struct Z { int : 0; Y y; }; struct U : public X { X q; }; struct A { float a, b, c, d; }; struct B : public X { float a, b, c, d; }; struct C : public Y { float a, b, c, d; }; struct

[PATCH] middle-end, rs6000: Handle empty [[no_unique_address]] fields like empty bases on powerpc64le-linux [PR94707]

2020-04-28 Thread Jakub Jelinek via Gcc-patches
Hi! Ok, I've tried: struct X { }; struct Y { int : 0; }; struct Z { int : 0; Y y; }; struct U : public X { X q; }; struct A { float a, b, c, d; }; struct B : public X { float a, b, c, d; }; struct C : public Y { float a, b, c, d; }; struct D : public Z { float a, b, c, d; }; struct E : public U {