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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |missed-optimization
   Last reconfirmed|                            |2020-01-14
                 CC|                            |msebor at gcc dot gnu.org
             Blocks|                            |83819
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=81433,
                   |                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=81704
     Ever confirmed|0                           |1
           Severity|normal                      |enhancement

--- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> ---
Into memset (b, 0, N) sounds right, for any empty source string, as in: 

void f (char *b, const char *a, unsigned n)
{
  if (__builtin_strlen (a))
    return;

  __builtin_strncpy (b, a, n);
}

Unfortunately, determining that a is empty in the strncpy call above is
defeated by the super-early strlen() != 0 folding, so the strlen pass has no
idea of a's length.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83819
[Bug 83819] [meta-bug] missing strlen optimizations

Reply via email to