diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/init')
-rw-r--r-- | gcc/testsuite/g++.dg/init/copy7.C | 39 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/lifetime1.C | 29 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/lifetime2.C | 23 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/ref21.C | 7 |
4 files changed, 59 insertions, 39 deletions
diff --git a/gcc/testsuite/g++.dg/init/copy7.C b/gcc/testsuite/g++.dg/init/copy7.C deleted file mode 100644 index 20e1e47dbb9..00000000000 --- a/gcc/testsuite/g++.dg/init/copy7.C +++ /dev/null @@ -1,39 +0,0 @@ -// PR c++/39480 -// It isn't always safe to call memcpy with identical arguments. -// { dg-do run } - -extern "C" void abort(); -extern "C" void * -memcpy(void *dest, void *src, __SIZE_TYPE__ n) -{ - if (dest == src) - abort(); - else - { - __SIZE_TYPE__ i; - for (i = 0; i < n; i++) - ((char *)dest)[i] = ((const char*)src)[i]; - } -} - -struct A -{ - double d[10]; -}; - -struct B: public A -{ - char bc; -}; - -B b; - -void f(B *a1, B* a2) -{ - *a1 = *a2; -} - -int main() -{ - f(&b,&b); -} diff --git a/gcc/testsuite/g++.dg/init/lifetime1.C b/gcc/testsuite/g++.dg/init/lifetime1.C new file mode 100644 index 00000000000..57f8c62179a --- /dev/null +++ b/gcc/testsuite/g++.dg/init/lifetime1.C @@ -0,0 +1,29 @@ +// PR c++/48370 +// { dg-do run } + +extern "C" void abort(); + +int last = 4; + +struct A { + int i; + A(int i): i(i) { } + ~A() { if (i > last) abort(); last = i; } +}; + +struct D { int i; }; + +struct B: D, A { B(int i): A(i) { } }; +struct E: D, virtual A { E(int i): A(i) { } }; + +struct C +{ + const A& ar1; + const A& ar2; + const A& ar3; +}; + +int main() +{ + C c = { 1, B(2), E(3) }; +} diff --git a/gcc/testsuite/g++.dg/init/lifetime2.C b/gcc/testsuite/g++.dg/init/lifetime2.C new file mode 100644 index 00000000000..293bd692e9c --- /dev/null +++ b/gcc/testsuite/g++.dg/init/lifetime2.C @@ -0,0 +1,23 @@ +// PR c++/26714 +// { dg-do run } + +extern "C" void abort(); + +bool ok = false; +struct A +{ + A() { } + ~A() { if (!ok) abort(); } +}; + +struct B +{ + const A &a1; + const A &a2; + B() : a1(A()),a2(A()) { ok = true; } +}; + +int main() +{ + B b; +} diff --git a/gcc/testsuite/g++.dg/init/ref21.C b/gcc/testsuite/g++.dg/init/ref21.C new file mode 100644 index 00000000000..db4ac4a300f --- /dev/null +++ b/gcc/testsuite/g++.dg/init/ref21.C @@ -0,0 +1,7 @@ +struct A +{ + const int &i1; + const int &i2; +}; + +A a = { 1, 2 }; |