From 124e57323716bfe1d0cb69a1516c158f72c777ed Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Thu, 29 Oct 1998 13:44:56 +0000 Subject: [PATCH] init9.C: test cross initialization of non-POD types * g++.old-deja/g++.other/init9.C: test cross initialization of non-POD types From-SVN: r23428 --- gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/g++.old-deja/g++.other/init9.C | 40 ++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.other/init9.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5a7c4c4f3ab..d0e2a39ab9e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +1998-10-29 Alexandre Oliva + + * g++.old-deja/g++.other/init9.C: test cross initialization of + non-POD types + 1998-10-27 Alexandre Oliva * lib/old-dejagnu.exp (old-dejagnu): document `Additional sources' diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C new file mode 100644 index 00000000000..c9ea3a54082 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C @@ -0,0 +1,40 @@ +// Build don't link: + +// Based on a testcase submitted by Tudor Hulubei + +// X is not a POD because it has a user-defined destructor. +// Therefore, we can't cross its initialization. + +// vector is not even an aggregate; nevertheless, no error is +// reported... + +struct A { + A() {} +}; + +void a() { + goto bar; // ERROR - jump from here + A x; // ERROR - jump crosses initialization + bar: // ERROR - jump to here + ; +} + +struct X { + ~X() {} +}; + +void b() { + goto bar; // ERROR - jump from here - XFAIL *-*-* + X x; // ERROR - jump crosses initialization - XFAIL *-*-* + bar: // ERROR - jump to here - XFAIL *-*-* + ; +} + +#include + +void c() { + goto bar; // ERROR - jump from here - XFAIL *-*-* + vector x; // ERROR - jump crosses initialization - XFAIL *-*-* + bar: // ERROR - jump to here - XFAIL *-*-* + ; +} -- 2.30.2