PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-06-29 Thread Daniel Berlin
Why is that C++ can't create normal DECL's like everyone else? Case in point: (gdb) unit size ... addressable used BLK file minimal.c line 194 size unit size $11 = void (gdb) y So we've got a parm decl that if you ask it for the DECL_SIZE, says 0, but has a TYPE_SIZE of 12 by

Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-06-29 Thread Richard Henderson
On Wed, Jun 29, 2005 at 06:57:12PM -0400, Daniel Berlin wrote: > I'm going to work around this by using TYPE_SIZE, but it would be nice > if somebody could explain the purpose for this behavior (if it's a bug, > i'll file a bug report). I would imagine we don't have truly empty > things in C++, so

Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-06-29 Thread Daniel Berlin
On Wed, 2005-06-29 at 16:55 -0700, Richard Henderson wrote: > On Wed, Jun 29, 2005 at 06:57:12PM -0400, Daniel Berlin wrote: > > I'm going to work around this by using TYPE_SIZE, but it would be nice > > if somebody could explain the purpose for this behavior (if it's a bug, > > i'll file a bug rep

Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-06-30 Thread Giovanni Bajo
Daniel Berlin <[EMAIL PROTECTED]> wrote: > So we've got a parm decl that if you ask it for the DECL_SIZE, says 0, > but has a TYPE_SIZE of 12 bytes, and we access fields in it, etc. I am not sure of what the exact relations between DECL_SIZE and TYPE_SIZE are, but probably some verification coul

Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-06-30 Thread Daniel Berlin
On Thu, 2005-06-30 at 20:47 +0200, Giovanni Bajo wrote: > Daniel Berlin <[EMAIL PROTECTED]> wrote: > > > So we've got a parm decl that if you ask it for the DECL_SIZE, says 0, > > but has a TYPE_SIZE of 12 bytes, and we access fields in it, etc. > > > I am not sure of what the exact relations be

Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-07-05 Thread Mark Mitchell
Daniel Berlin wrote: 3. Not call layout_decl on the template types until they are completed. In the abstract, this is the best choice. Although we need to know that types are complete (which means (in the current implementation) that TYPE_SIZE != NULL_TREE), but the C++ front end should not

Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-07-05 Thread Daniel Berlin
On Tue, 2005-07-05 at 08:35 -0700, Mark Mitchell wrote: > Daniel Berlin wrote: > > > 3. Not call layout_decl on the template types until they are completed. > > In the abstract, this is the best choice. Although we need to know that > types are complete (which means (in the current implementati

[C++] Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-06-29 Thread Richard Henderson
On Wed, Jun 29, 2005 at 09:17:07PM -0400, Daniel Berlin wrote: > 1. In require_complete_types_for_parms, in the C++ FE, reset DECL_SIZE > to NULL before we call layout_decl on the parm and let layout_decl > figure out what to do. This is what relayout_decl does. > 2. Add code in layout_decl to co

Re: [C++] Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-06-30 Thread Geoffrey Keating
Richard Henderson <[EMAIL PROTECTED]> writes: > On Wed, Jun 29, 2005 at 09:17:07PM -0400, Daniel Berlin wrote: > > 1. In require_complete_types_for_parms, in the C++ FE, reset DECL_SIZE > > to NULL before we call layout_decl on the parm and let layout_decl > > figure out what to do. > > This is w

Re: [C++] Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-06-30 Thread Daniel Berlin
On Thu, 2005-06-30 at 14:11 -0700, Geoffrey Keating wrote: > Richard Henderson <[EMAIL PROTECTED]> writes: > > > On Wed, Jun 29, 2005 at 09:17:07PM -0400, Daniel Berlin wrote: > > > 1. In require_complete_types_for_parms, in the C++ FE, reset DECL_SIZE > > > to NULL before we call layout_decl on t

Re: [C++] Re: PARM_DECL of DECL_SIZE 0, but TYPE_SIZE of 96 bits

2005-07-04 Thread Mark Mitchell
Daniel Berlin wrote: On Thu, 2005-06-30 at 14:11 -0700, Geoffrey Keating wrote: Certainly an option; not doing extra work is good. 4. Make sure that template types are incomplete. That is, with TYPE_SIZE/TYPE_SIZE_UNIT unset. I think this makes a lot of sense considering the language se