https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117498
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Slightly adjusted testcase: int a, d, f; char g; int *volatile c = &a; int foo () { if (c == 0) return -1; return 1; } void bar (int h, int i, char *k, char *m) { for (; d < i; d += 2) for (int j = 0; j < h; j++) m[j] = k[4 * j]; } void baz (long h) { char n = 0; bar (h, 4, &n, &g); } int main () { f = foo (); baz ((unsigned char) f - 4); }