mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 23:01:17 +08:00
re PR c++/43069 (ICE: tree check: expected tree that contains 'decl minimal' structure, have 'overload' in set_decl_namespace, at cp/name-lookup.c:3105)
PR c++/43069 * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the decl we looked up doesn't match. From-SVN: r156841
This commit is contained in:
parent
85a52ea58c
commit
77278f4acb
@ -1,5 +1,9 @@
|
||||
2010-02-17 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/43069
|
||||
* name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
|
||||
decl we looked up doesn't match.
|
||||
|
||||
PR c++/43093
|
||||
* cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
|
||||
have an INIT_EXPR anymore.
|
||||
|
@ -3102,7 +3102,8 @@ set_decl_namespace (tree decl, tree scope, bool friendp)
|
||||
if (!is_overloaded_fn (decl))
|
||||
{
|
||||
/* We might have found OLD in an inline namespace inside SCOPE. */
|
||||
DECL_CONTEXT (decl) = DECL_CONTEXT (old);
|
||||
if (TREE_CODE (decl) == TREE_CODE (old))
|
||||
DECL_CONTEXT (decl) = DECL_CONTEXT (old);
|
||||
/* Don't compare non-function decls with decls_match here, since
|
||||
it can't check for the correct constness at this
|
||||
point. pushdecl will find those errors later. */
|
||||
|
@ -1,5 +1,8 @@
|
||||
2010-02-17 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/43069
|
||||
* g++.dg/parse/namespace11.C: New.
|
||||
|
||||
PR c++/43093
|
||||
* g++.dg/ext/attrib37.C: New.
|
||||
|
||||
|
7
gcc/testsuite/g++.dg/parse/namespace11.C
Normal file
7
gcc/testsuite/g++.dg/parse/namespace11.C
Normal file
@ -0,0 +1,7 @@
|
||||
// PR c++/43069
|
||||
|
||||
namespace std {
|
||||
template < typename >
|
||||
void swap ();
|
||||
}
|
||||
template std::swap // { dg-error "" }
|
Loading…
x
Reference in New Issue
Block a user