From: Steven G. Kargl Date: Mon, 22 Aug 2016 18:12:33 +0000 (+0000) Subject: re PR fortran/77260 (bogus warning with ENTRY in a function) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ad7a5a8fc58e29b259f8a746899772627a493e9e;p=gcc.git re PR fortran/77260 (bogus warning with ENTRY in a function) 2016-08-22 Steven G. Kargl 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 PR fortran/77260 * gfortran.dg/pr77260_1.f90: New test. * gfortran.dg/pr77260_2.f90: Ditto. From-SVN: r239666 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a404c432d64..900d91560f2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2016-08-22 Steven G. Kargl + + 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 PR c/32187 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 6cf7f573bf6..96d413eb8c2 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0a82b69d058..82b4db4d960 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2016-08-22 Steven G. Kargl + + PR fortran/77260 + * gfortran.dg/pr77260_1.f90: New test. + * gfortran.dg/pr77260_2.f90: Ditto. + 2016-08-22 Joseph Myers PR middle-end/77269 diff --git a/gcc/testsuite/gfortran.dg/pr77260_1.f90 b/gcc/testsuite/gfortran.dg/pr77260_1.f90 new file mode 100644 index 00000000000..0d2ead61ce7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr77260_1.f90 @@ -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" } } diff --git a/gcc/testsuite/gfortran.dg/pr77260_2.f90 b/gcc/testsuite/gfortran.dg/pr77260_2.f90 new file mode 100644 index 00000000000..ea8da4f271c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr77260_2.f90 @@ -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" } }