// RUN: %clang_cc1 -emit-llvm -o %t %s
// RUN: not grep "_ZN1XaSERK1X" %t

extern "C" int printf(...);

struct B {
  B() : B1(3.14), B2(3.15), auB2(3.16)  {} 
  float B1;
  float B2;
  void pr() {
    printf("B1 = %f B2 = %f auB1 = %f\n", B1, B2, auB1);
  }

  union {
    float auB1;
    float auB2;
  };
};

struct M {
  M() : M1(10), M2(11) , auM1(12) {} 
  int M1;
  int M2;
  void pr() {
    printf("M1 = %d M2 = %d auM1 = %d auM2 = %d\n", M1, M2, auM1, auM2);
  }
  union {
    int auM1;
    int auM2;
  };
};

struct N  : B {
  N() : N1(20), N2(21) {} 
  int N1;
  int N2;
  void pr() {
    printf("N1 = %d N2 = %d\n", N1, N2);
    B::pr();
  }
};

struct Q {
  Q() : Q1(30), Q2(31) {} 
  int Q1;
  int Q2;
  void pr() {
    printf("Q1 = %d Q2 = %d\n", Q1, Q2);
  }
};


struct X : M , N { 
  X() : d(0.0), d1(1.1), d2(1.2), d3(1.3) {}
  double d;
  double d1;
  double d2;
  double d3;
  void pr() {
    printf("d = %f d1 = %f d2 = %f d3 = %f\n", d, d1,d2,d3);
    M::pr(); N::pr();
    q1.pr(); q2.pr();
  }

 Q q1, q2;
}; 


X srcX; 
X dstX; 
X dstY; 

int main() {
  dstY = dstX = srcX;
  srcX.pr();
  dstX.pr();
  dstY.pr();
}

