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