diff options
Diffstat (limited to 'gcc/fortran/primary.c')
-rw-r--r-- | gcc/fortran/primary.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index f55e420..acde051 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -2964,7 +2964,8 @@ gfc_match_rvalue (gfc_expr **result) st = gfc_enclosing_unit (NULL); - if (st != NULL && st->state == COMP_FUNCTION + if (st != NULL + && st->state == COMP_FUNCTION && st->sym == sym && !sym->attr.recursive) { @@ -3268,6 +3269,7 @@ match_variable (gfc_expr **result, int equiv_flag, int host_flag) of keywords, such as 'end', being turned into variables by failed matching to assignments for, e.g., END INTERFACE. */ if (gfc_current_state () == COMP_MODULE + || gfc_current_state () == COMP_SUBMODULE || gfc_current_state () == COMP_INTERFACE || gfc_current_state () == COMP_CONTAINS) host_flag = 0; |