1// PR c++/37146
2// { dg-do run }
3
4extern "C" void abort ();
5int a, b;
6struct A { int i:8; int j:8; int k:16; int l:32; } c;
7
8int
9f1 (int x)
10{
11  return x ? a : b;
12}
13
14int
15f2 (int x)
16{
17  return x ? c.i : c.j;
18}
19
20int
21f3 (int x)
22{
23  return x ? c.i : a;
24}
25
26int
27f4 (int x)
28{
29  return x ? c.i : c.k;
30}
31
32int
33f5 (int x)
34{
35  return x ? c.l : b;
36}
37
38int
39main ()
40{
41  a = 17;
42  b = 18;
43  c.i = 19;
44  c.j = 20;
45  c.k = 21;
46  c.l = 22;
47  if (f1 (1) != a)
48    abort ();
49  if (f1 (0) != b)
50    abort ();
51  if (f2 (1) != c.i)
52    abort ();
53  if (f2 (0) != c.j)
54    abort ();
55  if (f3 (1) != c.i)
56    abort ();
57  if (f3 (0) != a)
58    abort ();
59  if (f4 (1) != c.i)
60    abort ();
61  if (f4 (0) != c.k)
62    abort ();
63  if (f5 (1) != c.l)
64    abort ();
65  if (f5 (0) != b)
66    abort ();
67}
68