From b88b7ced9b63f5f77b03dcd7fe114a152ac1dbd5 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Thu, 3 Nov 2005 15:06:42 +0000 Subject: [PATCH] re PR c++/24582 (ICE in decl_jump_unsafe) 2005-11-03 Andrew Pinski PR c++/24582 * g++.dg/init/switch1.C: New test. 2005-11-03 Andrew Pinski PR c++/24582 * decl.c (declare_local_label): Return 0 for variables with error_mark_node as their types. From-SVN: r106434 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/init/switch1.C | 8 ++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/init/switch1.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index eb52015..e1edc45 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-11-03 Andrew Pinski + + PR c++/24582 + * decl.c (declare_local_label): Return 0 for variables + with error_mark_node as their types. + 2005-11-02 Mark Mitchell PR c++/22434 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 7e38ec3..c5fe658 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -2147,7 +2147,8 @@ declare_local_label (tree id) static int decl_jump_unsafe (tree decl) { - if (TREE_CODE (decl) != VAR_DECL || TREE_STATIC (decl)) + if (TREE_CODE (decl) != VAR_DECL || TREE_STATIC (decl) + || TREE_TYPE (decl) == error_mark_node) return 0; if (TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (decl)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3be28a7..82124c6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-11-03 Andrew Pinski + + PR c++/24582 + * g++.dg/init/switch1.C: New test. + 2005-11-03 Eric Botcazou * gcc.dg/delay-slot-1.c: New test. diff --git a/gcc/testsuite/g++.dg/init/switch1.C b/gcc/testsuite/g++.dg/init/switch1.C new file mode 100644 index 0000000..b0b06b7 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/switch1.C @@ -0,0 +1,8 @@ +int f(int c) +{ + switch (c) + { + case d: /* { dg-error "'d' was not declared" } */ + int optBzip2 = true; + } +} -- 2.7.4