blob: 8b78b58423f209e7b23ea8398094338b8e4f94a2 [file] [log] [blame]
/* PR target/85095 */
__attribute__((noipa)) unsigned long
f1 (unsigned long a, unsigned long b)
{
unsigned long i = __builtin_add_overflow (a, b, &a);
return a + i;
}
__attribute__((noipa)) unsigned long
f2 (unsigned long a, unsigned long b)
{
unsigned long i = __builtin_add_overflow (a, b, &a);
return a - i;
}
__attribute__((noipa)) unsigned long
f3 (unsigned int a, unsigned int b)
{
unsigned int i = __builtin_add_overflow (a, b, &a);
return a + i;
}
__attribute__((noipa)) unsigned long
f4 (unsigned int a, unsigned int b)
{
unsigned int i = __builtin_add_overflow (a, b, &a);
return a - i;
}
int
main ()
{
if (f1 (16UL, -18UL) != -2UL
|| f1 (16UL, -17UL) != -1UL
|| f1 (16UL, -16UL) != 1UL
|| f1 (16UL, -15UL) != 2UL
|| f2 (24UL, -26UL) != -2UL
|| f2 (24UL, -25UL) != -1UL
|| f2 (24UL, -24UL) != -1UL
|| f2 (24UL, -23UL) != 0UL
|| f3 (32U, -34U) != -2U
|| f3 (32U, -33U) != -1U
|| f3 (32U, -32U) != 1U
|| f3 (32U, -31U) != 2U
|| f4 (35U, -37U) != -2U
|| f4 (35U, -36U) != -1U
|| f4 (35U, -35U) != -1U
|| f4 (35U, -34U) != 0U)
__builtin_abort ();
return 0;
}