diff options
author | Mark Eggleston <markeggleston@gcc.gnu.org> | 2020-01-17 08:49:25 +0000 |
---|---|---|
committer | Mark Eggleston <markeggleston@gcc.gnu.org> | 2020-01-17 08:49:33 +0000 |
commit | e4a5f73449d7352ba8128fecbc9a9570d746abdb (patch) | |
tree | beea2fb70aa72f40643b7a8517aa70dc0f0f919a /gcc/fortran/resolve.c | |
parent | dc9ba9d045d0cfc06207806fd64b06ab3304b196 (diff) | |
download | gcc-e4a5f73449d7352ba8128fecbc9a9570d746abdb.zip gcc-e4a5f73449d7352ba8128fecbc9a9570d746abdb.tar.gz gcc-e4a5f73449d7352ba8128fecbc9a9570d746abdb.tar.bz2 |
PATCH] Fortran: PR93263 -fno-automatic and RECURSIVE
The use of -fno-automatic should not affect the save attribute of a
recursive procedure. The first test case checks unsaved variables
and the second checks saved variables.
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 6f2a4c4..bddab39 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -17079,6 +17079,7 @@ resolve_types (gfc_namespace *ns) gfc_data *d; gfc_equiv *eq; gfc_namespace* old_ns = gfc_current_ns; + bool recursive = ns->proc_name && ns->proc_name->attr.recursive; if (ns->types_resolved) return; @@ -17132,7 +17133,7 @@ resolve_types (gfc_namespace *ns) gfc_traverse_ns (ns, resolve_values); - if (ns->save_all || !flag_automatic) + if (ns->save_all || (!flag_automatic && !recursive)) gfc_save_all (ns); iter_stack = NULL; |