http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28865

--- Comment #19 from Alan Modra <amodra at gmail dot com> ---
Jakub, you're correct.  I should have read the standard on flexible array
members before poking at this bug last year.  Nick's patch is looking good to
me.

ISO/IEC 9899:1999 is quite clear that the answer to comment #2 is that sizeof
does *not* include the flexible array component (but it does include any
padding needed to align the start of the flexible array).  I think it is
reasonable to do the same for .size and not include the flexible array
component there too.

The testcase (which is invalid code IMO) in comment #3 hits this assert in
varasm.c:

  /* Advance to offset of this element.
     Note no alignment needed in an array, since that is guaranteed
     if each element has the proper size.  */
  if ((local->field != NULL_TREE || local->index != NULL_TREE)
      && fieldpos != local->total_bytes)
    {
      gcc_assert (fieldpos >= local->total_bytes);

Reply via email to