https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109215

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
This is complete mess.
/* Describes a "special" array member for a COMPONENT_REF.  */
enum struct special_array_member
  {
    none,       /* Not a special array member.  */
    int_0,      /* Interior array member with size zero.  */
    trail_0,    /* Trailing array member with size zero.  */
    trail_1,    /* Trailing array member with one element.  */
    trail_n,    /* Trailing array member with two or more elements.  */
    int_n       /* Interior array member with one or more elements.  */
  };
Why is this defined differently for _0 and _1?  Because what is interior
array with zero sized elements with 3 members?  Both int_0 because the member
has zero size, and int_n because it has one or more elements.
I think we should make int_0/trail_0 mean with zero elements, anything else is
inconsistent.

Reply via email to