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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |4.3.4
            Summary|Wrong optimization with     |[4.9/5/6 Regression] Wrong
                   |aliasing and access via     |optimization with aliasing
                   |char                        |and access via char
      Known to fail|                            |4.4.7, 4.8.5, 5.3.0

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
4.3.4 works thus this is a regression (possibly DSE got enhanced, I do see
the same bogus canon_true_dependence check there).

extern void abort (void);

int __attribute__((noinline,noclone))
f(int *pi, long *pl)
{
  *pi = 1;
  *pl = 0;
  return *(char *)pi;
}

int main()
{
  char a[sizeof (long)];
  if (f ((int *)a, (long *)a) != 0)
    abort ();
  return 0;
}

Reply via email to