diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2018-05-02 18:15:56 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2018-05-02 18:15:56 +0000 |
commit | 006fbbe9526698a7828023b6710acc478b845e18 (patch) | |
tree | d3e68caa1c7827bfd632233231decc845612dd17 /gcc | |
parent | ec00d3faf4e3d20906e8e6038299343f960dc49e (diff) | |
download | gcc-006fbbe9526698a7828023b6710acc478b845e18.zip gcc-006fbbe9526698a7828023b6710acc478b845e18.tar.gz gcc-006fbbe9526698a7828023b6710acc478b845e18.tar.bz2 |
re PR c++/68374 (G++ -Wshadow doesn't warn about static member shadowing)
/cp
2018-05-02 Paolo Carlini <paolo.carlini@oracle.com>
Jason Merrill <jason@redhat.com>
PR c++/68374
* name-lookup.c (check_local_shadow): Don't handle static old
declarations in the block handling locals shadowing locals.
/testsuite
2018-05-02 Paolo Carlini <paolo.carlini@oracle.com>
Jason Merrill <jason@redhat.com>
PR c++/68374
* g++.dg/warn/Wshadow-13.C: New.
* g++.dg/warn/Wshadow-14.C: Likewise.
Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r259853
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wshadow-13.C | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wshadow-14.C | 10 |
5 files changed, 33 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 604e704..fadcea8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2018-05-02 Paolo Carlini <paolo.carlini@oracle.com> + Jason Merrill <jason@redhat.com> + + PR c++/68374 + * name-lookup.c (check_local_shadow): Don't handle static old + declarations in the block handling locals shadowing locals. + 2018-05-01 Jason Merrill <jason@redhat.com> PR c++/85587 - error with scoped enum in template. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 64c7b6f..08cabd6 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -2642,6 +2642,7 @@ check_local_shadow (tree decl) || (TREE_CODE (old) == TYPE_DECL && (!DECL_ARTIFICIAL (old) || TREE_CODE (decl) == TYPE_DECL))) + && DECL_FUNCTION_SCOPE_P (old) && (!DECL_ARTIFICIAL (decl) || DECL_IMPLICIT_TYPEDEF_P (decl) || (VAR_P (decl) && DECL_ANON_UNION_VAR_P (decl)))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9c290eb..6ddb945 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2018-05-02 Paolo Carlini <paolo.carlini@oracle.com> + Jason Merrill <jason@redhat.com> + + PR c++/68374 + * g++.dg/warn/Wshadow-13.C: New. + * g++.dg/warn/Wshadow-14.C: Likewise. + 2018-05-02 Tom de Vries <tom@codesourcery.com> PR libgomp/82428 diff --git a/gcc/testsuite/g++.dg/warn/Wshadow-13.C b/gcc/testsuite/g++.dg/warn/Wshadow-13.C new file mode 100644 index 0000000..d75560c --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wshadow-13.C @@ -0,0 +1,8 @@ +// PR c++/68374 +// { dg-options "-Wshadow" } + +class f { + static int mVar; // { dg-message "shadowed declaration" } + int g(int x) { int mVar=3; return x+mVar; } // { dg-warning "shadows a member of 'f'" } +}; +int f::mVar = 1; diff --git a/gcc/testsuite/g++.dg/warn/Wshadow-14.C b/gcc/testsuite/g++.dg/warn/Wshadow-14.C new file mode 100644 index 0000000..e0e3d02 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wshadow-14.C @@ -0,0 +1,10 @@ +// PR c++/68374 +// { dg-options "-Wshadow" } + +void foo () +{ + static int i; // { dg-message "shadowed declaration" } + { + int i; // { dg-warning "shadows a previous local" } + } +} |