diff options
author | Dodji Seketeli <dodji@redhat.com> | 2011-08-18 06:44:22 +0000 |
---|---|---|
committer | Dodji Seketeli <dodji@gcc.gnu.org> | 2011-08-18 08:44:22 +0200 |
commit | 55715096b51c2cb7e9a9cd03bd562301b7867051 (patch) | |
tree | 5ec23b85c1ce0fb11dd5f2aea800a2ffc8cb265e /gcc/cp | |
parent | c96012143a5cd5f589032a6e2ae9526e318cf9ea (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 9 |
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; } |