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

--- Comment #11 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
The trapping angle seems valid, but I have a really hard time understanding the
DSE issue, and the preceding issue about disambiguation based on RTL aliasing.

How would DSE optimize out 'd[5] = 1' in your example when the mask_store reads
it? Isn't that a data dependency?

How is the initial issue different from

int f(__m128i *p, __m128i v, int *q)
{
  *q = 0;
  *p = v;
  return *q;
}

that we cannot optimize to 'return 0' due to __attribute__((may_alias))
attached to __m128i?

Reply via email to