re PR objc/27240 (ICE with invalid fields)
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>
Fri, 5 May 2006 19:48:26 +0000 (19:48 +0000)
committerVolker Reichelt <reichelt@gcc.gnu.org>
Fri, 5 May 2006 19:48:26 +0000 (19:48 +0000)
PR objc/27240
* objc-act.c (objc_is_public): Return early on invalid type.

* objc.dg/member-1.m: New test.

From-SVN: r113559

gcc/objc/ChangeLog
gcc/objc/objc-act.c
gcc/testsuite/ChangeLog
gcc/testsuite/objc.dg/member-1.m [new file with mode: 0644]

index 67ccd3be55e3ffc6f30dce9b9bcc73954240f25a..29532163c65d116760a058bca4b67b991a9c1c6e 100644 (file)
@@ -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
index a90c0614b5e8cec53484c350a6f0b1d6a8caaee5..7ed00ae78fbeaa38cdad121dd86417b1df58f064 100644 (file)
@@ -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)
index ad986c9248ec02724a1cea1804c1ef68062442b7..4b75dbe6f2f54b212b669f9ae2c89578c908b10d 100644 (file)
@@ -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 (file)
index 0000000..4c7b5ae
--- /dev/null
@@ -0,0 +1,5 @@
+void foo()
+{
+  struct A a;  /* { dg-error "storage size" } */
+  a.i;
+}