diff mbox

Fix PR77697

Message ID alpine.LSU.2.11.1609221413010.26629@t29.fhfr.qr
State New
Headers show

Commit Message

Richard Biener Sept. 22, 2016, 12:13 p.m. UTC
This fixes PR77697, an ice-on-invalid for Fortran (varasm later errors).

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.

Richard.

2016-09-22  Richard Biener  <rguenther@suse.de>

	PR middle-end/77697
	* gimple-fold.c (fold_array_ctor_reference): Turn asserts into
	fold fails.
diff mbox

Patch

Index: gcc/gimple-fold.c
===================================================================
--- gcc/gimple-fold.c	(revision 240342)
+++ gcc/gimple-fold.c	(working copy)
@@ -5647,14 +5638,15 @@  fold_array_ctor_reference (tree type, tr
   if (domain_type && TYPE_MIN_VALUE (domain_type))
     {
       /* Static constructors for variably sized objects makes no sense.  */
-      gcc_assert (TREE_CODE (TYPE_MIN_VALUE (domain_type)) == INTEGER_CST);
+      if (TREE_CODE (TYPE_MIN_VALUE (domain_type)) != INTEGER_CST)
+	return NULL_TREE;
       low_bound = wi::to_offset (TYPE_MIN_VALUE (domain_type));
     }
   else
     low_bound = 0;
   /* Static constructors for variably sized objects makes no sense.  */
-  gcc_assert (TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor))))
-	      == INTEGER_CST);
+  if (TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor)))) != INTEGER_CST)
+    return NULL_TREE;
   elt_size = wi::to_offset (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor))));
 
   /* We can handle only constantly sized accesses that are known to not