Bug 32160

Summary: g++ produces bogus warnings when -Wshadow is given
Product: [Retired] Red Hat Linux Reporter: Wagner T. Correa <wtcorrea>
Component: gccAssignee: Jakub Jelinek <jakub>
Status: CLOSED RAWHIDE QA Contact: David Lawrence <dkl>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: wtcorrea
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2001-03-19 14:57:14 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Wagner T. Correa 2001-03-18 22:30:23 UTC
From Bugzilla Helper:
User-Agent: Mozilla/4.76 [en] (X11; U; Linux 2.2.16-22smp i686)


According to the man page, the purpose of -Wshadow is to warn whenever a
local variable shadows another  local variable.  However, it also gives you
undesirable warnings when a local variable shadows a global variable.

Reproducible: Always
Steps to Reproduce:
Just compile the code below with g++ -Wshadow

#include <algorithm>
#include <string>

int main ()
{
	return 0;
}


Actual Results:  In file included from
/usr/include/g++-3/std/bastring.h:661,
                 from /usr/include/g++-3/string:7,
                 from y.cpp:3:
/usr/include/g++-3/std/bastring.cc: In function `istream &getline 
(istream &, basic_string<charT, traits, Allocator> &, charT)':
/usr/include/g++-3/std/bastring.cc:479: warning: declaration of `count'
shadows global declaration


Expected Results:  Since count is global, g++ should not issue that
warning.

Maybe -shadow should be split into two: -shadow-local and -shadow-global.

Comment 1 Jakub Jelinek 2001-03-19 14:57:05 UTC
I've changed bastring.cc so that you don't get this warning for it.
Concerning behaviour of -Wshadow, the documentation is just incomplete,
gcc has been warning about shadowing many things for very long time and this
behaviour has not changed. E.g. it warns if a static function shadows
a builtin, local variable shadows a parameter etc.

Comment 2 Jakub Jelinek 2001-03-30 10:27:05 UTC
These two changes are in gcc 2.96-80.