aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorMark Eggleston <markeggleston@gcc.gnu.org>2020-01-17 08:49:25 +0000
committerMark Eggleston <markeggleston@gcc.gnu.org>2020-01-17 08:49:33 +0000
commite4a5f73449d7352ba8128fecbc9a9570d746abdb (patch)
treebeea2fb70aa72f40643b7a8517aa70dc0f0f919a /gcc/fortran/resolve.c
parentdc9ba9d045d0cfc06207806fd64b06ab3304b196 (diff)
downloadgcc-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.c3
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;