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