// { dg-do compile }

// Copyright (C) 2003 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 28 Jan 2003 <nathan@codesourcery.com>

// PR 9433. segfault at runtime.

struct A        { virtual void f() {} };
struct B        {int b;};
struct C : A, B { virtual void f() {} int c;};
struct D : C    {int d;};
struct E : C    {int e;};
struct F : protected D, E  {int f;};
struct H : virtual F {int h;};
struct I : H  {int i;};
struct J : H  {int j;};
struct K : I, J { virtual void f() {} int k; };
struct M : K  {int m;};
struct N : M  {int n;};
struct O : M  {int o;};
struct P : N, O { virtual void f() {} int p;};

int main()
{
  P obj;
  A* a1 = (D *) (&obj);
  H* hp = dynamic_cast<H*>(a1);
  return hp != 0;
}
