public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/53940] New: warn about duplicate USE
@ 2012-07-12 12:33 Bil.Kleb at NASA dot gov
2012-07-12 13:09 ` [Bug fortran/53940] " burnus at gcc dot gnu.org
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Bil.Kleb at NASA dot gov @ 2012-07-12 12:33 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53940
Bug #: 53940
Summary: warn about duplicate USE
Classification: Unclassified
Product: gcc
Version: 4.6.2
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: Bil.Kleb@NASA.gov
Hi,
I'd like to see the GFortran compiler at least give a warning if a USE is
duplicated, viz,
$ cat > duplicate_use.f90 << EOF
module mod
integer :: var = 0
end module
program duplicate_use
use mod, only: var
use mod, only: var ! should produce error
print*, var
end program
EOF
$ gfortran --version | head -1
GNU Fortran (GCC) 4.6.2 20111019 (prerelease)
$ gfortran -W -Wall -Wextra -pedantic-errors duplicate_use.f90
[no complaints]
The old DEC Alpha compiler does:
alpha% fort -what
Compaq Fortran V1.2.0-1882
Compaq Fortran Compiler V1.2.0-1882-48BBF
alpha% fort -c duplicate_use.f90
f90: Warning: duplicate_use.f90, line 6: Conflicting attributes or multiple
declaration of name. [VAR]
use mod, only: var
-----------------^
f90: Error: duplicate_use.f90, line 8: The same named entity from different
modules and/or program units cannot be referenced. [VAR]
print*, var
----------^
Thanks for consideration,
--
Bil
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/53940] warn about duplicate USE
2012-07-12 12:33 [Bug fortran/53940] New: warn about duplicate USE Bil.Kleb at NASA dot gov
@ 2012-07-12 13:09 ` burnus at gcc dot gnu.org
2012-07-12 13:25 ` Bil.Kleb at NASA dot gov
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-07-12 13:09 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53940
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |burnus at gcc dot gnu.org
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-07-12 13:08:51 UTC ---
(In reply to comment #0)
> The old DEC Alpha compiler does:
[...]
> f90: Error: duplicate_use.f90, line 8: The same named entity from different
> modules and/or program units cannot be referenced. [VAR]
> print*, var
> ----------^
That that one is completely bogus. The standard allows multiple inclusion of
the same variable; and your variable is - contrary to the error message - from
the same module. For instance, the following is valid:
use mod
use mod, var2 => var
That way one has use-associated the variable "var" under the name "var" and
under the name "var2".
The Fortran standard (here: Fortran 2008, "11.2.2 The USE statement and use
association") has:
"More than one USE statement for a given module may appear in a specification
part. If one of the USE statements is without an ONLY option, all public
entities in the module are accessible. If all the USE statements have ONLY
options, only those entities in one or more of the only-lists are accessible.
"An accessible entity in the referenced module has one or more local
identifiers. [...]" (Cf. http://gcc.gnu.org/wiki/GFortranStandards)
Hence, I am inclined to reject the warning proposal. (The request to print an
error is simply invalid.)
However, if you can give a good argument why you want to have a special warning
and when it exactly should be triggered, one could consider it. However, I
currently fail to see a real use case for that.
Note: module entities which have been explicitly use associated but aren't used
are warned for. Thus, one could consider to warn if the same entity under the
same name is multiple times use associated. However, that's not only valid but
seems to be also harmless and a rather special case.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/53940] warn about duplicate USE
2012-07-12 12:33 [Bug fortran/53940] New: warn about duplicate USE Bil.Kleb at NASA dot gov
2012-07-12 13:09 ` [Bug fortran/53940] " burnus at gcc dot gnu.org
@ 2012-07-12 13:25 ` Bil.Kleb at NASA dot gov
2012-07-12 13:45 ` [Bug fortran/53940] Optionally warn about multiple explicit USE-association of the same symbol burnus at gcc dot gnu.org
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Bil.Kleb at NASA dot gov @ 2012-07-12 13:25 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53940
--- Comment #2 from Bil Kleb <Bil.Kleb at NASA dot gov> 2012-07-12 13:25:29 UTC ---
I guess I see the USE ONLY as similar to a declaration, and to have two of the
same declarations in a program is an error, e.g.,
$ cat duplicate_declaration.f90 << EOF
program duplicate_declaration
integer :: var
integer :: var ! should produce at least a warning?
var = 1
print*, var
end program
EOF
% gfortran duplicate_declaration.f90
duplicate_declaration.f90:3.16:
integer :: var ! should produce at least a warning?
1
Error: Symbol 'var' at (1) already has basic type of INTEGER
While the error is mostly harmless, we find it useful to know about to keep our
code clean.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/53940] Optionally warn about multiple explicit USE-association of the same symbol
2012-07-12 12:33 [Bug fortran/53940] New: warn about duplicate USE Bil.Kleb at NASA dot gov
2012-07-12 13:09 ` [Bug fortran/53940] " burnus at gcc dot gnu.org
2012-07-12 13:25 ` Bil.Kleb at NASA dot gov
@ 2012-07-12 13:45 ` burnus at gcc dot gnu.org
2014-05-19 16:03 ` Joost.VandeVondele at mat dot ethz.ch
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2012-07-12 13:45 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53940
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |diagnostic
Summary|warn about duplicate USE |Optionally warn about
| |multiple explicit
| |USE-association of the same
| |symbol
--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-07-12 13:44:55 UTC ---
(In reply to comment #2)
> I guess I see the USE ONLY as similar to a declaration, and to have two of the
> same declarations in a program is an error, e.g.,
> $ cat duplicate_declaration.f90 << EOF
> program duplicate_declaration
> integer :: var
> integer :: var
Well, here you declare two different variables with the same name. In the
original example, you use associate the same variable under the same name.
Thus, technically, this example is invalid while the first one is valid.
(At least that's how I understand the Fortran standard.)
However, I concur that one could warn if the same variable appears multiple
times in a "USE ..., ONLY:" either as you had:
use mod, only: var
use mod, only: var
or as in
use mod, only: var, var
Both are perfectly valid, but I concur that (in well written code) it should
not occur. I don't think we want to warn for:
use mod
use mod, only: var
which also (kind of) use-associates "var" multiple times.
The warning implementation should be doable somewhere in the depths of module.c
as we only set "sym->attr.use_only" for explicitly use-associated symbols.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/53940] Optionally warn about multiple explicit USE-association of the same symbol
2012-07-12 12:33 [Bug fortran/53940] New: warn about duplicate USE Bil.Kleb at NASA dot gov
` (2 preceding siblings ...)
2012-07-12 13:45 ` [Bug fortran/53940] Optionally warn about multiple explicit USE-association of the same symbol burnus at gcc dot gnu.org
@ 2014-05-19 16:03 ` Joost.VandeVondele at mat dot ethz.ch
2015-10-13 16:28 ` dominiq at lps dot ens.fr
2020-07-30 15:37 ` dominiq at lps dot ens.fr
5 siblings, 0 replies; 7+ messages in thread
From: Joost.VandeVondele at mat dot ethz.ch @ 2014-05-19 16:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53940
Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |Joost.VandeVondele at mat dot ethz
| |.ch
--- Comment #4 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> ---
still useful.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/53940] Optionally warn about multiple explicit USE-association of the same symbol
2012-07-12 12:33 [Bug fortran/53940] New: warn about duplicate USE Bil.Kleb at NASA dot gov
` (3 preceding siblings ...)
2014-05-19 16:03 ` Joost.VandeVondele at mat dot ethz.ch
@ 2015-10-13 16:28 ` dominiq at lps dot ens.fr
2020-07-30 15:37 ` dominiq at lps dot ens.fr
5 siblings, 0 replies; 7+ messages in thread
From: dominiq at lps dot ens.fr @ 2015-10-13 16:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53940
Dominique d'Humieres <dominiq at lps dot ens.fr> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2015-10-13
Ever confirmed|0 |1
--- Comment #5 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
No warning at r228753.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug fortran/53940] Optionally warn about multiple explicit USE-association of the same symbol
2012-07-12 12:33 [Bug fortran/53940] New: warn about duplicate USE Bil.Kleb at NASA dot gov
` (4 preceding siblings ...)
2015-10-13 16:28 ` dominiq at lps dot ens.fr
@ 2020-07-30 15:37 ` dominiq at lps dot ens.fr
5 siblings, 0 replies; 7+ messages in thread
From: dominiq at lps dot ens.fr @ 2020-07-30 15:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53940
Dominique d'Humieres <dominiq at lps dot ens.fr> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |RESOLVED
Resolution|--- |WONTFIX
--- Comment #7 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
Closing.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-07-30 15:37 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-12 12:33 [Bug fortran/53940] New: warn about duplicate USE Bil.Kleb at NASA dot gov
2012-07-12 13:09 ` [Bug fortran/53940] " burnus at gcc dot gnu.org
2012-07-12 13:25 ` Bil.Kleb at NASA dot gov
2012-07-12 13:45 ` [Bug fortran/53940] Optionally warn about multiple explicit USE-association of the same symbol burnus at gcc dot gnu.org
2014-05-19 16:03 ` Joost.VandeVondele at mat dot ethz.ch
2015-10-13 16:28 ` dominiq at lps dot ens.fr
2020-07-30 15:37 ` dominiq at lps dot ens.fr
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).