diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.mike/p12306a.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.mike/p12306a.C | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p12306a.C b/gcc/testsuite/g++.old-deja/g++.mike/p12306a.C new file mode 100644 index 000000000..8e47837c6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.mike/p12306a.C @@ -0,0 +1,36 @@ +// { dg-do run } +// prms-id: 12306 +// a net report of the same problem as 12306 + +class a { +public: + int i; +}; + +class g : virtual public a { +}; + +class b : virtual public a { + int j; +}; + +class c : public g, public b { +}; + +class d { +public: + virtual class b* get() {return 0;} +}; + +class f : public d { +public: + virtual class b* get() {return &_c;} + c _c; +}; + +int main(void) { + f D; + b* bp=D.get(); + D._c.i = 42; + return &D._c.i != &bp->i; +} |