diff options
Diffstat (limited to 'libvtv/testsuite/libvtv.cc/thunk.cc')
-rw-r--r-- | libvtv/testsuite/libvtv.cc/thunk.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/libvtv/testsuite/libvtv.cc/thunk.cc b/libvtv/testsuite/libvtv.cc/thunk.cc new file mode 100644 index 00000000000..bec1057f564 --- /dev/null +++ b/libvtv/testsuite/libvtv.cc/thunk.cc @@ -0,0 +1,37 @@ +// { dg-do run } + +#include <assert.h> +struct A { + A():value(123) {} + int value; + virtual int access() { return this->value; } +}; +struct B { + B():value(456) {} + int value; + virtual int access() { return this->value; } +}; +struct C : public A, public B { + C():better_value(789) {} + int better_value; + virtual int access() { return this->better_value; } +}; +struct D: public C { + D():other_value(987) {} + int other_value; + virtual int access() { return this->other_value; } +}; + +int use(B *b) +{ + return b->access(); +} + +int main() +{ + C c; + assert(use(&c) == 789); + D d; + assert(use(&d) == 987); + return 0; +} |