1 /* { dg-do run } */
2 
3 struct foo
4 {
5   __UINT32_TYPE__ x;
6 };
7 typedef struct foo foo;
8 
zot(foo * f)9 static inline __INT32_TYPE__ zot(foo *f)
10 {
11   int ret;
12 
13   if (f->x > 0x7FFFFFFF)
14     ret = (__INT32_TYPE__)(f->x - 0x7FFFFFFF);
15   else
16     ret = (__INT32_TYPE__)f->x - 0x7FFFFFFF;
17   return ret;
18 }
19 
bar(foo * f)20 void __attribute__((noinline,noclone)) bar(foo *f)
21 {
22   __INT32_TYPE__ ret = zot(f);
23   volatile __INT32_TYPE__ x = ret;
24   if (ret < 1)
25     __builtin_abort ();
26 }
27 
main()28 int main()
29 {
30   foo f;
31   f.x = 0x800003f8;
32 
33   bar(&f);
34   return 0;
35 }
36