aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-08-22 18:12:33 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-08-22 18:12:33 +0000
commitad7a5a8fc58e29b259f8a746899772627a493e9e (patch)
tree474a158e0e31e8b31f5a75d00d0dc15c07f708b5 /gcc
parent72f52f3081af48ddddcb9e541c33fbbddfb4215d (diff)
downloadgcc-ad7a5a8fc58e29b259f8a746899772627a493e9e.zip
gcc-ad7a5a8fc58e29b259f8a746899772627a493e9e.tar.gz
gcc-ad7a5a8fc58e29b259f8a746899772627a493e9e.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/trans-decl.c16
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/pr77260_1.f9025
-rw-r--r--gcc/testsuite/gfortran.dg/pr77260_2.f9026
5 files changed, 77 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a404c43..900d915 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 6cf7f57..96d413e 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 0a82b69..82b4db4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gfortran.dg/pr77260_1.f90 b/gcc/testsuite/gfortran.dg/pr77260_1.f90
new file mode 100644
index 0000000..0d2ead6
--- /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 0000000..ea8da4f
--- /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" } }