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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |diagnostic, wrong-code
     Ever confirmed|0                           |1
                 CC|                            |jsm28 at gcc dot gnu.org
          Component|testsuite                   |c
   Last reconfirmed|                            |2021-04-07

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
It is

typedef long long __m128i __attribute__((__may_alias__, __vector_size__(2 *
sizeof (long long))));

so should be OK unless the FE somehow magically screws up.  And it looks
like it does!?  The may-alias attribute isn't added to the built vector type
(but vector type building is a bit iffy).

It works when doing

typedef long long __m128i __attribute__((__vector_size__(2 * sizeof (long
long)), __may_alias__));

instead.  Maybe we want to diagnose when the vector_size attribute isn't the
first attribute?  Maybe we want to handle all this gracefully anyway?

Joseph?

Meanwhile Alex, it's pre-approved to adjust the testcase to make __may_alias__
come last ...

Reply via email to