| /* PR tree-optimization/113736 */ |
| /* { dg-do compile { target bitint } } */ |
| /* { dg-options "-O2 -std=gnu23 -w" } */ |
| |
| #if __BITINT_MAXWIDTH__ >= 710 |
| struct S { _BitInt(710) a; }; |
| struct T { struct S b[4]; }; |
| |
| #ifdef __x86_64__ |
| #define SEG __seg_gs |
| #elif defined __i386__ |
| #define SEG __seg_fs |
| #else |
| #define SEG |
| #endif |
| |
| void |
| foo (SEG struct T *p) |
| { |
| struct S s; |
| p->b[0] = s; |
| } |
| |
| void |
| bar (SEG struct T *p, _BitInt(710) x, int y, double z) |
| { |
| p->b[0].a = x + 42; |
| p->b[1].a = x << y; |
| p->b[2].a = x >> y; |
| p->b[3].a = z; |
| } |
| |
| int |
| baz (SEG struct T *p, _BitInt(710) x, _BitInt(710) y) |
| { |
| return __builtin_add_overflow (x, y, &p->b[1].a); |
| } |
| #else |
| int i; |
| #endif |