1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -emit-llvm -o %t %s
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: grep "_ZN1XaSERK1X" %t | count 0
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoextern "C" int printf(...);
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct B {
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  B() : B1(3.14), B2(3.15), auB2(3.16)  {}
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  float B1;
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  float B2;
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void pr() {
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    printf("B1 = %f B2 = %f auB1 = %f\n", B1, B2, auB1);
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  }
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  union {
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    float auB1;
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    float auB2;
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  };
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct M {
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  M() : M1(10), M2(11) , auM1(12) {}
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int M1;
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int M2;
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void pr() {
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    printf("M1 = %d M2 = %d auM1 = %d auM2 = %d\n", M1, M2, auM1, auM2);
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  }
27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  union {
28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    int auM1;
29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    int auM2;
30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  };
31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct N  : B {
34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  N() : N1(20), N2(21) {}
35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int N1;
36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int N2;
37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void pr() {
38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    printf("N1 = %d N2 = %d\n", N1, N2);
39ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    B::pr();
40ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  }
41ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
42ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
43ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct Q {
44ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  Q() : Q1(30), Q2(31) {}
45ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int Q1;
46ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int Q2;
47ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void pr() {
48ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    printf("Q1 = %d Q2 = %d\n", Q1, Q2);
49ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  }
50ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
51ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
52ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
53ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct X : M , N {
54ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  X() : d(0.0), d1(1.1), d2(1.2), d3(1.3) {}
55ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  double d;
56ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  double d1;
57ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  double d2;
58ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  double d3;
59ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  void pr() {
60ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    printf("d = %f d1 = %f d2 = %f d3 = %f\n", d, d1,d2,d3);
61ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    M::pr(); N::pr();
62ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao    q1.pr(); q2.pr();
63ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  }
64ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
65ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao Q q1, q2;
66ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
67ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
68ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
69ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoX srcX;
70ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoX dstX;
71ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoX dstY;
72ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
73ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint main() {
74ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  dstY = dstX = srcX;
75ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  srcX.pr();
76ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  dstX.pr();
77ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  dstY.pr();
78ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
79ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
80