https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91801
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kargl at gcc dot gnu.org
--- Comment #2 from kargl at gcc dot gnu.org ---
(In reply to Thomas Koenig from comment #1)
> Should be easy to fix.
Likely, all of the gcc_assert()'s in gfc_simplify_reshape
should be gfc_error()'s. This patch fixes the ICE for
this PR. (Watch for cut-n-paste tab corruption).
Index: gcc/fortran/simplify.c
===================================================================
--- gcc/fortran/simplify.c (revision 276593)
+++ gcc/fortran/simplify.c (working copy)
@@ -6762,7 +6762,15 @@ gfc_simplify_reshape (gfc_expr *source, gfc_expr *shap
gfc_extract_int (e, &order[i]);
- gcc_assert (order[i] >= 1 && order[i] <= rank);
+ if (order[i] < 1 || order[i] > rank)
+ {
+ gfc_error ("Element with a value of %d in ORDER at %L must be "
+ "in the range [1, ..., %d] for the RESHAPE intrinsic "
+ "near %L", order[i], &order_exp->where, rank,
+ &shape_exp->where);
+ return &gfc_bad_expr;
+ }
+
order[i]--;
if (x[order[i]] != 0)
{