blob: b0d7ddc7796fc9e2bb2490caa76d543af6b7c495 [file] [log] [blame]
Fariborz Jahaniana6362992009-10-21 18:38:00 +00001// RUN: clang-cc -emit-llvm -o - %s
2
3extern "C" int printf(...);
4
Fariborz Jahanian39762952009-10-21 21:01:47 +00005struct V {
6 double d;
7 int iV;
8};
9
10struct B : virtual V{
11 double d;
12 int iB;
13};
14
15struct B1 : virtual V{
16 double d;
17 int iB1;
18};
19
20class A : public B, public B1 {
Fariborz Jahaniana6362992009-10-21 18:38:00 +000021public:
Fariborz Jahanianf51dc642009-10-21 23:45:42 +000022 A() : f(1.0), d(2.0), Ai(3) {}
Fariborz Jahaniana6362992009-10-21 18:38:00 +000023 float f;
24 double d;
25 int Ai;
26};
27
28int main()
29{
30 A a1;
31 int A::* pa = &A::Ai;
32 float A::* pf = &A::f;
33 double A::* pd = &A::d;
34 printf("%d %d %d\n", &A::Ai, &A::f, &A::d);
Fariborz Jahanian39762952009-10-21 21:01:47 +000035 printf("%d\n", &A::B::iB);
36 printf("%d\n", &A::B1::iB1);
37 printf("%d\n", &A::f);
38 printf("%d\n", &A::B::iV);
39 printf("%d\n", &A::B1::iV);
40 printf("%d\n", &A::B::V::iV);
41 printf("%d\n", &A::B1::V::iV);
Fariborz Jahanianf51dc642009-10-21 23:45:42 +000042 printf("%d, %f, %f \n", a1.*pa, a1.*pf, a1.*pd);
Fariborz Jahaniana6362992009-10-21 18:38:00 +000043}