diff options
author | Alexandre Oliva <oliva@dcc.unicamp.br> | 1998-10-29 13:44:56 +0000 |
---|---|---|
committer | Alexandre Oliva <oliva@gcc.gnu.org> | 1998-10-29 13:44:56 +0000 |
commit | 124e57323716bfe1d0cb69a1516c158f72c777ed (patch) | |
tree | 731d74752fe618b1a017897f56e6d85d54c0ffeb /gcc | |
parent | 1e2800358a9df1c5379e7bd66b9858b452742cb6 (diff) | |
download | gcc-124e57323716bfe1d0cb69a1516c158f72c777ed.zip gcc-124e57323716bfe1d0cb69a1516c158f72c777ed.tar.gz gcc-124e57323716bfe1d0cb69a1516c158f72c777ed.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/init9.C | 40 |
2 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5a7c4c4..d0e2a39 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +1998-10-29 Alexandre Oliva <oliva@dcc.unicamp.br> + + * g++.old-deja/g++.other/init9.C: test cross initialization of + non-POD types + 1998-10-27 Alexandre Oliva <oliva@dcc.unicamp.br> * 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 0000000..c9ea3a5 --- /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 <tudor@cs.unh.edu> + +// X is not a POD because it has a user-defined destructor. +// Therefore, we can't cross its initialization. + +// vector<int> 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 <vector> + +void c() { + goto bar; // ERROR - jump from here - XFAIL *-*-* + vector<int> x; // ERROR - jump crosses initialization - XFAIL *-*-* + bar: // ERROR - jump to here - XFAIL *-*-* + ; +} |