| /* PR tree-optimization/68835 */ | |
| /* { dg-do run { target int128 } } */ | |
| /* { dg-options "-O2" } */ | |
| __attribute__((noinline, noclone)) unsigned __int128 | |
| foo (void) | |
| { | |
| unsigned __int128 x = (unsigned __int128) 0xffffffffffffffffULL; | |
| struct { unsigned __int128 a : 65; } w; | |
| w.a = x; | |
| w.a += x; | |
| return w.a; | |
| } | |
| int | |
| main () | |
| { | |
| unsigned __int128 x = foo (); | |
| if ((unsigned long long) x != 0xfffffffffffffffeULL | |
| || (unsigned long long) (x >> 64) != 1) | |
| __builtin_abort (); | |
| return 0; | |
| } |