diff options
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r-- | gcc/fortran/expr.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 7c2069c..1146bd1 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -1829,6 +1829,9 @@ check_init_expr (gfc_expr * e) break; } + if (gfc_in_match_data ()) + break; + gfc_error ("Parameter '%s' at %L has not been declared or is " "a variable, which does not reduce to a constant " "expression", e->symtree->n.sym->name, &e->where); @@ -1912,7 +1915,8 @@ gfc_match_init_expr (gfc_expr ** result) /* Not all inquiry functions are simplified to constant expressions so it is necessary to call check_inquiry again. */ if (!gfc_is_constant_expr (expr) - && check_inquiry (expr, 1) == FAILURE) + && check_inquiry (expr, 1) == FAILURE + && !gfc_in_match_data ()) { gfc_error ("Initialization expression didn't reduce %C"); return MATCH_ERROR; |