aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@dcc.unicamp.br>1998-10-29 13:44:56 +0000
committerAlexandre Oliva <oliva@gcc.gnu.org>1998-10-29 13:44:56 +0000
commit124e57323716bfe1d0cb69a1516c158f72c777ed (patch)
tree731d74752fe618b1a017897f56e6d85d54c0ffeb /gcc
parent1e2800358a9df1c5379e7bd66b9858b452742cb6 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/init9.C40
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 *-*-*
+ ;
+}