xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenCXX/nested-base-member-access.cpp (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -emit-llvm -o %t
2*f4a2713aSLionel Sambuc 
3*f4a2713aSLionel Sambuc extern "C" int printf(...);
4*f4a2713aSLionel Sambuc 
5*f4a2713aSLionel Sambuc struct M {
MM6*f4a2713aSLionel Sambuc   M(int i){ iM = i; }
7*f4a2713aSLionel Sambuc   int iM;
MPRM8*f4a2713aSLionel Sambuc   void MPR() { printf("iM = %d\n", iM); }
9*f4a2713aSLionel Sambuc 
10*f4a2713aSLionel Sambuc };
11*f4a2713aSLionel Sambuc 
12*f4a2713aSLionel Sambuc struct Q {
QQ13*f4a2713aSLionel Sambuc   Q(int i){ iQ = i; }
14*f4a2713aSLionel Sambuc   int iQ;
QPRQ15*f4a2713aSLionel Sambuc   void QPR() { printf("iQ = %d\n", iQ); }
16*f4a2713aSLionel Sambuc };
17*f4a2713aSLionel Sambuc 
18*f4a2713aSLionel Sambuc struct IQ {
IQIQ19*f4a2713aSLionel Sambuc   IQ(int i) { iIQ = i; }
IQPRIQ20*f4a2713aSLionel Sambuc   void IQPR() { printf("iIQ = %d\n", iIQ); }
21*f4a2713aSLionel Sambuc   int iIQ;
22*f4a2713aSLionel Sambuc };
23*f4a2713aSLionel Sambuc 
24*f4a2713aSLionel Sambuc struct L : IQ {
LL25*f4a2713aSLionel Sambuc   L(int i) : IQ(i+100) { iL = i; }
26*f4a2713aSLionel Sambuc   int iL;
27*f4a2713aSLionel Sambuc };
28*f4a2713aSLionel Sambuc 
29*f4a2713aSLionel Sambuc struct P : Q, L  {
PP30*f4a2713aSLionel Sambuc   P(int i) : Q(i+100), L(i+200) { iP = i; }
31*f4a2713aSLionel Sambuc   int iP;
PPRP32*f4a2713aSLionel Sambuc   void PPR() { printf("iP = %d\n", iP); }
33*f4a2713aSLionel Sambuc };
34*f4a2713aSLionel Sambuc 
35*f4a2713aSLionel Sambuc 
36*f4a2713aSLionel Sambuc struct N : M,P {
NN37*f4a2713aSLionel Sambuc   N() : M(100), P(200) {}
PRN38*f4a2713aSLionel Sambuc   void PR() {
39*f4a2713aSLionel Sambuc     this->MPR(); this->PPR(); this->QPR();
40*f4a2713aSLionel Sambuc     IQPR();
41*f4a2713aSLionel Sambuc     printf("iM = %d\n", iM);
42*f4a2713aSLionel Sambuc     printf("iP = %d\n", iP);
43*f4a2713aSLionel Sambuc     printf("iQ = %d\n", iQ);
44*f4a2713aSLionel Sambuc     printf("iL = %d\n", iL);
45*f4a2713aSLionel Sambuc     printf("iIQ = %d\n", iIQ);
46*f4a2713aSLionel Sambuc   }
47*f4a2713aSLionel Sambuc };
48*f4a2713aSLionel Sambuc 
main()49*f4a2713aSLionel Sambuc int main() {
50*f4a2713aSLionel Sambuc   N n1;
51*f4a2713aSLionel Sambuc   n1.PR();
52*f4a2713aSLionel Sambuc }
53