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

--- Comment #10 from Marc Glisse <glisse at gcc dot gnu.org> ---
Ah. So, from a user's POV, it should be valid. But internally, we convert
v2si*->v4hi* (ok), v4hi*->short* (ok), we forget the intermediate step, and we
end up with v2si*->short*, which is not ok since the type through which the
access will happen (short) doesn't have may_alias. The safety of the cast is
not transitive...

Maybe the patch from comment #9 could be restricted to the case where the
vector type has may_alias? That would still break my original testcase, but it
seems illegal anyway (may_alias only works in one direction, the opposite one,
and I think the x86 *intrin.h files are wrong).

Reply via email to