https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103961
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|needs-reduction | --- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced testcase: extern __inline __attribute__ ((__gnu_inline__)) int sprintf (char *__restrict __s, const char *__restrict __fmt, ...) { return __builtin___sprintf_chk (__s, 2 - 1, __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); } void cap_to_text(int cmb) { char buf[(23 * ((2) * 32))+100]; char *p; int n, t; p = 20 + buf; for (t = 8; t--; ) { for (n = 0; n < cmb; n++) p += sprintf(p, "a,"); p--; sprintf(p, "+"); } } When p-- happens, it will always be buf+somesmallvalue.