diff options
author | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-09-04 13:03:02 +0000 |
---|---|---|
committer | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-09-04 13:03:02 +0000 |
commit | 49a701754404dae1846ba49062fbc54a3b7c24a2 (patch) | |
tree | e122d3a36874476f12e63764b611e6ee436001d2 /gcc/stmt.c | |
parent | c1a60a68d27bb1918025c040ed41c27548e4f0aa (diff) | |
download | gcc-49a701754404dae1846ba49062fbc54a3b7c24a2.tar.gz |
* gimple.h (gimple_build_switch): Remove.
(gimple_build_switch_vec): Promote to the new gimple_build_switch.
(gimple_switch_default_label): Assert the default case label is
really a default case label.
(gimple_switch_set_default_label): Likewise.
* gimple.c (gimple_build_switch_nlabels): Make sure a default label
is passed in, and simplify accordingly.
(gimple_build_switch): Removed.
(gimple_build_switch_vec): Rename to gimple_build_switch.
* gimplify.c (gimplify_switch_expr): Update gimple_build_switch use.
* gimple-pretty-print.c (dump_gimple_switch): Do not accept a NULL
case label.
* stmt.c (expand_case): Simplify using the fact that every GIMPLE
switch must have a default case.
* tree-cfg.c (group_case_labels_stmt): Likewise.
(verify_gimple_switch): Use gimple_switch_label in verifier to get
the label at index 0, and verify that it is a valid default case.
* except.c (sjlj_emit_dispatch_table): Rewrite construction of the
switch for dispatching.
* tree-eh.c (lower_try_finally_switch): Update gimple_build_switch use.
(lower_eh_dispatch): Likewise.
* tree-vrp.c (execute_vrp): Use gimple_switch_label to get the case
label at index 0 before turning it into a default case label.
* omp-low.c (expand_omp_sections): Update gimple_build_switch use.
* tree-switch-conversion.c (emit_case_bit_tests): Get the default case
label using gimple_switch_default_label.
(collect_switch_conv_info): Likewise.
(process_switch): Likewise.
* doc/gimple.texi: Update documentation of gimple_build_switch.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190925 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r-- | gcc/stmt.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c index 11180e4dc4a..8d76b3eea08 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -1951,7 +1951,7 @@ expand_case (gimple stmt) tree minval = NULL_TREE, maxval = NULL_TREE, range = NULL_TREE; rtx default_label = NULL_RTX; unsigned int count, uniq; - int i, stopi = 0; + int i; rtx before_case, end; int ncases = gimple_switch_num_labels (stmt); tree index_expr = gimple_switch_index (stmt); @@ -1986,16 +1986,11 @@ expand_case (gimple stmt) do_pending_stack_adjust (); - /* The default case, if ever taken, is the first element. */ - elt = gimple_switch_label (stmt, 0); - if (!CASE_LOW (elt) && !CASE_HIGH (elt)) - { - default_label = label_rtx (CASE_LABEL (elt)); - stopi = 1; - } + /* Find the default case target label. */ + default_label = label_rtx (CASE_LABEL (gimple_switch_default_label (stmt))); /* Get upper and lower bounds of case values. */ - elt = gimple_switch_label (stmt, stopi); + elt = gimple_switch_label (stmt, 1); minval = fold_convert (index_type, CASE_LOW (elt)); elt = gimple_switch_label (stmt, ncases - 1); if (CASE_HIGH (elt)) @@ -2011,7 +2006,7 @@ expand_case (gimple stmt) uniq = 0; count = 0; label_bitmap = BITMAP_ALLOC (NULL); - for (i = gimple_switch_num_labels (stmt) - 1; i >= stopi; --i) + for (i = gimple_switch_num_labels (stmt) - 1; i >= 1; --i) { tree low, high; rtx lab; |