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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|wrong-code                  |accepts-invalid
           Priority|P3                          |P2

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
Well, then the frontend should reject this.  We reject

typedef int int64 __attribute__((aligned (8)));
int64 a[4];

but not

typedef volatile int int64 __attribute__((aligned (8)));
int64 a[4];

somehow the latter arrives as 'int' in c_build_array_type but the former
has 'int64'.  This is because of grokdeclarator doing

  if ((TREE_CODE (type) == ARRAY_TYPE
       || first_non_attr_kind == cdk_array)
      && TYPE_QUALS (element_type))
    {   
      orig_qual_type = type;
      type = TYPE_MAIN_VARIANT (type);
    }

which not only drops the volatile qualifier from int64 but also the alignment.
This later confuses the rest of the frontend with how it treats the array.

Reply via email to