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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[11/12/13/14 Regression]    |[11/12/13/14 Regression]
                   |Optimization eliminating    |Optimization eliminating
                   |necessary assignment before |necessary assignment before
                   |0-byte memcpy               |0-byte memcpy since
                   |                            |r10-5451
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r10-5451-gef29b12cfbb4979a89b3c

C testcase for -O2:
__attribute__ ((noipa)) int
foo (const char *s, unsigned long l)
{
  unsigned char r = 0;
  __builtin_memcpy (&r, s, l != 0);
  return r;
}

int
main ()
{
  const char *p = "123456";
  int a = foo (p, __builtin_strlen (p) - 5);
  int b = foo (p, __builtin_strlen (p) - 6);
  if (a != '1')
    __builtin_abort ();
  if (b != 0)
    __builtin_abort ();
}

Reply via email to