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.