diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index eb52015cab77de5c72bc08067729697a4d7ebc57..e1edc45cbb7e8bd2e09a00fc9306a845e03c3a51 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-11-03 Andrew Pinski <pinskia@physics.uc.edu> + + PR c++/24582 + * decl.c (declare_local_label): Return 0 for variables + with error_mark_node as their types. + 2005-11-02 Mark Mitchell <mark@codesourcery.com> PR c++/22434 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 7e38ec3dff1f3e5f83fe553ca78a6da29e6a13df..c5fe658599606e07b15843189a8dada1a07dc099 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 3be28a7f91ed39c32c52fa441af83d5cd08d59f5..82124c6a9d1ca23182c5e5354a04b437ba46f39d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-11-03 Andrew Pinski <pinskia@physics.uc.edu> + + PR c++/24582 + * g++.dg/init/switch1.C: New test. + 2005-11-03 Eric Botcazou <ebotcazou@libertysurf.fr> * 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 0000000000000000000000000000000000000000..b0b06b748f862dd5adadeec7113911062ef455df --- /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; + } +}