re PR fortran/77260 (bogus warning with ENTRY in a function)

2016-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/77260
	* gcc/fortran/trans-decl.c (generate_local_decl): Suppress warning
	for unused variable if symbol is entry point.

2016-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/77260
	* gfortran.dg/pr77260_1.f90: New test.
	* gfortran.dg/pr77260_2.f90: Ditto.

From-SVN: r239666
This commit is contained in:
Steven G. Kargl 2016-08-22 18:12:33 +00:00
parent 72f52f3081
commit ad7a5a8fc5
5 changed files with 77 additions and 3 deletions

View file

@ -1,3 +1,10 @@
2016-08-22 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/77260
* gcc/fortran/trans-decl.c (generate_local_decl): Suppress warning
for unused variable if symbol is entry point.
2016-08-19 Joseph Myers <joseph@codesourcery.com>
PR c/32187

View file

@ -5316,9 +5316,19 @@ generate_local_decl (gfc_symbol * sym)
}
else if (!sym->attr.use_assoc)
{
gfc_warning (OPT_Wunused_variable,
"Unused variable %qs declared at %L",
sym->name, &sym->declared_at);
/* Corner case: the symbol may be an entry point. At this point,
it may appear to be an unused variable. Suppress warning. */
bool enter = false;
gfc_entry_list *el;
for (el = sym->ns->entries; el; el=el->next)
if (strcmp(sym->name, el->sym->name) == 0)
enter = true;
if (!enter)
gfc_warning (OPT_Wunused_variable,
"Unused variable %qs declared at %L",
sym->name, &sym->declared_at);
if (sym->backend_decl != NULL_TREE)
TREE_NO_WARNING(sym->backend_decl) = 1;
}

View file

@ -1,3 +1,9 @@
2016-08-22 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/77260
* gfortran.dg/pr77260_1.f90: New test.
* gfortran.dg/pr77260_2.f90: Ditto.
2016-08-22 Joseph Myers <joseph@codesourcery.com>
PR middle-end/77269

View file

@ -0,0 +1,25 @@
! { dg-do compile }
! { dg-options "-Wall" }
module foo
implicit none
private
public f1,f2
contains
integer function f1()
integer f2
f1=5
entry f2
f2=8
end function
end module
program test
use foo
implicit none
print *,f2()
end program
! { dg-final { cleanup-modules "foo" } }

View file

@ -0,0 +1,26 @@
! { dg-do compile }
! { dg-options "-Wall" }
module foo
implicit none
private
public f1,f2
contains
integer function f1()
integer f2
integer f3 ! { dg-warning "Unused variable" }
f1=5
entry f2
f2=8
end function
end module
program test
use foo
implicit none
print *,f2()
end program
! { dg-final { cleanup-modules "foo" } }