public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist
@ 2012-11-16 13:42 AstroFloyd at gmail dot com
  2012-11-16 13:43 ` [Bug fortran/55352] " AstroFloyd at gmail dot com
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: AstroFloyd at gmail dot com @ 2012-11-16 13:42 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

             Bug #: 55352
           Summary: Erroneous gfortran warning of unused module variable
                    when variable is only used in namelist
    Classification: Unclassified
           Product: gcc
           Version: 4.7.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: AstroFloyd@gmail.com


Created attachment 28709
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28709
Minimal example source code

gfortran-4.7.2 -Wall gives a warning about unused module variables when those
variables are only used in a namelist.

Test: compile the attached minimal example source file test.f90 with:
gfortran -v -Wall -Werror test.f90 -o test

The following warning is printed:
test.f90:14.6:

  use data, only: a
      1
Warning: Unused module variable 'a' which has been explicitly imported at (1)

The warning goes away when print*,a is uncommented in line 20.  Verbose output
is in the attached file compile_output.txt


Get:     warning about unused module variable
Expect:  no warning
Reproduceable:  always
gfortran version: gcc version 4.7.2 (Gentoo 4.7.2 p1.3, pie-0.5.5)


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
@ 2012-11-16 13:43 ` AstroFloyd at gmail dot com
  2012-11-16 16:31 ` janus at gcc dot gnu.org
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: AstroFloyd at gmail dot com @ 2012-11-16 13:43 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

--- Comment #1 from AstroFloyd <AstroFloyd at gmail dot com> 2012-11-16 13:43:25 UTC ---
Created attachment 28710
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28710
Verbose output from compilation of example source file


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
  2012-11-16 13:43 ` [Bug fortran/55352] " AstroFloyd at gmail dot com
@ 2012-11-16 16:31 ` janus at gcc dot gnu.org
  2012-11-16 21:43 ` janus at gcc dot gnu.org
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: janus at gcc dot gnu.org @ 2012-11-16 16:31 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-11-16
                 CC|                            |janus at gcc dot gnu.org
     Ever Confirmed|0                           |1

--- Comment #2 from janus at gcc dot gnu.org 2012-11-16 16:31:27 UTC ---
Confirmed.

I guess we should either set attr.referenced in gfc_match_namelist (match.c),
or check for attr.in_namelist in generate_local_decl (trans-decl.c).


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
  2012-11-16 13:43 ` [Bug fortran/55352] " AstroFloyd at gmail dot com
  2012-11-16 16:31 ` janus at gcc dot gnu.org
@ 2012-11-16 21:43 ` janus at gcc dot gnu.org
  2012-11-17 10:55 ` janus at gcc dot gnu.org
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: janus at gcc dot gnu.org @ 2012-11-16 21:43 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

--- Comment #3 from janus at gcc dot gnu.org 2012-11-16 21:43:34 UTC ---
(In reply to comment #2)
> I guess we should either set attr.referenced in gfc_match_namelist (match.c),
> or check for attr.in_namelist in generate_local_decl (trans-decl.c).

The latter is what we do for related cases. Proposed patch:

Index: gcc/fortran/trans-decl.c
===================================================================
--- gcc/fortran/trans-decl.c    (revision 193567)
+++ gcc/fortran/trans-decl.c    (working copy)
@@ -4589,23 +4589,26 @@ generate_local_decl (gfc_symbol * sym)
     }

       /* Warn for unused variables, but not if they're inside a common
-     block, a namelist, or are use-associated.  */
+     block or a namelist.  */
       else if (warn_unused_variable
-           && !(sym->attr.in_common || sym->attr.use_assoc || sym->mark
-            || sym->attr.in_namelist))
+           && !(sym->attr.in_common || sym->mark || sym->attr.in_namelist))
     {
-      gfc_warning ("Unused variable '%s' declared at %L", sym->name,
-               &sym->declared_at);
-      if (sym->backend_decl != NULL_TREE)
-        TREE_NO_WARNING(sym->backend_decl) = 1;
+      if (sym->attr.use_only)
+        {
+          gfc_warning ("Unused module variable '%s' which has been "
+               "explicitly imported at %L", sym->name,
+               &sym->declared_at);
+          if (sym->backend_decl != NULL_TREE)
+        TREE_NO_WARNING(sym->backend_decl) = 1;
+        }
+      else if (!sym->attr.use_assoc)
+        {
+          gfc_warning ("Unused variable '%s' declared at %L",
+               sym->name, &sym->declared_at);
+          if (sym->backend_decl != NULL_TREE)
+        TREE_NO_WARNING(sym->backend_decl) = 1;
+        }
     }
