https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126503
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
All in one testcase:
[[gnu::noipa]] unsigned _BitInt(400)
foo (_BitInt(257) a)
{
return (unsigned _BitInt(400)) (-a);
}
[[gnu::noipa]] unsigned _BitInt(300)
bar (_BitInt(7) a, unsigned _BitInt(17) b)
{
_BitInt(257) x = (_BitInt(257)) a + -1;
return ~((unsigned _BitInt(300)) x ^ (unsigned _BitInt(300)) b);
}
[[gnu::noipa]] _BitInt(129)
baz (_BitInt(129) x)
{
return x - 24;
}
[[gnu::noipa]] int
qux (_BitInt(129) x, _BitInt(129) y)
{
return x == y;
}
int
main ()
{
if (foo (-1wb) != 1uwb)
__builtin_abort ();
if (bar (1wb, 3uwb) != (unsigned _BitInt(300)) -4wb)
__builtin_abort ();
if (!qux (baz (100), 76))
__builtin_abort ();
}
Doesn't fail (nor #c0 nor #c1) on x86_64, neither -m64 -O2 nor -m32 -O2.