https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71554
Bug ID: 71554
Summary: Miscompilation of __builtin_mul_overflow on i686
Product: gcc
Version: 5.4.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: jakub at gcc dot gnu.org
Target Milestone: ---
Following testcase is miscompiled with -O2 -m32 on 5.x:
int v;
__attribute__ ((noinline, noclone)) void
bar (void)
{
v++;
}
__attribute__ ((noinline, noclone))
void
foo (unsigned int x)
{
signed int y = ((-__INT_MAX__ - 1) / 2);
signed int r;
if (__builtin_mul_overflow (x, y, &r))
bar ();
}
int
main ()
{
foo (2);
if (v)
__builtin_abort ();
return 0;
}