1 // RUN: %clang_cc1 -emit-llvm %s -o %t
2 
3 // From GCC PR19331
4 struct SysParams
5 {
6  unsigned short tag;
7  unsigned short version;
8  unsigned int seqnum;
9  int contrast;
10  int igain_1, igain_2;
11  int oattn_1, oattn_2;
12  int max_out_vltg_1, max_out_vltg_2;
13  int max_mains_current;
14  int meters_mode;
15  int input_select;
16  _Bool input_parallelch2:1;
17  _Bool cliplmt_ch1:1;
18  _Bool cliplmt_ch2:1;
19  _Bool gate_ch1:1;
20  _Bool gate_ch2:1;
21  _Bool mute_ch1:1;
22  _Bool mute_ch2:1;
23  _Bool brownout:1;
24  _Bool power_on:1;
25  _Bool pwrup_mute:1;
26  _Bool keylock:1;
27  _Bool dsp_ch1:1;
28  _Bool dsp_ch2:1;
29  int dsp_preset;
30  long unlock_code;
31 };
32 extern struct SysParams params;
33 
34 void foo(void *);
35 void kcmd_setParams(void)
36 {
37  struct {
38   unsigned char igain_1;
39   unsigned char igain_2;
40   unsigned char max_out_vltg_1;
41   unsigned char max_out_vltg_2;
42   unsigned char max_imains;
43   unsigned char cliplmt_ch1:1;
44   unsigned char cliplmt_ch2:1;
45   unsigned char gate_ch1:1;
46   unsigned char gate_ch2:1;
47  } msg;
48  foo(&msg);
49  params.cliplmt_ch1 = msg.cliplmt_ch1;
50  params.cliplmt_ch2 = msg.cliplmt_ch2;
51  params.gate_ch1 = msg.gate_ch1;
52  params.gate_ch2 = msg.gate_ch2;
53 }
54 
55