// 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(); | |
} | |