diff mbox

[C++] Fix ICE in build_zero_init_1 (PR c++/60572)

Message ID 20140319205048.GE1817@tucnak.redhat.com
State New
Headers show

Commit Message

Jakub Jelinek March 19, 2014, 8:50 p.m. UTC
Hi!

On the following testcase starting with r199779 we have a FIELD_DECL with
error_mark_node type, on which we ICE.  Fixed by ignoring such FIELD_DECLs.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2014-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c++/60572
	* init.c (build_zero_init_1): Ignore fields with error_mark_node
	type.

	* g++.dg/init/pr60572.C: New test.


	Jakub

Comments

Jason Merrill March 20, 2014, 7:27 p.m. UTC | #1
OK.

Jason
diff mbox

Patch

--- gcc/cp/init.c.jj	2014-03-10 10:50:14.000000000 +0100
+++ gcc/cp/init.c	2014-03-19 07:43:54.077795662 +0100
@@ -192,6 +192,9 @@  build_zero_init_1 (tree type, tree nelts
 	  if (TREE_CODE (field) != FIELD_DECL)
 	    continue;
 
+	  if (TREE_TYPE (field) == error_mark_node)
+	    continue;
+
 	  /* Don't add virtual bases for base classes if they are beyond
 	     the size of the current field, that means it is present
 	     somewhere else in the object.  */
--- gcc/testsuite/g++.dg/init/pr60572.C.jj	2014-03-19 07:46:33.607894844 +0100
+++ gcc/testsuite/g++.dg/init/pr60572.C	2014-03-19 07:46:49.752804722 +0100
@@ -0,0 +1,13 @@ 
+// PR c++/60572
+// { dg-do compile }
+
+struct A
+{
+  A x;	// { dg-error "incomplete type" }
+  virtual ~A () {}
+};
+
+struct B : A
+{
+  B () : A () {}
+};