-      else if (warn_unused_variable && sym->attr.use_only)
-    {
-      gfc_warning ("Unused module variable '%s' which has been explicitly "
-               "imported at %L", sym->name, &sym->declared_at);
-      if (sym->backend_decl != NULL_TREE)
-        TREE_NO_WARNING(sym->backend_decl) = 1;
-    }

       /* For variable length CHARACTER parameters, the PARM_DECL already
      references the length variable, so force gfc_get_symbol_decl


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
                   ` (2 preceding siblings ...)
  2012-11-16 21:43 ` janus at gcc dot gnu.org
@ 2012-11-17 10:55 ` janus at gcc dot gnu.org
  2012-11-18 17:53 ` AstroFloyd at gmail dot com
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: janus at gcc dot gnu.org @ 2012-11-17 10:55 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
         AssignedTo|unassigned at gcc dot       |janus at gcc dot gnu.org
                   |gnu.org                     |

--- Comment #4 from janus at gcc dot gnu.org 2012-11-17 10:55:13 UTC ---
(In reply to comment #3)
> Proposed patch:

... regtests cleanly.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
                   ` (3 preceding siblings ...)
  2012-11-17 10:55 ` janus at gcc dot gnu.org
@ 2012-11-18 17:53 ` AstroFloyd at gmail dot com
  2012-11-18 19:16 ` janus at gcc dot gnu.org
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: AstroFloyd at gmail dot com @ 2012-11-18 17:53 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

--- Comment #5 from AstroFloyd <AstroFloyd at gmail dot com> 2012-11-18 17:53:36 UTC ---
Created attachment 28726
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28726
My adaptation of the patch in #3

This solves the problem for me, thank you very much - I'm impressed by your
quick and competent work :-)

Somehow, your patch didn't work in my Gentoo version; I applied your changes
manually and created the attached patch, which can be added to the Gentoo
ebuild for sys-devel/gcc-4.7.2.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
                   ` (4 preceding siblings ...)
  2012-11-18 17:53 ` AstroFloyd at gmail dot com
@ 2012-11-18 19:16 ` janus at gcc dot gnu.org
  2012-11-19  9:25 ` [Bug fortran/55352] [4.7/4.8 Regression] " janus at gcc dot gnu.org
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: janus at gcc dot gnu.org @ 2012-11-18 19:16 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

--- Comment #6 from janus at gcc dot gnu.org 2012-11-18 19:16:27 UTC ---
(In reply to comment #5)
> This solves the problem for me, thank you very much

You're welcome ...


> I'm impressed by your quick and competent work :-)

Thanks! In terms of gfortran bugs, this is certainly one of the easier ones to
fix.


> Somehow, your patch didn't work in my Gentoo version;

My patch was against trunk, so it might not apply cleanly to the 4.7 branch.


The fix will presumably make it into the 4.8 release, but will probably not be
backported to 4.7 (unless you can show that the bug is a regression, i.e. did
not occur in a previous release of gfortran - I haven't checked this).


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] [4.7/4.8 Regression] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
                   ` (5 preceding siblings ...)
  2012-11-18 19:16 ` janus at gcc dot gnu.org
@ 2012-11-19  9:25 ` janus at gcc dot gnu.org
  2012-11-21 22:20 ` janus at gcc dot gnu.org
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: janus at gcc dot gnu.org @ 2012-11-19  9:25 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Erroneous gfortran warning  |[4.7/4.8 Regression]
                   |of unused module variable   |Erroneous gfortran warning
                   |when variable is only used  |of unused module variable
                   |in namelist                 |when variable is only used
                   |                            |in namelist

--- Comment #7 from janus at gcc dot gnu.org 2012-11-19 09:24:53 UTC ---
(In reply to comment #6)
> The fix will presumably make it into the 4.8 release, but will probably not be
> backported to 4.7 (unless you can show that the bug is a regression, i.e. did
> not occur in a previous release of gfortran - I haven't checked this).

Just checked: The bogus warning with -Wall reported here seems to be a 4.7
regression indeed. I verified that it does not occur with 4.3.4, 4.5.3 and
4.6.0.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] [4.7/4.8 Regression] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
                   ` (6 preceding siblings ...)
  2012-11-19  9:25 ` [Bug fortran/55352] [4.7/4.8 Regression] " janus at gcc dot gnu.org
@ 2012-11-21 22:20 ` janus at gcc dot gnu.org
  2012-11-23 19:05 ` janus at gcc dot gnu.org
  2012-11-23 19:10 ` janus at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: janus at gcc dot gnu.org @ 2012-11-21 22:20 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

--- Comment #8 from janus at gcc dot gnu.org 2012-11-21 22:20:05 UTC ---
Author: janus
Date: Wed Nov 21 22:19:51 2012
New Revision: 193711

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193711
Log:
2012-11-21  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/55352
    * trans-decl.c (generate_local_decl): Don't warn for explicitly imported
    but unused module variables which are in a namelist or common block.

2012-11-21  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/55352
    * gfortran.dg/namelist_76.f90: New.

Added:
    trunk/gcc/testsuite/gfortran.dg/namelist_76.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-decl.c
    trunk/gcc/testsuite/ChangeLog


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] [4.7/4.8 Regression] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
                   ` (7 preceding siblings ...)
  2012-11-21 22:20 ` janus at gcc dot gnu.org
@ 2012-11-23 19:05 ` janus at gcc dot gnu.org
  2012-11-23 19:10 ` janus at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: janus at gcc dot gnu.org @ 2012-11-23 19:05 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

--- Comment #9 from janus at gcc dot gnu.org 2012-11-23 19:05:20 UTC ---
Author: janus
Date: Fri Nov 23 19:05:14 2012
New Revision: 193766

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193766
Log:
2012-11-23  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/55352
    * trans-decl.c (generate_local_decl): Don't warn for explicitly imported
    but unused module variables which are in a namelist or common block.

2012-11-23  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/55352
    * gfortran.dg/namelist_76.f90: New.

Added:
    branches/gcc-4_7-branch/gcc/testsuite/gfortran.dg/namelist_76.f90
Modified:
    branches/gcc-4_7-branch/gcc/fortran/ChangeLog
    branches/gcc-4_7-branch/gcc/fortran/trans-decl.c
    branches/gcc-4_7-branch/gcc/testsuite/ChangeLog


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug fortran/55352] [4.7/4.8 Regression] Erroneous gfortran warning of unused module variable when variable is only used in namelist
  2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
                   ` (8 preceding siblings ...)
  2012-11-23 19:05 ` janus at gcc dot gnu.org
@ 2012-11-23 19:10 ` janus at gcc dot gnu.org
  9 siblings, 0 replies; 11+ messages in thread
From: janus at gcc dot gnu.org @ 2012-11-23 19:10 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55352

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #10 from janus at gcc dot gnu.org 2012-11-23 19:10:07 UTC ---
The patch in comment 3 has been applied to trunk and the 4.7 branch, which
means the bug will be fixed in the 4.7.3 and 4.8.0 releases. Closing as fixed.

Thanks for the bugreport!


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2012-11-23 19:10 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-16 13:42 [Bug fortran/55352] New: Erroneous gfortran warning of unused module variable when variable is only used in namelist AstroFloyd at gmail dot com
2012-11-16 13:43 ` [Bug fortran/55352] " AstroFloyd at gmail dot com
2012-11-16 16:31 ` janus at gcc dot gnu.org
2012-11-16 21:43 ` janus at gcc dot gnu.org
2012-11-17 10:55 ` janus at gcc dot gnu.org
2012-11-18 17:53 ` AstroFloyd at gmail dot com
2012-11-18 19:16 ` janus at gcc dot gnu.org
2012-11-19  9:25 ` [Bug fortran/55352] [4.7/4.8 Regression] " janus at gcc dot gnu.org
2012-11-21 22:20 ` janus at gcc dot gnu.org
2012-11-23 19:05 ` janus at gcc dot gnu.org
2012-11-23 19:10 ` janus at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).