https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97457
--- Comment #2 from Alex Coplan <acoplan at gcc dot gnu.org> --- For the similar testcase: long a; short b; signed char c(char d, char e) { return d + e; } int main(void) { a = -30; for (; a < 24; a = c(a, 5)) { short *f = &b; (*f)--; } if (b != -11) __builtin_abort(); } we fail to assemble it after r10-4752. This is fixed by r10-5304-g30f8bf3d6c072a8fce14e8a003dff485a9068a97, but we have wrong code thereafter.