1*8fbe78f6SDaniel Dunbar // RUN: %clang_cc1 %s -emit-llvm -o %t
2d375454dSFariborz Jahanian
3d375454dSFariborz Jahanian extern "C" int printf(...);
4d375454dSFariborz Jahanian
5d375454dSFariborz Jahanian struct M {
MM6d375454dSFariborz Jahanian M(int i){ iM = i; }
7d375454dSFariborz Jahanian int iM;
MPRM8d375454dSFariborz Jahanian void MPR() { printf("iM = %d\n", iM); }
9d375454dSFariborz Jahanian
10d375454dSFariborz Jahanian };
11d375454dSFariborz Jahanian
12d375454dSFariborz Jahanian struct Q {
QQ13d375454dSFariborz Jahanian Q(int i){ iQ = i; }
14d375454dSFariborz Jahanian int iQ;
QPRQ15d375454dSFariborz Jahanian void QPR() { printf("iQ = %d\n", iQ); }
16d375454dSFariborz Jahanian };
17d375454dSFariborz Jahanian
18d375454dSFariborz Jahanian struct IQ {
IQIQ19d375454dSFariborz Jahanian IQ(int i) { iIQ = i; }
IQPRIQ20d375454dSFariborz Jahanian void IQPR() { printf("iIQ = %d\n", iIQ); }
21d375454dSFariborz Jahanian int iIQ;
22d375454dSFariborz Jahanian };
23d375454dSFariborz Jahanian
24d375454dSFariborz Jahanian struct L : IQ {
LL25d375454dSFariborz Jahanian L(int i) : IQ(i+100) { iL = i; }
26d375454dSFariborz Jahanian int iL;
27d375454dSFariborz Jahanian };
28d375454dSFariborz Jahanian
29d375454dSFariborz Jahanian struct P : Q, L {
PP30d375454dSFariborz Jahanian P(int i) : Q(i+100), L(i+200) { iP = i; }
31d375454dSFariborz Jahanian int iP;
PPRP32d375454dSFariborz Jahanian void PPR() { printf("iP = %d\n", iP); }
33d375454dSFariborz Jahanian };
34d375454dSFariborz Jahanian
35d375454dSFariborz Jahanian
36d375454dSFariborz Jahanian struct N : M,P {
NN37d375454dSFariborz Jahanian N() : M(100), P(200) {}
PRN3811289f42SMike Stump void PR() {
3911289f42SMike Stump this->MPR(); this->PPR(); this->QPR();
40d375454dSFariborz Jahanian IQPR();
41d375454dSFariborz Jahanian printf("iM = %d\n", iM);
42d375454dSFariborz Jahanian printf("iP = %d\n", iP);
43d375454dSFariborz Jahanian printf("iQ = %d\n", iQ);
44d375454dSFariborz Jahanian printf("iL = %d\n", iL);
45d375454dSFariborz Jahanian printf("iIQ = %d\n", iIQ);
46d375454dSFariborz Jahanian }
47d375454dSFariborz Jahanian };
48d375454dSFariborz Jahanian
main()49d375454dSFariborz Jahanian int main() {
50d375454dSFariborz Jahanian N n1;
51d375454dSFariborz Jahanian n1.PR();
52d375454dSFariborz Jahanian }
53