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 | |
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')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/hidden-var1.C | 19 |
4 files changed, 37 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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9440066..1bcb031 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-08-18 Dodji Seketeli <dodji@redhat.com> + + PR c++/45625 + * g++.dg/lookup/hidden-var1.C: New test case. + 2011-08-17 Tobias Burnus <burnus@net-b.de> PR fortran/31461 diff --git a/gcc/testsuite/g++.dg/lookup/hidden-var1.C b/gcc/testsuite/g++.dg/lookup/hidden-var1.C new file mode 100644 index 0000000..6be32b5 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/hidden-var1.C @@ -0,0 +1,19 @@ +// Origin PR c++/45625 +// { dg-do compile } + +struct Outer +{ + static const int value = 1 ; + + template< int value > + struct Inner + { + static const int* + get_value() + { + return &value ;// { dg-error "lvalue required" } + } + }; +}; + +template class Outer::Inner<2>; |