https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105080

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |diagnostic
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2022-03-28

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  The issue is that at -O0 we do not use SCEV and thus range analysis
is limited, just using i < 16.

static unsigned int
printf_strlen_execute (function *fun, bool warn_only)
{ 
  strlen_optimize = !warn_only;

  calculate_dominance_info (CDI_DOMINATORS); 

  bool use_scev = optimize > 0 && flag_printf_return_value;
  if (use_scev)
    {
      loop_optimizer_init (LOOPS_NORMAL);
      scev_initialize ();
    }

at -O0 we call this when warn_format_overflow > 0 || warn_format_trunc > 0 so
to improve we could maybe do || warn_only above.  That would fix the bogus
diagnostic.

Reply via email to