diff mbox series

Fix verifier ICE on array simplification

Message ID 20181224112244.qknt32sgzo7vup5v@kam.mff.cuni.cz
State New
Headers show
Series Fix verifier ICE on array simplification | expand

Commit Message

Jan Hubicka Dec. 24, 2018, 11:22 a.m. UTC
As discussed in the PR log, it seems difficult to simplify zero sized
arrays and keep gimple verification happy. Since this has only minor
effect on memory use, I am disabling it for GCC9 and will re-visit the
issue for GCC 10.

Bootstrapped/regtested x86_64-linux.

Honza

	PR lto/88140
	* tree.c (fld_simplified_type): Temporarily disable array
	simplification.

	* gcc.c-torture/pr88140.c: New testcase.
diff mbox series

Patch

Index: tree.c
===================================================================
--- tree.c	(revision 267397)
+++ tree.c	(working copy)
@@ -5372,7 +5372,8 @@  fld_simplified_type (tree t, struct free
     return t;
   if (POINTER_TYPE_P (t))
     return fld_incomplete_type_of (t, fld);
-  if (TREE_CODE (t) == ARRAY_TYPE)
+  /* FIXME: This triggers verification error, see PR88140.  */
+  if (TREE_CODE (t) == ARRAY_TYPE && 0)
     return fld_process_array_type (t, fld_simplified_type (TREE_TYPE (t), fld),
 				   fld_simplified_types, fld);
   return t;
Index: testsuite/gcc.c-torture/pr88140.c
===================================================================
--- testsuite/gcc.c-torture/pr88140.c	(nonexistent)
+++ testsuite/gcc.c-torture/pr88140.c	(working copy)
@@ -0,0 +1,9 @@ 
+typedef struct {
+} a;
+
+typedef struct {
+  a *b[0];
+} c;
+
+void d() { ((c *)0)->b[0] = 0; }
+