https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86089
--- Comment #4 from Jürgen Reuter <juergen.reuter at desy dot de> --- This is the dump-tree-original file, which is produced despite of the ICE, and which is identical for -O1 and -O2: ;; Function __sputc (null) ;; enabled by -tree-original { if ( --_p->_w >= 0 || _p->_w >= _p->_lbfsize && (signed char) _c != 10) { return (int) (*_p->_p++ = (unsigned char) _c); } else { return __swbuf (_c, _p); } } ;; Function hoo (null) ;; enabled by -tree-original { int slen; char file[32]; int slen; char file[32]; __builtin___strcpy_chk ((char *) &file, (const char *) in, __builtin_object_size ((const void *) &file, 1)); slen = (int) strlen ((const char *) &file); __builtin___sprintf_chk ((char *) &file + (sizetype) slen, 0, __builtin_object_size ((const void *) &file + (sizetype) slen, 1), (const char *) "1.out"); }