https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77416
--- Comment #3 from Peter Bergner <bergner at gcc dot gnu.org> --- Here's a creduce'd minimal version of the test case that shows the addz after the function call. Same compiler options as above. extern int fn2 (); extern void fn3 (); extern void fn4 (int); int a, c, d, f, g, h, i, j, k, l, m, n; struct { int escape; } *b; int e[8]; void fn1 (int p1, int p2) { int o = a; for (; f; f++) { int p; if (e[h]) continue; if (fn2 (o, d, l, n, p1, i, j, k, 0==0)) continue; p = p2; if (b[g].escape) p++; fn3 ("", c, m); if (k) fn4 (p); } }