diff options
author | Nathan Sidwell <nathan@gcc.gnu.org> | 2004-09-10 11:02:26 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2004-09-10 11:02:26 +0000 |
commit | 8127d0e073d0d792628af20a2df90ddf5177c623 (patch) | |
tree | e64840975a1fb341da6f0ef0ef7e39e120efacf6 /gcc/loop-unroll.c | |
parent | 108ebf88b21935d2e28ffe205b2126b49acf9e12 (diff) | |
download | gcc-8127d0e073d0d792628af20a2df90ddf5177c623.zip gcc-8127d0e073d0d792628af20a2df90ddf5177c623.tar.gz gcc-8127d0e073d0d792628af20a2df90ddf5177c623.tar.bz2 |
Revert 2004-09-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
* lambda-mat.c (lambda_matrix_inverse_hard): Use gcc_assert
and gcc_unreachable instead of abort.
* lambda.h (lambda_vector_min_nz): Likewise.
* langhooks.c lhd_set_decl_assembler_name, lhd_can_use_bit_fields_p,
lhd_incomplete_type_error, lhd_expand_expr, lhd_types_compatible_p,
lhd_gimplify_expr): Likewise.
* lcm.c (optimize_mode_switching): Likewise.
* local-alloc.c (update_equiv_regs, block_alloc, find_free_reg):
Likewise.
* loop-doloop.c (doloop_modify): Likewise.
* loop-invariant.c (record_use): Likewise.
* loop-iv.c (get_biv_step_1, get_biv_step, iv_analyze, get_iv_value,
canon_condition, simplify_using_condition,
simplify_using_initial_values, shorten_into_mode,
canonicalize_iv_subregs, iv_number_of_iterations): Likewise.
* loop-unroll.c (unroll_and_peel_loops, peel_loop_completely,
unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
peel_loop_simple, unroll_loop_stupid): Likewise.
* loop-unswitch.c (compare_and_jump_seq, unswitch_single_loop,
unswitch_loop): Likewise.
* loop.c (gen_prefetch, loop_optimize, rtx_equal_for_loop_p,
move_movables, replace_call_address, find_and_verify_loops,
rtx_equal_for_prefetch_p, record_giv, general_induction_var,
simplify_giv_expr, check_ext_dependent_givs, try_copy_prop,
loop_giv_dump): Likewise.
* loop.h (INSN_LUID): Likewise.
* modulo-sched.c (normalize_sched_times, generate_prolog_epilog,
sms_schedule, check_nodes_order): Likewise.
* optabs.c (gen_conditional, add_equal_note, expand_simple_binop,
expand_twoval_unop, expand_twoval_binop, expand_twoval_binop_libfunc,
expand_simple_unop, emit_no_conflict_block, prepare_cmp_insn,
emit_cmp_and_jump_insn_1, emit_cmp_and_jump_insns,
prepare_float_lib_cmp, gen_add2_insn, have_add2_insn, gen_sub2_insn,
have_sub2_insn, expand_float, expand_fix, debug_optab_libfuncs):
Likewise.
* opts.c (common_handle_option): Likewise.
* params.c (set_param_value): Likewise.
* passes.c (open_dump_file, rest_of_handle_final): Likewise.
* postreload-gcse.c (expr_equiv_p, oprs_unchanged_p,hash_scan_set,
reg_set_between_after_reload_p, reg_used_between_after_reload_p,
get_avail_load_store_reg, eliminate_partially_redundant_load):
Likewise.
* postreload.c (reload_cse_simplify_set, reload_combine_note_use):
Likewise.
* predict.c (tree_predicted_by_p, expected_value_to_br_prob,
propagate_freq, expensive_function_p): Likewise.
* pretty-print.c (pp_base_format_text)
* profile.c (instrument_edges, instrument_values,
compute_branch_probabilities, branch_prob, union_groups,
end_branch_prob, tree_register_profile_hooks): Likewise.
From-SVN: r87290
Diffstat (limited to 'gcc/loop-unroll.c')
-rw-r--r-- | gcc/loop-unroll.c | 111 |
1 files changed, 47 insertions, 64 deletions
diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c index 59533d7..74957a7 100644 --- a/gcc/loop-unroll.c +++ b/gcc/loop-unroll.c @@ -116,7 +116,7 @@ unroll_and_peel_loops (struct loops *loops, int flags) { case LPT_PEEL_COMPLETELY: /* Already done. */ - gcc_unreachable (); + abort (); case LPT_PEEL_SIMPLE: peel_loop_simple (loops, loop); break; @@ -133,7 +133,7 @@ unroll_and_peel_loops (struct loops *loops, int flags) check = false; break; default: - gcc_unreachable (); + abort (); } if (check) { @@ -433,8 +433,6 @@ peel_loop_completely (struct loops *loops, struct loop *loop) if (npeel) { - int ok; - wont_exit = sbitmap_alloc (npeel + 1); sbitmap_ones (wont_exit); RESET_BIT (wont_exit, 0); @@ -444,12 +442,11 @@ peel_loop_completely (struct loops *loops, struct loop *loop) remove_edges = xcalloc (npeel, sizeof (edge)); n_remove_edges = 0; - ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), - loops, npeel, - wont_exit, desc->out_edge, - remove_edges, &n_remove_edges, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + if (!duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), + loops, npeel, + wont_exit, desc->out_edge, remove_edges, &n_remove_edges, + DLTHE_FLAG_UPDATE_FREQ)) + abort (); free (wont_exit); @@ -600,12 +597,11 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) unsigned max_unroll = loop->lpt_decision.times; struct niter_desc *desc = get_simple_loop_desc (loop); bool exit_at_end = loop_exit_at_end_p (loop); - int ok; niter = desc->niter; - /* Should not assert out here (such loop should be peeled instead). */ - gcc_assert (niter > max_unroll + 1); + if (niter <= max_unroll + 1) + abort (); /* Should not get here (such loop should be peeled instead). */ exit_mod = niter % (max_unroll + 1); @@ -631,14 +627,12 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) if (exit_mod) { - int ok; - - ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), + if (!duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), loops, exit_mod, wont_exit, desc->out_edge, remove_edges, &n_remove_edges, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + DLTHE_FLAG_UPDATE_FREQ)) + abort (); desc->noloop_assumptions = NULL_RTX; desc->niter -= exit_mod; @@ -661,18 +655,15 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) if (exit_mod != max_unroll || desc->noloop_assumptions) { - int ok; - RESET_BIT (wont_exit, 0); if (desc->noloop_assumptions) RESET_BIT (wont_exit, 1); - ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), - loops, exit_mod + 1, - wont_exit, desc->out_edge, - remove_edges, &n_remove_edges, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + if (!duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), + loops, exit_mod + 1, + wont_exit, desc->out_edge, remove_edges, &n_remove_edges, + DLTHE_FLAG_UPDATE_FREQ)) + abort (); desc->niter -= exit_mod + 1; desc->niter_max -= exit_mod + 1; @@ -686,12 +677,11 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) } /* Now unroll the loop. */ - ok = duplicate_loop_to_header_edge (loop, loop_latch_edge (loop), - loops, max_unroll, - wont_exit, desc->out_edge, - remove_edges, &n_remove_edges, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + if (!duplicate_loop_to_header_edge (loop, loop_latch_edge (loop), + loops, max_unroll, + wont_exit, desc->out_edge, remove_edges, &n_remove_edges, + DLTHE_FLAG_UPDATE_FREQ)) + abort (); free (wont_exit); @@ -852,7 +842,6 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) unsigned max_unroll = loop->lpt_decision.times; struct niter_desc *desc = get_simple_loop_desc (loop); bool exit_at_end = loop_exit_at_end_p (loop); - int ok; /* Remember blocks whose dominators will have to be updated. */ dom_bbs = xcalloc (n_basic_blocks, sizeof (basic_block)); @@ -927,12 +916,11 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) && !desc->noloop_assumptions) SET_BIT (wont_exit, 1); ezc_swtch = loop_preheader_edge (loop)->src; - ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), - loops, 1, - wont_exit, desc->out_edge, - remove_edges, &n_remove_edges, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + if (!duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), + loops, 1, + wont_exit, desc->out_edge, remove_edges, &n_remove_edges, + DLTHE_FLAG_UPDATE_FREQ)) + abort (); /* Record the place where switch will be built for preconditioning. */ swtch = loop_split_edge_with (loop_preheader_edge (loop), @@ -944,12 +932,11 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) sbitmap_zero (wont_exit); if (i != n_peel - 1 || !last_may_exit) SET_BIT (wont_exit, 1); - ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), - loops, 1, - wont_exit, desc->out_edge, - remove_edges, &n_remove_edges, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + if (!duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), + loops, 1, + wont_exit, desc->out_edge, remove_edges, &n_remove_edges, + DLTHE_FLAG_UPDATE_FREQ)) + abort (); /* Create item for switch. */ j = n_peel - i - (extra_zero_check ? 0 : 1); @@ -992,12 +979,11 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) sbitmap_ones (wont_exit); RESET_BIT (wont_exit, may_exit_copy); - ok = duplicate_loop_to_header_edge (loop, loop_latch_edge (loop), - loops, max_unroll, - wont_exit, desc->out_edge, - remove_edges, &n_remove_edges, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + if (!duplicate_loop_to_header_edge (loop, loop_latch_edge (loop), + loops, max_unroll, + wont_exit, desc->out_edge, remove_edges, &n_remove_edges, + DLTHE_FLAG_UPDATE_FREQ)) + abort (); free (wont_exit); @@ -1027,7 +1013,8 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) preconditioning and the fact that the value must be valid at entry of the loop. After passing through the above code, we see that the correct new number of iterations is this: */ - gcc_assert (!desc->const_iter); + if (desc->const_iter) + abort (); desc->niter_expr = simplify_gen_binary (UDIV, desc->mode, old_niter, GEN_INT (max_unroll + 1)); desc->niter_max /= max_unroll + 1; @@ -1151,16 +1138,14 @@ peel_loop_simple (struct loops *loops, struct loop *loop) sbitmap wont_exit; unsigned npeel = loop->lpt_decision.times; struct niter_desc *desc = get_simple_loop_desc (loop); - int ok; wont_exit = sbitmap_alloc (npeel + 1); sbitmap_zero (wont_exit); - ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), - loops, npeel, wont_exit, - NULL, NULL, NULL, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + if (!duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), + loops, npeel, wont_exit, NULL, NULL, NULL, + DLTHE_FLAG_UPDATE_FREQ)) + abort (); free (wont_exit); @@ -1286,16 +1271,14 @@ unroll_loop_stupid (struct loops *loops, struct loop *loop) sbitmap wont_exit; unsigned nunroll = loop->lpt_decision.times; struct niter_desc *desc = get_simple_loop_desc (loop); - int ok; wont_exit = sbitmap_alloc (nunroll + 1); sbitmap_zero (wont_exit); - ok = duplicate_loop_to_header_edge (loop, loop_latch_edge (loop), - loops, nunroll, wont_exit, - NULL, NULL, NULL, - DLTHE_FLAG_UPDATE_FREQ); - gcc_assert (ok); + if (!duplicate_loop_to_header_edge (loop, loop_latch_edge (loop), + loops, nunroll, wont_exit, NULL, NULL, NULL, + DLTHE_FLAG_UPDATE_FREQ)) + abort (); free (wont_exit); |