https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105230
anlauf at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |anlauf at gcc dot gnu.org --- Comment #2 from anlauf at gcc dot gnu.org --- (In reply to kargl from comment #1) > Started with 22015e77d3e4. No, it didn't start with that commit. That commit missed the present situation. The ICE is pre-existing. > upper is NULL and later in 1634 it is dereferenced. This patch fixes > the problem, but the above logic likely needs fixing. That's right. Shorter fix: diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc index 86d61fed302..be94c18c836 100644 --- a/gcc/fortran/expr.cc +++ b/gcc/fortran/expr.cc @@ -1595,8 +1595,8 @@ find_array_section (gfc_expr *expr, gfc_ref *ref) if ((begin && begin->expr_type != EXPR_CONSTANT) || (finish && finish->expr_type != EXPR_CONSTANT) || (step && step->expr_type != EXPR_CONSTANT) - || (!begin && !lower) - || (!finish && !upper)) + || !lower + || !upper) { t = false; goto cleanup;