// { dg-do run } // Test that conversion from D* to B*& works properly. extern "C" int printf (const char *, ...); struct V { int a; }; struct B: virtual V { int b; }; struct D: B { int c; }; V* gp = 0; void foo(V * const &r) { gp = r; } int bar(V *r) { return (r != gp); } int main() { D *p = new D; foo(p); return bar(p); }