/* { dg-do run } */ struct foo { __UINT32_TYPE__ x; }; typedef struct foo foo; static inline __INT32_TYPE__ zot(foo *f) { int ret; if (f->x > 0x7FFFFFFF) ret = (__INT32_TYPE__)(f->x - 0x7FFFFFFF); else ret = (__INT32_TYPE__)f->x - 0x7FFFFFFF; return ret; } void __attribute__((noinline,noclone)) bar(foo *f) { __INT32_TYPE__ ret = zot(f); volatile __INT32_TYPE__ x = ret; if (ret < 1) __builtin_abort (); } int main() { foo f; f.x = 0x800003f8; bar(&f); return 0; }