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.
This commit is contained in:
parent
e76a7a8a80
commit
ece8b0fce6
2 changed files with 23 additions and 1 deletions
|
@ -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);
|
||||
|
|
22
gcc/testsuite/gfortran.dg/attr_deprecated-2.f90
Normal file
22
gcc/testsuite/gfortran.dg/attr_deprecated-2.f90
Normal file
|
@ -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
|
Loading…
Add table
Reference in a new issue