From 02fbae83425bb4036cc58963e05460af2e395585 Mon Sep 17 00:00:00 2001 From: Steven Bosscher Date: Wed, 8 Dec 2004 00:12:03 +0000 Subject: [PATCH] re PR c/18867 (ICE on invalid switch quantity) PR c/18867 * c-typeck.c (c_start_case): Set orig_type to error_mark_node when the type of the controlling expression is not a valid type. testsuite/ * gcc.dg/noncompile/20041207.c: New test. From-SVN: r91837 --- gcc/ChangeLog | 6 ++++++ gcc/c-typeck.c | 1 + gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/noncompile/20041207.c | 8 ++++++++ 4 files changed, 19 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/noncompile/20041207.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7542d680cc5..70747e28fca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-12-07 Steven Bosscher + + PR c/18867 + * c-typeck.c (c_start_case): Set orig_type to error_mark_node + when the type of the controlling expression is not a valid type. + 2004-12-07 Steven Bosscher PR tree-optimization/17340 diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index f2f9b4daa45..e5c8ef5234e 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -6507,6 +6507,7 @@ c_start_case (tree exp) { error ("switch quantity not an integer"); exp = integer_zero_node; + orig_type = error_mark_node; } else { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ea907735373..440f3090086 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-12-07 Steven Bosscher + + * gcc.dg/noncompile/20041207.c: New test. + 2004-12-07 Volker Reichelt * g++.dg/other/unreachable-1.C: New test. diff --git a/gcc/testsuite/gcc.dg/noncompile/20041207.c b/gcc/testsuite/gcc.dg/noncompile/20041207.c new file mode 100644 index 00000000000..702424590f8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/noncompile/20041207.c @@ -0,0 +1,8 @@ +/* PR18867 - ICE on a switch controlling expressions with an + invalid type. Origin: Serge Belyshev */ + +void f() +{ + float x; + switch (x) {case 0: break;}; /* {dg-error "not an integer" } */ +} -- 2.30.2