diff options
author | Dominique d'Humieres <dominiq@gcc.gnu.org> | 2019-01-19 22:45:43 +0100 |
---|---|---|
committer | Dominique d'Humieres <dominiq@gcc.gnu.org> | 2019-01-19 22:45:43 +0100 |
commit | b4e17cadd5ba54fadb2986496025f8d96475dc32 (patch) | |
tree | 675a16ff081d665f7c253173bd95cb3ef392aa58 | |
parent | 5131b898e57d363420c0af03a4edd052b5c3fa05 (diff) | |
download | gcc-b4e17cadd5ba54fadb2986496025f8d96475dc32.zip gcc-b4e17cadd5ba54fadb2986496025f8d96475dc32.tar.gz gcc-b4e17cadd5ba54fadb2986496025f8d96475dc32.tar.bz2 |
[multiple changes]
2019-01-19 Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/37835
* resolve.c (resolve_types): Add !flag_automatic.
* symbol.c (gfc_add_save): Silence warnings.
2019-01-18 Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/37835
* gfortran.dg/no-automatic.f90: New test.
From-SVN: r268098
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/invoke.texi | 3 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 2 | ||||
-rw-r--r-- | gcc/fortran/symbol.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/no-automatic.f90 | 20 |
6 files changed, 37 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6c95a87..a6d793c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2019-01-19 Dominique d'Humieres <dominiq@gcc.gnu.org> + + PR fortran/37835 + * resolve.c (resolve_types): Add !flag_automatic. + * symbol.c (gfc_add_save): Silence warnings. + 2019-01-19 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/77960 diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 668e8d9..dc7c037 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -1377,6 +1377,9 @@ The default, which is @option{-fautomatic}, uses the stack for local variables smaller than the value given by @option{-fmax-stack-var-size}. Use the option @option{-frecursive} to use no static memory. +Local variables or arrays having an explicit @code{SAVE} attribute are +silently ignored unless the @option{-pedantic} option is added. + @item -ff2c @opindex ff2c @cindex calling convention diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 3f893f1..2c49aea 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -16673,7 +16673,7 @@ resolve_types (gfc_namespace *ns) gfc_traverse_ns (ns, resolve_values); - if (ns->save_all) + if (ns->save_all || !flag_automatic) gfc_save_all (ns); iter_stack = NULL; diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 06c21d9..b7408ac 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -1306,7 +1306,8 @@ gfc_add_save (symbol_attribute *attr, save_state s, const char *name, if (s == SAVE_EXPLICIT) gfc_unset_implicit_pure (NULL); - if (s == SAVE_EXPLICIT && attr->save == SAVE_EXPLICIT) + if (s == SAVE_EXPLICIT && attr->save == SAVE_EXPLICIT + && (flag_automatic || pedantic)) { if (!gfc_notify_std (GFC_STD_LEGACY, "Duplicate SAVE attribute specified at %L", diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f3c66ee..ebd599e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-01-18 Dominique d'Humieres <dominiq@gcc.gnu.org> + + PR fortran/37835 + * gfortran.dg/no-automatic.f90: New test. + 2019-01-19 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/77960 diff --git a/gcc/testsuite/gfortran.dg/no-automatic.f90 b/gcc/testsuite/gfortran.dg/no-automatic.f90 new file mode 100644 index 0000000..42baf4d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/no-automatic.f90 @@ -0,0 +1,20 @@ +! { dg-do run } +! { dg-options "-fno-automatic" } +! +! PR fortran/37835 +! Contributed by Tobias Burnus <burnus@gcc.gnu.org>. +! +subroutine foo(n) + integer :: n + type t + integer :: i = 42 + end type t + type(t) :: myt + if(n==1) myt%i = 2 + print *, myt%i + if (n > 1 .and. myt%i /= 2) stop 1 +end subroutine foo + +call foo(1) +call foo(2) +end |