/* PR tree-optimization/102207 */ | |
/* { dg-do run { target int128 } } */ | |
/* { dg-options "-O2" } */ | |
typedef unsigned __int128 u128; | |
u128 | |
foo (unsigned short a) | |
{ | |
u128 g; | |
__builtin_sub_overflow ((unsigned long long) -a, 1, &g); | |
return g; | |
} | |
int | |
main () | |
{ | |
if (__SIZEOF_LONG_LONG__ * __CHAR_BIT__ != 64 | |
|| __SIZEOF_SHORT__ * __CHAR_BIT__ != 16) | |
return 0; | |
if (foo (1) != 0xfffffffffffffffeULL) | |
__builtin_abort (); | |
return 0; | |
} |