X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gcc%2Ftestsuite%2Fg%2B%2B.dg%2Fabi%2Fempty4.C;fp=gcc%2Ftestsuite%2Fg%2B%2B.dg%2Fabi%2Fempty4.C;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=d20a55cf7fcaa4c72156c251973d43c49d922a8f;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/gcc/testsuite/g++.dg/abi/empty4.C b/gcc/testsuite/g++.dg/abi/empty4.C deleted file mode 100644 index d20a55cf..00000000 --- a/gcc/testsuite/g++.dg/abi/empty4.C +++ /dev/null @@ -1,86 +0,0 @@ -// { dg-do run } - -// Copyright (C) 2001 Free Software Foundation, Inc. -// Contributed by Nathan Sidwell 31 Jul 2001 - -// Bug 3820. We were bit copying empty bases including the -// padding. Which clobbers whatever they overlay. - -struct Empty {}; - -struct Inter : Empty {}; - -long now = 0; - -struct NonPod -{ - long m; - - NonPod () {m = 0x12345678;} - NonPod (long m_) {m = m_;} - NonPod &operator= (NonPod const &src) {now = m; m = src.m; return *this;} - NonPod (NonPod const &src) {m = src.m;} -}; - -struct A : Inter -{ - A (long c) {m = c;} - - NonPod m; -}; - -struct B -{ - Inter empty; - NonPod m; - - B (long c) {m = c;} -}; - -struct C : NonPod, Inter -{ - C (long c) : NonPod (c), Inter () {} -}; - -int main () -{ - A a (0x12131415); - - long was = a.m.m; - - a = 0x22232425; - - if (was != now) - return 1; // we copied the empty base which clobbered a.m.m's - // original value. - - A b (0x32333435); - *(Inter *)&a = *(Inter *)&b; - - if (a.m.m != 0x22232425) - return 2; // we copied padding, which clobbered a.m.m - - A b2 (0x32333435); - (Inter &)b2 = Inter (); - if (b2.m.m != 0x32333435) - return 2; // we copied padding, which clobbered b2.m.m - - B c (0x12131415); - was = c.m.m; - c = 0x22232425; - if (was != now) - return 3; - - B d (0x32333435); - c.empty = d.empty; - - if (c.m.m != 0x22232425) - return 4; - - C e (0x32333435); - - if (e.m != 0x32333435) - return 2; // we copied padding - - return 0; -}