aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2006-05-05 19:48:26 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2006-05-05 19:48:26 +0000
commitb207220873a208cab0b8fea85bf5be77bcd15914 (patch)
treeaa813b8ac6a159a2f481000fe49a20f3087a69d1
parentedd54d25ada0f8674c1fd57158aaf4c169aed304 (diff)
downloadgcc-b207220873a208cab0b8fea85bf5be77bcd15914.zip
gcc-b207220873a208cab0b8fea85bf5be77bcd15914.tar.gz
gcc-b207220873a208cab0b8fea85bf5be77bcd15914.tar.bz2
re PR objc/27240 (ICE with invalid fields)
PR objc/27240 * objc-act.c (objc_is_public): Return early on invalid type. * objc.dg/member-1.m: New test. From-SVN: r113559
-rw-r--r--gcc/objc/ChangeLog5
-rw-r--r--gcc/objc/objc-act.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/objc.dg/member-1.m5
4 files changed, 18 insertions, 0 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 67ccd3b..2953216 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-05 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR objc/27240
+ * objc-act.c (objc_is_public): Return early on invalid type.
+
2006-03-02 Fariborz Jahanian <fjahanian@apple.com>
* objc-act.c (init_module_descriptor): Remove file name from
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index a90c061..7ed00ae 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -7168,6 +7168,9 @@ objc_is_public (tree expr, tree identifier)
return 1;
#endif
+ if (TREE_TYPE (expr) == error_mark_node)
+ return 1;
+
basetype = TYPE_MAIN_VARIANT (TREE_TYPE (expr));
if (basetype && TREE_CODE (basetype) == RECORD_TYPE)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ad986c9..4b75dbe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-05 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR objc/27240
+ * objc.dg/member-1.m: New test.
+
2006-05-05 Steve Ellcey <sje@cup.hp.com>
* gfortran.dg/large_real_kind_form_io_2.f90: Use nearest.
diff --git a/gcc/testsuite/objc.dg/member-1.m b/gcc/testsuite/objc.dg/member-1.m
new file mode 100644
index 0000000..4c7b5ae
--- /dev/null
+++ b/gcc/testsuite/objc.dg/member-1.m
@@ -0,0 +1,5 @@
+void foo()
+{
+ struct A a; /* { dg-error "storage size" } */
+ a.i;
+}