]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fortran: Fix deprecate warning with parameter
authorTobias Burnus <tobias@codesourcery.com>
Wed, 6 Oct 2021 06:47:40 +0000 (08:47 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Wed, 6 Oct 2021 10:09:54 +0000 (12:09 +0200)
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.

(cherry picked from commit ece8b0fce6bbfb1e531de8164da47eeed80d3cf1)

gcc/fortran/resolve.c
gcc/testsuite/gfortran.dg/attr_deprecated-2.f90 [new file with mode: 0644]

index 6761e9628a2730053cc3c33c8822b133e292a07b..71ce8804c0ee34b2c8362168b31ea5db82657a89 100644 (file)
@@ -12309,7 +12309,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 (file)
index 0000000..97a365a
--- /dev/null
@@ -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