/* { dg-do run } */
/* { dg-options "-O" } */

struct S0 {
  signed f4;
  signed f9 : 5;
} a[6][5], b = {2}

;
int c, d;
int fn1() {
  struct S0 e[5][6];
  struct S0 f;
  b = f = e[2][5] = a[5][0];
  if (d)
    ;
  else
    return f.f9;
  e[c][45] = a[4][4];
}

int main() {
  fn1();
  if (b.f4 != 0)
    __builtin_abort ();
  return 0;
}