tree-cfg (group_case_labels): Remove case labels that have the same target as the default case.
* tree-cfg (group_case_labels): Remove case labels that have the same target as the default case. From-SVN: r84239
This commit is contained in:
parent
192c02b69c
commit
31e9eea2e8
@ -1,3 +1,8 @@
|
||||
2004-07-07 Steven Bosscher <stevenb@suse.de>
|
||||
|
||||
* tree-cfg.c (group_case_labels): Remove case labels that have
|
||||
the same target as the default case.
|
||||
|
||||
2004-07-07 Steven Bosscher <stevenb@suse.de>
|
||||
|
||||
* tree-inline.c (optimize_inline_calls): Set DECL_INLINED_FNS
|
||||
|
@ -937,6 +937,7 @@ group_case_labels (void)
|
||||
tree labels = SWITCH_LABELS (stmt);
|
||||
int old_size = TREE_VEC_LENGTH (labels);
|
||||
int i, j, new_size = old_size;
|
||||
tree default_label = TREE_VEC_ELT (labels, old_size - 1);
|
||||
|
||||
/* Look for possible opportunities to merge cases.
|
||||
Ignore the last element of the label vector because it
|
||||
@ -950,8 +951,18 @@ group_case_labels (void)
|
||||
if (! base_case)
|
||||
abort ();
|
||||
|
||||
type = TREE_TYPE (CASE_LOW (base_case));
|
||||
base_label = CASE_LABEL (base_case);
|
||||
|
||||
/* Discard cases that have the same destination as the
|
||||
default case. */
|
||||
if (base_label == default_label)
|
||||
{
|
||||
TREE_VEC_ELT (labels, i) = NULL_TREE;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
type = TREE_TYPE (CASE_LOW (base_case));
|
||||
base_high = CASE_HIGH (base_case) ?
|
||||
CASE_HIGH (base_case) : CASE_LOW (base_case);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user