// RUN: clang-cc -emit-llvm %s -o %t

// From GCC PR19331
struct SysParams
{
 unsigned short tag;
 unsigned short version;
 unsigned int seqnum;
 int contrast;
 int igain_1, igain_2;
 int oattn_1, oattn_2;
 int max_out_vltg_1, max_out_vltg_2;
 int max_mains_current;
 int meters_mode;
 int input_select;
 _Bool input_parallelch2:1;
 _Bool cliplmt_ch1:1;
 _Bool cliplmt_ch2:1;
 _Bool gate_ch1:1;
 _Bool gate_ch2:1;
 _Bool mute_ch1:1;
 _Bool mute_ch2:1;
 _Bool brownout:1;
 _Bool power_on:1;
 _Bool pwrup_mute:1;
 _Bool keylock:1;
 _Bool dsp_ch1:1;
 _Bool dsp_ch2:1;
 int dsp_preset;
 long unlock_code;
};
extern struct SysParams params;

void foo(void *);
void kcmd_setParams(void)
{
 struct {
  unsigned char igain_1;
  unsigned char igain_2;
  unsigned char max_out_vltg_1;
  unsigned char max_out_vltg_2;
  unsigned char max_imains;
  unsigned char cliplmt_ch1:1;
  unsigned char cliplmt_ch2:1;
  unsigned char gate_ch1:1;
  unsigned char gate_ch2:1;
 } msg;
 foo(&msg);
 params.cliplmt_ch1 = msg.cliplmt_ch1;
 params.cliplmt_ch2 = msg.cliplmt_ch2;
 params.gate_ch1 = msg.gate_ch1;
 params.gate_ch2 = msg.gate_ch2;
}

