24 lines
570 B
C
24 lines
570 B
C
/* PR tree-optimization/68835 */
|
|
/* { dg-do run { target int128 } } */
|
|
/* { dg-options "-fno-tree-forwprop -fno-tree-ccp -O1 -fno-tree-dominator-opts -fno-tree-fre" } */
|
|
|
|
__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;
|
|
}
|