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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1
   Target Milestone|---                         |14.0

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Functionally what it does is
__attribute__((noipa)) void
bar (unsigned long *p)
{
  __builtin_memset (p, 0, 142 * sizeof (unsigned long));
  p[17] = 0x50000000000UL;
}

__attribute__((noipa)) int
foo (void)
{
  unsigned long r[142];
  bar (r);
  unsigned long v = ((long) r[0] >> 31);
  if (v + 1 > 1)
    return 1;
  for (unsigned long i = 1; i <= 140; ++i)
    if (r[i] != v)
      return 1;
  unsigned long w = r[141];
  if ((unsigned long) (((long) (w << 60)) >> 60) != v)
    return 1;
  return 0;
}

int
main ()
{
  if (foo () != 1)
    __builtin_abort ();
}
but this doesn't abort.

Reply via email to