| // RUN: %clang_cc1 %s -emit-llvm -o %t | 
 |  | 
 | extern "C" int printf(...); | 
 |  | 
 | struct M { | 
 |   M(int i){ iM = i; } | 
 |   int iM; | 
 |   void MPR() { printf("iM = %d\n", iM); } | 
 |  | 
 | }; | 
 |  | 
 | struct Q { | 
 |   Q(int i){ iQ = i; } | 
 |   int iQ; | 
 |   void QPR() { printf("iQ = %d\n", iQ); } | 
 | }; | 
 |  | 
 | struct IQ { | 
 |   IQ(int i) { iIQ = i; } | 
 |   void IQPR() { printf("iIQ = %d\n", iIQ); } | 
 |   int iIQ; | 
 | }; | 
 |  | 
 | struct L : IQ { | 
 |   L(int i) : IQ(i+100) { iL = i; } | 
 |   int iL; | 
 | }; | 
 |  | 
 | struct P : Q, L  { | 
 |   P(int i) : Q(i+100), L(i+200) { iP = i; } | 
 |   int iP; | 
 |   void PPR() { printf("iP = %d\n", iP); } | 
 | }; | 
 |  | 
 |  | 
 | struct N : M,P { | 
 |   N() : M(100), P(200) {} | 
 |   void PR() { | 
 |     this->MPR(); this->PPR(); this->QPR();  | 
 |     IQPR(); | 
 |     printf("iM = %d\n", iM);  | 
 |     printf("iP = %d\n", iP); | 
 |     printf("iQ = %d\n", iQ); | 
 |     printf("iL = %d\n", iL); | 
 |     printf("iIQ = %d\n", iIQ); | 
 |   } | 
 | }; | 
 |  | 
 | int main() { | 
 |   N n1; | 
 |   n1.PR(); | 
 | } |