budd@BU-IT.BU.EDU (Phil Budne) (03/01/90)
Summary:
undeclared variables (within functions) cause spurious shadow
warnings for argument declarations in in gcc versions 1.36 &
1.37.1 on Sun4 (and Sun3).
The spurious warning is output twice! Once at "top level"
and once in the new function.
Wishes:
-WALL turned on ALL warnings and that -w<name> could be used to
subtract from the warning set. i.e. gcc -WALL -wcomment
Repeat By:
Script started on Thu Mar 1 00:20:25 1990
bu-it% cat xxx.c
struct {
int member;
} x;
extern void boring( int arg );
# ifdef BUG
void a(void) {
boring( member ); /* typo (x.member) */
}
# endif
void b( int member ) {
boring( member );
}
bu-it% gcc -v
gcc version 1.36
bu-it% arch
sun4
bu-it% gcc -c -Wshadow xxx.c
bu-it% gcc -c -Wshadow -DBUG xxx.c
xxx.c: In function a:
xxx.c:9: `member' undeclared (first use this function)
xxx.c:9: (Each undeclared identifier is reported only once
xxx.c:9: for each function it appears in.)
xxx.c: At top level:
xxx.c:13: warning: declaration of `member' shadows global declaration
xxx.c: In function b:
xxx.c:13: warning: declaration of `member' shadows global declaration
bu-it% rsh pub !-4
rsh pub gcc -v
gcc version 1.37.1
bu-it% rsh pub !-4
rsh pub arch
sun4
bu-it% rsh pub !-4
rsh pub gcc -c -Wshadow xxx.c
bu-it% rsh pub !-4
rsh pub gcc -c -Wshadow -DBUG xxx.c
xxx.c: In function a:
xxx.c:9: `member' undeclared (first use this function)
xxx.c:9: (Each undeclared identifier is reported only once
xxx.c:9: for each function it appears in.)
xxx.c: At top level:
xxx.c:13: warning: declaration of `member' shadows global declaration
xxx.c: In function b:
xxx.c:13: warning: declaration of `member' shadows global declaration
bu-it% exit
script done on Thu Mar 1 00:23:21 1990