https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97373
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |85741 Keywords| |diagnostic --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- The simplest change to diagnose the overflow in comment #0 goes like this: diff --git a/gcc/gimple-ssa-sprintf.c b/gcc/gimple-ssa-sprintf.c index fff034fac4d..ed35eccebf3 100644 --- a/gcc/gimple-ssa-sprintf.c +++ b/gcc/gimple-ssa-sprintf.c @@ -4047,9 +4047,13 @@ get_destination_size (tree dest) use type-zero object size to determine the size of the enclosing object (the function fails without optimization in this type). */ int ost = optimize > 0; - unsigned HOST_WIDE_INT size; - if (compute_builtin_object_size (dest, ost, &size)) - return size; + access_ref ref; + if (compute_objsize (dest, ost, &ref)) + { + offset_int size = ref.size_remaining (); + if (wi::fits_uhwi_p (size)) + return size.to_uhwi (); + } return HOST_WIDE_INT_MAX; } Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85741 [Bug 85741] [meta-bug] bogus/missing -Wformat-overflow