43 lines
446 B
C
43 lines
446 B
C
// 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;
|
|
}
|