summaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-19 20:52:22 +0000
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-19 20:52:22 +0000
commitba6d64900f231fd2013adff9d1dfd1888d6f4540 (patch)
tree3c9c773e0807fd5561372b295fbea79f2a514c64 /gcc/tree-cfg.c
parent417266d2c9b28fd66368d486f754454b26ec2d1d (diff)
downloadgcc-ba6d64900f231fd2013adff9d1dfd1888d6f4540.tar.gz
2004-10-19 Andrew Pinski <pinskia@physics.uc.edu>
* tree-cfg.c (group_case_labels): Look at the second to last case statement for combing with the default case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89288 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 0722df15ac3..1031f914265 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -948,7 +948,7 @@ group_case_labels (void)
Ignore the last element of the label vector because it
must be the default case. */
i = 0;
- while (i < old_size - 2)
+ while (i < old_size - 1)
{
tree base_case, base_label, base_high, type;
base_case = TREE_VEC_ELT (labels, i);
@@ -969,13 +969,13 @@ group_case_labels (void)
type = TREE_TYPE (CASE_LOW (base_case));
base_high = CASE_HIGH (base_case) ?
CASE_HIGH (base_case) : CASE_LOW (base_case);
-
+ i++;
/* Try to merge case labels. Break out when we reach the end
of the label vector or when we cannot merge the next case
label with the current one. */
- while (i < old_size - 2)
+ while (i < old_size - 1)
{
- tree merge_case = TREE_VEC_ELT (labels, ++i);
+ tree merge_case = TREE_VEC_ELT (labels, i);
tree merge_label = CASE_LABEL (merge_case);
tree t = int_const_binop (PLUS_EXPR, base_high,
integer_one_node, 1);
@@ -990,6 +990,7 @@ group_case_labels (void)
CASE_HIGH (base_case) = base_high;
TREE_VEC_ELT (labels, i) = NULL_TREE;
new_size--;
+ i++;
}
else
break;