Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-22 Thread Marek Polacek
On Wed, Nov 22, 2017 at 10:07:04PM +0100, Jakub Jelinek wrote: > On Mon, Nov 13, 2017 at 11:32:14AM +0100, Marek Polacek wrote: > > * g++.dg/abi/pr68355.C: New test. > > This testcase FAILs on i686-linux, my understanding is that the ABI > changed only if TARGET_64BIT on x86_64/i686-linux.

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-22 Thread Jakub Jelinek
On Mon, Nov 13, 2017 at 11:32:14AM +0100, Marek Polacek wrote: > * g++.dg/abi/pr68355.C: New test. This testcase FAILs on i686-linux, my understanding is that the ABI changed only if TARGET_64BIT on x86_64/i686-linux. The following patch fixes it for me, ok for trunk? 2017-11-22 Jakub

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-21 Thread Marek Polacek
On Tue, Nov 21, 2017 at 10:02:34AM +0100, Uros Bizjak wrote: > LGTM for x86 part. Thanks a lot. I'll commit the patch later today. Marek

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-21 Thread Uros Bizjak
On Mon, Nov 20, 2017 at 4:51 PM, Marek Polacek wrote: > On Thu, Nov 16, 2017 at 02:20:59PM -0500, Jason Merrill wrote: >> On Thu, Nov 16, 2017 at 12:41 PM, Marek Polacek wrote: >> > On Tue, Nov 14, 2017 at 07:34:54AM +0100, Richard Biener wrote: >> >> On

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-20 Thread Richard Biener
On November 20, 2017 4:51:04 PM GMT+01:00, Marek Polacek wrote: >On Thu, Nov 16, 2017 at 02:20:59PM -0500, Jason Merrill wrote: >> On Thu, Nov 16, 2017 at 12:41 PM, Marek Polacek >wrote: >> > On Tue, Nov 14, 2017 at 07:34:54AM +0100, Richard Biener wrote:

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-20 Thread Marek Polacek
On Thu, Nov 16, 2017 at 02:20:59PM -0500, Jason Merrill wrote: > On Thu, Nov 16, 2017 at 12:41 PM, Marek Polacek wrote: > > On Tue, Nov 14, 2017 at 07:34:54AM +0100, Richard Biener wrote: > >> On November 14, 2017 6:21:41 AM GMT+01:00, Jason Merrill > >>

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-16 Thread Jason Merrill
On Thu, Nov 16, 2017 at 12:41 PM, Marek Polacek wrote: > On Tue, Nov 14, 2017 at 07:34:54AM +0100, Richard Biener wrote: >> On November 14, 2017 6:21:41 AM GMT+01:00, Jason Merrill >> wrote: >> >On Mon, Nov 13, 2017 at 1:02 PM, Marek Polacek

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-16 Thread Marek Polacek
On Tue, Nov 14, 2017 at 07:34:54AM +0100, Richard Biener wrote: > On November 14, 2017 6:21:41 AM GMT+01:00, Jason Merrill > wrote: > >On Mon, Nov 13, 2017 at 1:02 PM, Marek Polacek > >> In the end I did two bootstraps with the patch, but modifed one of >

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-13 Thread Richard Biener
On November 14, 2017 6:21:41 AM GMT+01:00, Jason Merrill wrote: >On Mon, Nov 13, 2017 at 1:02 PM, Marek Polacek >wrote: >> On Mon, Nov 13, 2017 at 11:47:41AM +0100, Jakub Jelinek wrote: >>> On Mon, Nov 13, 2017 at 11:44:38AM +0100, Richard Biener wrote: >>>

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-13 Thread Jason Merrill
On Mon, Nov 13, 2017 at 1:02 PM, Marek Polacek wrote: > On Mon, Nov 13, 2017 at 11:47:41AM +0100, Jakub Jelinek wrote: >> On Mon, Nov 13, 2017 at 11:44:38AM +0100, Richard Biener wrote: >> > > Unfortunately, it's not what I see. I ran two bootstraps, with and >> > > without

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-13 Thread Marek Polacek
On Mon, Nov 13, 2017 at 11:47:41AM +0100, Jakub Jelinek wrote: > On Mon, Nov 13, 2017 at 11:44:38AM +0100, Richard Biener wrote: > > > Unfortunately, it's not what I see. I ran two bootstraps, with and > > > without the > > > patch. Then I stripped all the .o files and ran cmp on them, but many

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-13 Thread Jakub Jelinek
On Mon, Nov 13, 2017 at 11:44:38AM +0100, Richard Biener wrote: > > Unfortunately, it's not what I see. I ran two bootstraps, with and without > > the > > patch. Then I stripped all the .o files and ran cmp on them, but many of > > them > > differ. objdump -dr reveals why -- I see changes

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-13 Thread Richard Biener
On Mon, 13 Nov 2017, Marek Polacek wrote: > On Fri, Nov 10, 2017 at 11:16:04AM -0500, Jason Merrill wrote: > > On 11/09/2017 10:26 AM, Richard Biener wrote: > > > > Moving TYPE_EMPTY_P to finalize_type_size revealed a bug in Cilk+, it > > > > was > > > > bogusly (I believe) setting

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-13 Thread Marek Polacek
On Fri, Nov 10, 2017 at 11:16:04AM -0500, Jason Merrill wrote: > On 11/09/2017 10:26 AM, Richard Biener wrote: > > > Moving TYPE_EMPTY_P to finalize_type_size revealed a bug in Cilk+, it was > > > bogusly (I believe) setting TREE_ADDRESSABLE, so the assert fired. Since > > > Cilk+ is being

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-10 Thread Jason Merrill
On 11/09/2017 10:26 AM, Richard Biener wrote: Moving TYPE_EMPTY_P to finalize_type_size revealed a bug in Cilk+, it was bogusly (I believe) setting TREE_ADDRESSABLE, so the assert fired. Since Cilk+ is being deprecated and the Cilk+ testsuite still passes, I'm not too worried about this change.

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-09 Thread Richard Biener
On Thu, 9 Nov 2017, Marek Polacek wrote: > On Wed, Nov 08, 2017 at 09:06:51AM +0100, Richard Biener wrote: > > > >> >> > + if (TREE_CODE (field) == FIELD_DECL > > > >> >> > + && (DECL_NAME (field) > > > >> >> > + || RECORD_OR_UNION_TYPE_P (TREE_TYPE (field))) > > > >> >> > + &&

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-09 Thread Marek Polacek
On Wed, Nov 08, 2017 at 09:06:51AM +0100, Richard Biener wrote: > > >> >> > + if (TREE_CODE (field) == FIELD_DECL > > >> >> > + && (DECL_NAME (field) > > >> >> > + || RECORD_OR_UNION_TYPE_P (TREE_TYPE (field))) > > >> >> > + && !default_is_empty_type (TREE_TYPE (field))) > > >> >>

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-08 Thread Richard Biener
On Tue, 7 Nov 2017, Jason Merrill wrote: > On Tue, Nov 7, 2017 at 3:14 AM, Richard Biener wrote: > > On Mon, 6 Nov 2017, Jason Merrill wrote: > > > >> On Mon, Nov 6, 2017 at 10:37 AM, Marek Polacek wrote: > >> > On Fri, Nov 03, 2017 at 12:19:05PM -0400,

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-07 Thread Jason Merrill
On Tue, Nov 7, 2017 at 2:40 PM, Richard Biener wrote: > On November 7, 2017 7:21:17 PM GMT+01:00, Jason Merrill > wrote: >>On Tue, Nov 7, 2017 at 3:14 AM, Richard Biener >>wrote: >>> On Mon, 6 Nov 2017, Jason Merrill wrote: >>> On

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-07 Thread Richard Biener
On November 7, 2017 7:21:17 PM GMT+01:00, Jason Merrill wrote: >On Tue, Nov 7, 2017 at 3:14 AM, Richard Biener >wrote: >> On Mon, 6 Nov 2017, Jason Merrill wrote: >> >>> On Mon, Nov 6, 2017 at 10:37 AM, Marek Polacek >wrote: >>> > On

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-07 Thread Jason Merrill
On Tue, Nov 7, 2017 at 3:14 AM, Richard Biener wrote: > On Mon, 6 Nov 2017, Jason Merrill wrote: > >> On Mon, Nov 6, 2017 at 10:37 AM, Marek Polacek wrote: >> > On Fri, Nov 03, 2017 at 12:19:05PM -0400, Jason Merrill wrote: >> >> On Fri, Nov 3, 2017 at 9:55

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-07 Thread Marek Polacek
On Tue, Nov 07, 2017 at 09:14:58AM +0100, Richard Biener wrote: > On Mon, 6 Nov 2017, Jason Merrill wrote: > > > On Mon, Nov 6, 2017 at 10:37 AM, Marek Polacek wrote: > > > On Fri, Nov 03, 2017 at 12:19:05PM -0400, Jason Merrill wrote: > > >> On Fri, Nov 3, 2017 at 9:55 AM,

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-07 Thread Richard Biener
On Mon, 6 Nov 2017, Jason Merrill wrote: > On Mon, Nov 6, 2017 at 10:37 AM, Marek Polacek wrote: > > On Fri, Nov 03, 2017 at 12:19:05PM -0400, Jason Merrill wrote: > >> On Fri, Nov 3, 2017 at 9:55 AM, Marek Polacek wrote: > >> > + TYPE_EMPTY_P (t) =

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-06 Thread Jason Merrill
On Mon, Nov 6, 2017 at 10:37 AM, Marek Polacek wrote: > On Fri, Nov 03, 2017 at 12:19:05PM -0400, Jason Merrill wrote: >> On Fri, Nov 3, 2017 at 9:55 AM, Marek Polacek wrote: >> > + TYPE_EMPTY_P (t) = targetm.calls.empty_record_p (t); >> >> I think we

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-06 Thread Marek Polacek
On Fri, Nov 03, 2017 at 12:19:05PM -0400, Jason Merrill wrote: > On Fri, Nov 3, 2017 at 9:55 AM, Marek Polacek wrote: > > + TYPE_EMPTY_P (t) = targetm.calls.empty_record_p (t); > > I think we want to set this in finalize_type_size; since the point of > all this is becoming

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-03 Thread Jason Merrill
On Fri, Nov 3, 2017 at 9:55 AM, Marek Polacek wrote: > + TYPE_EMPTY_P (t) = targetm.calls.empty_record_p (t); I think we want to set this in finalize_type_size; since the point of all this is becoming compliant with the psABI (and compatible with the C front end), I wouldn't

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-03 Thread Marek Polacek
On Thu, Nov 02, 2017 at 02:50:17PM -0400, Jason Merrill wrote: > We probably want to call them something like default_is_empty_type and > default_is_empty_record, though. Done. > > For one thing I thought we should be consistent in treating these two > > structs, regarding being empty: > > > >

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-02 Thread Jason Merrill
On Thu, Nov 2, 2017 at 1:08 PM, Marek Polacek wrote: > On Thu, Nov 02, 2017 at 09:53:33AM -0400, Jason Merrill wrote: >> On Thu, Nov 2, 2017 at 8:21 AM, Richard Biener wrote: >> > On Wed, 1 Nov 2017, Marek Polacek wrote: >> > >> >> On Fri, Oct 27, 2017 at

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-02 Thread Marek Polacek
On Thu, Nov 02, 2017 at 09:53:33AM -0400, Jason Merrill wrote: > On Thu, Nov 2, 2017 at 8:21 AM, Richard Biener wrote: > > On Wed, 1 Nov 2017, Marek Polacek wrote: > > > >> On Fri, Oct 27, 2017 at 12:46:12PM +0200, Richard Biener wrote: > >> > On Fri, 27 Oct 2017, Jakub Jelinek

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-02 Thread Marek Polacek
On Thu, Nov 02, 2017 at 01:21:17PM +0100, Richard Biener wrote: > On Wed, 1 Nov 2017, Marek Polacek wrote: > > > On Fri, Oct 27, 2017 at 12:46:12PM +0200, Richard Biener wrote: > > > On Fri, 27 Oct 2017, Jakub Jelinek wrote: > > > > > > > On Fri, Oct 27, 2017 at 12:31:46PM +0200, Richard Biener

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-02 Thread Jason Merrill
On Thu, Nov 2, 2017 at 8:21 AM, Richard Biener wrote: > On Wed, 1 Nov 2017, Marek Polacek wrote: > >> On Fri, Oct 27, 2017 at 12:46:12PM +0200, Richard Biener wrote: >> > On Fri, 27 Oct 2017, Jakub Jelinek wrote: >> > >> > > On Fri, Oct 27, 2017 at 12:31:46PM +0200, Richard

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-02 Thread Richard Biener
On Wed, 1 Nov 2017, Marek Polacek wrote: > On Fri, Oct 27, 2017 at 12:46:12PM +0200, Richard Biener wrote: > > On Fri, 27 Oct 2017, Jakub Jelinek wrote: > > > > > On Fri, Oct 27, 2017 at 12:31:46PM +0200, Richard Biener wrote: > > > > I fear it doesn't work at all with LTO (you'll always get the

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-11-01 Thread Marek Polacek
On Fri, Oct 27, 2017 at 12:46:12PM +0200, Richard Biener wrote: > On Fri, 27 Oct 2017, Jakub Jelinek wrote: > > > On Fri, Oct 27, 2017 at 12:31:46PM +0200, Richard Biener wrote: > > > I fear it doesn't work at all with LTO (you'll always get the old ABI > > > if I read the patch correctly). This

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-10-27 Thread Jeff Law
On 10/27/2017 04:38 AM, Jakub Jelinek wrote: > On Fri, Oct 27, 2017 at 12:31:46PM +0200, Richard Biener wrote: >> I fear it doesn't work at all with LTO (you'll always get the old ABI >> if I read the patch correctly). This is because the function >> computing the size looks at flag_abi_version

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-10-27 Thread Richard Biener
On Fri, 27 Oct 2017, Jakub Jelinek wrote: > On Fri, Oct 27, 2017 at 12:31:46PM +0200, Richard Biener wrote: > > I fear it doesn't work at all with LTO (you'll always get the old ABI > > if I read the patch correctly). This is because the function > > computing the size looks at flag_abi_version

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-10-27 Thread Jakub Jelinek
On Fri, Oct 27, 2017 at 12:31:46PM +0200, Richard Biener wrote: > I fear it doesn't work at all with LTO (you'll always get the old ABI > if I read the patch correctly). This is because the function > computing the size looks at flag_abi_version which isn't saved > per function / TU. > >

Re: Adjust empty class parameter passing ABI (PR c++/60336)

2017-10-27 Thread Richard Biener
On Fri, 27 Oct 2017, Marek Polacek wrote: > This is my attempt at the empty class ABI change. To recap quickly, the C++ > compiler has used a different calling convention for passing empty classes, > because C++ says they have size 1, while the GCC C extension gives them size > 0. > But this

Adjust empty class parameter passing ABI (PR c++/60336)

2017-10-27 Thread Marek Polacek
This is my attempt at the empty class ABI change. To recap quickly, the C++ compiler has used a different calling convention for passing empty classes, because C++ says they have size 1, while the GCC C extension gives them size 0. But this difference doesn't mean that they need to be passed