https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109271
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- A related(?) case from the same PR is the following where one could argue we should have propagated the equivalence. void __attribute__((noinline)) generic(int * a, int * b, int c) { if (a == b) { for (int i=0; i < 256; i++) { a[i] = b[i] | c; } } }