aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2006-04-24 08:38:05 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2006-04-24 08:38:05 +0000
commit4e3bd7d56163a9d91ba255cbbbf4fa234b3da11a (patch)
tree2ef3f8856d88e9429a644d0ca74faf8fd25465a5 /gcc
parentc0a3f887e5153990dd33e72dd4a6530ba19ab5ce (diff)
downloadgcc-4e3bd7d56163a9d91ba255cbbbf4fa234b3da11a.zip
gcc-4e3bd7d56163a9d91ba255cbbbf4fa234b3da11a.tar.gz
gcc-4e3bd7d56163a9d91ba255cbbbf4fa234b3da11a.tar.bz2
re PR c++/19963 (ICE on invalid member declaration)
PR c++/19963 * class.c (layout_class_type): Skip fields with invalid types. * g++.dg/other/incomplete2.C: New test. From-SVN: r113220
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/class.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/other/incomplete2.C14
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0d24702..fe48ced 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/19963
+ * class.c (layout_class_type): Skip fields with invalid types.
+
2006-04-23 Mark Mitchell <mark@codesourcery.com>
PR c++/26912
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 1cf87dc..a7536bb 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -4607,6 +4607,8 @@ layout_class_type (tree t, tree *virtuals_p)
}
type = TREE_TYPE (field);
+ if (type == error_mark_node)
+ continue;
padding = NULL_TREE;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3c6b413..f477f4b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/19963
+ * g++.dg/other/incomplete2.C: New test.
+
2006-04-24 Richard Guenther <rguenther@suse.de>
PR middle-end/26869
diff --git a/gcc/testsuite/g++.dg/other/incomplete2.C b/gcc/testsuite/g++.dg/other/incomplete2.C
new file mode 100644
index 0000000..127bf58
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/incomplete2.C
@@ -0,0 +1,14 @@
+// PR c++/19963
+// { dg-do compile }
+
+struct A;
+
+struct B
+{
+ A a : 1; // { dg-error "incomplete" }
+};
+
+struct S
+{
+ S : 1; // { dg-error "incomplete" }
+};