1// { dg-do run }
2// PR c++/11750
3
4struct A
5{
6  virtual void f() const { __builtin_abort(); }
7  virtual void g() {}
8};
9
10struct B : virtual A
11{
12  virtual void f() const {}
13  virtual void g() { __builtin_abort(); }
14};
15
16struct C : B, virtual A
17{
18  using A::f;
19  using A::g;
20};
21
22int main()
23{
24  C c;
25  c.f(); // call B::f
26
27  C c2;
28  c2.C::g(); // call A::g
29
30  C* c3 = &c;
31  c3->f(); // call B::f
32
33  C& c4 = c;
34  c4.f(); // call B::f
35
36  C const* c5 = &c;
37  c5->f(); // call B::f
38
39  C** c6 = &c3;
40  (*c6)->f(); // call B::f
41
42  C const& c7 = c;
43  c7.f(); // call B::f
44}
45