aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2011-08-18 06:44:22 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2011-08-18 08:44:22 +0200
commit55715096b51c2cb7e9a9cd03bd562301b7867051 (patch)
tree5ec23b85c1ce0fb11dd5f2aea800a2ffc8cb265e /gcc/cp
parentc96012143a5cd5f589032a6e2ae9526e318cf9ea (diff)
downloadgcc-55715096b51c2cb7e9a9cd03bd562301b7867051.zip
gcc-55715096b51c2cb7e9a9cd03bd562301b7867051.tar.gz
gcc-55715096b51c2cb7e9a9cd03bd562301b7867051.tar.bz2
PR c++/45625 - Template parm name doesn't hide outer class scope's member name
gcc/cp/ * pt.c (parameter_of_template_p): Handle comparison with DECLs of template parameters as created by process_template_parm. gcc/testsuite/ * g++.dg/lookup/hidden-var1.C: New test case. From-SVN: r177846
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4d6c353..f95040f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2011-08-18 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/45625
+ * pt.c (parameter_of_template_p): Handle comparison with DECLs of
+ template parameters as created by process_template_parm.
+
2011-08-16 Jason Merrill <jason@redhat.com>
PR c++/50086
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 9ab110a..ed4fe72 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -7890,8 +7890,13 @@ parameter_of_template_p (tree parm, tree templ)
parms = INNERMOST_TEMPLATE_PARMS (parms);
for (i = 0; i < TREE_VEC_LENGTH (parms); ++i)
- if (parm == TREE_VALUE (TREE_VEC_ELT (parms, i)))
- return true;
+ {
+ tree p = TREE_VALUE (TREE_VEC_ELT (parms, i));
+ if (parm == p
+ || (DECL_INITIAL (parm)
+ && DECL_INITIAL (parm) == DECL_INITIAL (p)))
+ return true;
+ }
return false;
}