From 5be1632b7deef653e188e11a930c938c7d3ce6e6 Mon Sep 17 00:00:00 2001 From: Steven Bosscher <steven@gcc.gnu.org> Date: Mon, 7 May 2012 14:40:33 +0000 Subject: [PATCH] re PR middle-end/53245 (ice in expand_case) PR middle-end/53245 * gimplify.c (preprocess_case_label_vec_for_gimple): If low or high is folded to a type boundary value, verify that the resulting case label is still a care range. From-SVN: r187248 --- gcc/ChangeLog | 7 +++++++ gcc/gimplify.c | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 133719b3387b..33aae8a11d85 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-05-07 Steven Bosscher <steven@gcc.gnu.org> + + PR middle-end/53245 + * gimplify.c (preprocess_case_label_vec_for_gimple): If low or high + is folded to a type boundary value, verify that the resulting case + label is still a care range. + 2012-05-07 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (ctz<mode>2): Emit rep;bsf diff --git a/gcc/gimplify.c b/gcc/gimplify.c index d7cbc2489a1b..74d789502031 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1658,6 +1658,10 @@ preprocess_case_label_vec_for_gimple (VEC(tree,heap) *labels, && tree_int_cst_compare (high, max_value) > 0) high = max_value; high = fold_convert (index_type, high); + + /* We may have folded a case range to a one-value case. */ + if (tree_int_cst_equal (low, high)) + high = NULL_TREE; } } -- GitLab