diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2021-10-06 08:47:40 +0200 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2021-10-06 08:47:40 +0200 |
commit | ece8b0fce6bbfb1e531de8164da47eeed80d3cf1 (patch) | |
tree | b0a2c20a13b927f1e475b7321b6287a74fb2f69c | |
parent | e76a7a8a807e7ba0e171e953b9b1ff5fa1b0f247 (diff) | |
download | gcc-ece8b0fce6bbfb1e531de8164da47eeed80d3cf1.zip gcc-ece8b0fce6bbfb1e531de8164da47eeed80d3cf1.tar.gz gcc-ece8b0fce6bbfb1e531de8164da47eeed80d3cf1.tar.bz2 |
Fortran: Fix deprecate warning with parameter
Only warn with !GCC$ ATTRIBUTES DEPRECATED if
deprecated PARMETERS are actually used.
gcc/fortran/ChangeLog:
* resolve.c (resolve_values): Only show
deprecated warning if attr.referenced.
gcc/testsuite/ChangeLog:
* gfortran.dg/attr_deprecated-2.f90: New test.
-rw-r--r-- | gcc/fortran/resolve.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/attr_deprecated-2.f90 | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 511fe3a..0d0af39 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -12351,7 +12351,7 @@ resolve_values (gfc_symbol *sym) if (sym->value == NULL) return; - if (sym->attr.ext_attr & (1 << EXT_ATTR_DEPRECATED)) + if (sym->attr.ext_attr & (1 << EXT_ATTR_DEPRECATED) && sym->attr.referenced) gfc_warning (OPT_Wdeprecated_declarations, "Using parameter %qs declared at %L is deprecated", sym->name, &sym->declared_at); diff --git a/gcc/testsuite/gfortran.dg/attr_deprecated-2.f90 b/gcc/testsuite/gfortran.dg/attr_deprecated-2.f90 new file mode 100644 index 0000000..97a365a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/attr_deprecated-2.f90 @@ -0,0 +1,22 @@ +! { dg-do compile } +! { dg-additional-options "-Wall" } +! +! Ensure that only those parameters are warned for which are actually used +! +module m + implicit none + integer, parameter :: parm = 4 ! unused + integer, parameter :: parm2 = 4 ! used in the main program + integer, parameter :: parm3 = 4 ! used in "f()" - { dg-warning "Using parameter 'parm3' declared at .1. is deprecated" } + integer, save :: var, var2 +!GCC$ ATTRIBUTES DEPRECATED :: parm, parm2, parm3, var, var2 +contains + subroutine f() + print *, parm3 ! warning shown above + end +end module m + +use m ! { dg-warning "Using parameter 'parm2' declared at .1. is deprecated" } +implicit none +print *, var2, parm2 ! { dg-warning "Using variable 'var2' at .1. is deprecated" } +end |