diff options
author | Jason Merrill <jason@redhat.com> | 2011-10-18 13:39:31 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-10-18 13:39:31 -0400 |
commit | d2f706418a847ebd9565638d76defc30ba9c30a0 (patch) | |
tree | 43dc312763e729979a1b15a06aec089851e93abc | |
parent | a2e70335e27f8e348cf5c8d11765a46d82282669 (diff) | |
download | gcc-d2f706418a847ebd9565638d76defc30ba9c30a0.zip gcc-d2f706418a847ebd9565638d76defc30ba9c30a0.tar.gz gcc-d2f706418a847ebd9565638d76defc30ba9c30a0.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lookup/using23.C | 13 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ad46384..24ca654 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2011-10-18 Jason Merrill <jason@redhat.com> + PR c++/50742 + * decl.c (check_previous_goto_1): Handle using-decl. + +2011-10-18 Jason Merrill <jason@redhat.com> + PR c++/50500 DR 1082 * class.c (type_has_user_declared_move_constructor): New. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 8b5033f..4b5b6c8 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 c794711..d2cf1a8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2011-10-18 Jason Merrill <jason@redhat.com> + 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 0000000..5dd8d85 --- /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:; + } +} |