Commit 31e9eea2 by Steven Bosscher Committed by Steven Bosscher

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
parent 192c02b6
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
regardless of DECL_LANG_SPECIFIC being present or not.
* tree.h (DECL_NUM_STMTS): Purge.
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment