aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-05-02 18:15:56 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-05-02 18:15:56 +0000
commit006fbbe9526698a7828023b6710acc478b845e18 (patch)
treed3e68caa1c7827bfd632233231decc845612dd17 /gcc
parentec00d3faf4e3d20906e8e6038299343f960dc49e (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/cp/name-lookup.c1
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/g++.dg/warn/Wshadow-13.C8
-rw-r--r--gcc/testsuite/g++.dg/warn/Wshadow-14.C10
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" }
+ }
+}