// 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;
}
