1 /* { dg-do run } */
2 /* { dg-require-effective-target int32plus } */
3 
4 extern void abort (void);
5 
6 struct {
7   unsigned f2;
8   unsigned f3 : 15;
9   unsigned f5 : 3;
10   short f6;
11 } b = {0x7f8000, 6, 5, 0}, g = {8, 0, 5, 0};
12 
13 short d, l;
14 int a, c, h = 8;
15 volatile char e[237] = {4};
16 short *f = &d;
17 short i[5] = {3};
18 char j;
19 int *k = &c;
20 
21 int
fn1(unsigned p1)22 fn1 (unsigned p1) { return -p1; }
23 
24 void
fn2(char p1)25 fn2 (char p1)
26 {
27   a = p1;
28   e[0];
29 }
30 
31 short
fn3()32 fn3 ()
33 {
34   *k = 4;
35   return *f;
36 }
37 
38 int
main()39 main ()
40 {
41 
42   unsigned m;
43   short *n = &i[4];
44 
45   m = fn1 ((h && j) <= b.f5);
46   l = m > g.f3;
47   *n = 3;
48   fn2 (b.f2 >> 15);
49   if ((a & 0xff) != 0xff)
50     abort ();
51 
52   return 0;
53 }
54