From: Jason Merrill Date: Tue, 18 Oct 2011 17:39:31 +0000 (-0400) Subject: re PR c++/50742 (tree check fail in check_previous_goto_1) X-Git-Tag: releases/gcc-4.7.0~2994 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d2f706418a847ebd9565638d76defc30ba9c30a0;p=thirdparty%2Fgcc.git re PR c++/50742 (tree check fail in check_previous_goto_1) PR c++/50742 * decl.c (check_previous_goto_1): Handle using-decl. From-SVN: r180160 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ad46384349db..24ca6548d1c0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-10-18 Jason Merrill + + PR c++/50742 + * decl.c (check_previous_goto_1): Handle using-decl. + 2011-10-18 Jason Merrill PR c++/50500 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 8b5033f32060..4b5b6c812264 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -2683,7 +2683,8 @@ check_previous_goto_1 (tree decl, cp_binding_level* level, tree names, tree new_decls, old_decls = (b == level ? names : NULL_TREE); for (new_decls = b->names; new_decls != old_decls; - new_decls = DECL_CHAIN (new_decls)) + new_decls = (DECL_P (new_decls) ? DECL_CHAIN (new_decls) + : TREE_CHAIN (new_decls))) { int problem = decl_jump_unsafe (new_decls); if (! problem) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c794711e678c..d2cf1a83df51 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2011-10-18 Jason Merrill + PR c++/50742 + * g++.dg/lookup/using23.C: New. + PR c++/50500 * g++.dg/cpp0x/implicit12.C: New. * g++.dg/cpp0x/defaulted20.C: Adjust. diff --git a/gcc/testsuite/g++.dg/lookup/using23.C b/gcc/testsuite/g++.dg/lookup/using23.C new file mode 100644 index 000000000000..5dd8d8594b11 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/using23.C @@ -0,0 +1,13 @@ +// PR c++/50742 + +typedef int A; + +void f(int i) +{ + switch (i) + { + case 0: + using ::A; + default:; + } +}