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