xref: /llvm-project/clang/test/CodeGenCXX/nested-base-member-access.cpp (revision d375454dcf33c1285e40d27b97137aadf1f49f01)
1 // RUN: clang-cc %s -emit-llvm -o %t
2 
3 extern "C" int printf(...);
4 
5 struct M {
6   M(int i){ iM = i; }
7   int iM;
8   void MPR() { printf("iM = %d\n", iM); }
9 
10 };
11 
12 struct Q {
13   Q(int i){ iQ = i; }
14   int iQ;
15   void QPR() { printf("iQ = %d\n", iQ); }
16 };
17 
18 struct IQ {
19   IQ(int i) { iIQ = i; }
20   void IQPR() { printf("iIQ = %d\n", iIQ); }
21   int iIQ;
22 };
23 
24 struct L : IQ {
25   L(int i) : IQ(i+100) { iL = i; }
26   int iL;
27 };
28 
29 struct P : Q, L  {
30   P(int i) : Q(i+100), L(i+200) { iP = i; }
31   int iP;
32   void PPR() { printf("iP = %d\n", iP); }
33 };
34 
35 
36 struct N : M,P {
37   N() : M(100), P(200) {}
38   void PR() { this->MPR(); this->PPR(); this->QPR();
39 	      IQPR();
40 	      printf("iM = %d\n", iM);
41 	      printf("iP = %d\n", iP);
42  	      printf("iQ = %d\n", iQ);
43  	      printf("iL = %d\n", iL);
44  	      printf("iIQ = %d\n", iIQ);
45 	      }
46 };
47 
48 int main() {
49   N n1;
50   n1.PR();
51 }
52