xref: /llvm-project/clang/test/CodeGenCXX/nested-base-member-access.cpp (revision 8fbe78f6fc7b41d1a4228c126fcb522131150518)
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