mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-15 14:01:04 +08:00
re PR c++/39763 (-Wshadow reports shadowed declarations for parameters of unnamed temp objects)
PR c++/39763 * name-lookup.c (pushdecl_maybe_friend): Avoid all warnings about shadowing by tentative parms. From-SVN: r146053
This commit is contained in:
parent
85d04fa2c8
commit
f9b20c620a
@ -1,3 +1,9 @@
|
||||
2009-04-14 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/39763
|
||||
* name-lookup.c (pushdecl_maybe_friend): Avoid all warnings
|
||||
about shadowing by tentative parms.
|
||||
|
||||
2009-04-13 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/39480
|
||||
|
@ -1008,13 +1008,18 @@ pushdecl_maybe_friend (tree x, bool is_friend)
|
||||
&& TREE_PUBLIC (x))
|
||||
TREE_PUBLIC (name) = 1;
|
||||
|
||||
/* Don't complain about the parms we push and then pop
|
||||
while tentatively parsing a function declarator. */
|
||||
if (TREE_CODE (x) == PARM_DECL && DECL_CONTEXT (x) == NULL_TREE)
|
||||
/* Ignore. */;
|
||||
|
||||
/* Warn if shadowing an argument at the top level of the body. */
|
||||
if (oldlocal != NULL_TREE && !DECL_EXTERNAL (x)
|
||||
/* Inline decls shadow nothing. */
|
||||
&& !DECL_FROM_INLINE (x)
|
||||
&& TREE_CODE (oldlocal) == PARM_DECL
|
||||
/* Don't check the `this' parameter. */
|
||||
&& !DECL_ARTIFICIAL (oldlocal))
|
||||
else if (oldlocal != NULL_TREE && !DECL_EXTERNAL (x)
|
||||
/* Inline decls shadow nothing. */
|
||||
&& !DECL_FROM_INLINE (x)
|
||||
&& TREE_CODE (oldlocal) == PARM_DECL
|
||||
/* Don't check the `this' parameter. */
|
||||
&& !DECL_ARTIFICIAL (oldlocal))
|
||||
{
|
||||
bool err = false;
|
||||
|
||||
@ -1038,10 +1043,7 @@ pushdecl_maybe_friend (tree x, bool is_friend)
|
||||
}
|
||||
}
|
||||
|
||||
if (warn_shadow && !err
|
||||
/* Don't complain about the parms we push and then pop
|
||||
while tentatively parsing a function declarator. */
|
||||
&& !(TREE_CODE (x) == PARM_DECL && DECL_CONTEXT (x) == NULL_TREE))
|
||||
if (warn_shadow && !err)
|
||||
{
|
||||
warning (OPT_Wshadow, "declaration of %q#D shadows a parameter", x);
|
||||
warning (OPT_Wshadow, "%Jshadowed declaration is here", oldlocal);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-04-14 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/39763
|
||||
* g++.dg/warn/Wshadow-4.C: Extend.
|
||||
|
||||
2009-04-14 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* gcc.target/alpha/pr39740.c (dg-options): Add -mexplicit-relocs.
|
||||
|
@ -18,3 +18,15 @@ int foo(int infoo) // { dg-warning "shadowed declaration" }
|
||||
};
|
||||
return outfoo;
|
||||
}
|
||||
|
||||
// PR c++/39763
|
||||
int foo2(void)
|
||||
{
|
||||
int infoo = 0; // { dg-warning "shadowed declaration" }
|
||||
int outfoo( INetURLObject( infoo ).GetMainURL()); // { dg-bogus "shadows" }
|
||||
struct A
|
||||
{
|
||||
void f(int infoo) { } // { dg-warning "shadows a previous local" }
|
||||
};
|
||||
return outfoo;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user