Commit d04e6ed5 by Nathan Sidwell Committed by Nathan Sidwell

[PR c++/84733] ICE in check-local-shadow

https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00425.html
	PR c++/84733
	* name-lookup.c (do_pushdecl_with_scope): Only clear
	current_function_decl when pushing a non-class (i.e. namespace)
	scope.

From-SVN: r258383
parent 77a5c1b6
2018-03-09 Nathan Sidwell <nathan@acm.org>
PR c++/84733
* name-lookup.c (do_pushdecl_with_scope): Only clear
current_function_decl when pushing a non-class (i.e. namespace)
scope.
2018-03-08 Jason Merrill <jason@redhat.com> 2018-03-08 Jason Merrill <jason@redhat.com>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
......
...@@ -3965,9 +3965,7 @@ static tree ...@@ -3965,9 +3965,7 @@ static tree
do_pushdecl_with_scope (tree x, cp_binding_level *level, bool is_friend) do_pushdecl_with_scope (tree x, cp_binding_level *level, bool is_friend)
{ {
cp_binding_level *b; cp_binding_level *b;
tree function_decl = current_function_decl;
current_function_decl = NULL_TREE;
if (level->kind == sk_class) if (level->kind == sk_class)
{ {
b = class_binding_level; b = class_binding_level;
...@@ -3977,12 +3975,15 @@ do_pushdecl_with_scope (tree x, cp_binding_level *level, bool is_friend) ...@@ -3977,12 +3975,15 @@ do_pushdecl_with_scope (tree x, cp_binding_level *level, bool is_friend)
} }
else else
{ {
tree function_decl = current_function_decl;
if (level->kind == sk_namespace)
current_function_decl = NULL_TREE;
b = current_binding_level; b = current_binding_level;
current_binding_level = level; current_binding_level = level;
x = pushdecl (x, is_friend); x = pushdecl (x, is_friend);
current_binding_level = b; current_binding_level = b;
current_function_decl = function_decl;
} }
current_function_decl = function_decl;
return x; return x;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment