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