-// PR 6788
-// Test that the thunk adjusts the this pointer properly.
-// { dg-do run }
-
-extern "C" void abort ();
-
-struct A
-{
- virtual void foo() = 0;
- char large[33*1024];
-};
-
-struct B
-{
- virtual void foo() = 0;
-};
-
-struct C : public A, public B
-{
- virtual void foo();
-};
-
-static C *match;
-
-void C::foo()
-{
- if (this != match)
- abort ();
-}
-
-void bar(B *x)
-{
- x->foo();
-}
-
-int main()
-{
- C obj;
- match = &obj;
- bar(&obj);
- return 0;
-}