https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88048
--- Comment #3 from kargl at gcc dot gnu.org --- (In reply to G. Steinmetz from comment #0) > With invalid code : > > > $ cat z1.f90 > program p > integer, parameter :: a(2) = 1 > data a(2) /a(1)/ > print *, a > end > > > $ gfortran-7 -g -O0 -Wall -Wextra -fcheck=all z1.f90 > $ a.out > 1 1 > > > $ gfortran-9-20181111 -c z1.f90 > f951: internal compiler error: check_data_variable(): Bad expression Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (revision 266386) +++ gcc/fortran/resolve.c (working copy) @@ -15492,7 +15492,10 @@ check_data_variable (gfc_data_variable *var, locus *wh e = e->value.function.actual->expr; if (e->expr_type != EXPR_VARIABLE) - gfc_internal_error ("check_data_variable(): Bad expression"); + { + gfc_error ("Expecting definable entity near %L", where); + return false; + } sym = e->symtree->n.sym; @@ -15500,6 +15503,7 @@ check_data_variable (gfc_data_variable *var, locus *wh { gfc_error ("BLOCK DATA element %qs at %L must be in COMMON", sym->name, &sym->declared_at); + return false; } if (e->ref == NULL && sym->as)