1// { dg-do assemble  }
2
3// Copyright (C) 1999, 2000 Free Software Foundation, Inc.
4// Contributed by Nathan Sidwell 4 Jun 1999 <nathan@acm.org>
5// Derived from a bug report from Stephan Riess <riess@bfw-online.de>
6// http://gcc.gnu.org/ml/gcc-bugs/1999-06n/msg00107.html
7
8// Builtin ops don't always need reference bindings, and we weren't removing
9// them always after doing overload resolution. This caused us to try and take
10// the address of a bitfield.
11
12enum E {one};
13struct A {
14  E m1: 8;
15  E m2: 8;
16  unsigned m3 : 8;
17  unsigned m4 : 8;
18};
19
20int fn (int f)
21{
22  A a;
23  E m1, m2;
24  E e;
25  int i;
26
27  e = f ? m1 : m2;
28  e = f ? a.m1 : a.m2;
29  i = f ? a.m3 : a.m4;
30  (f ? m1 : m2) = e;
31  (f ? a.m1 : a.m2) = e;
32  (f ? a.m3 : a.m4) = i;
33  return 0;
34}
35