diff options
author | Nathan Sidwell <nathan@gcc.gnu.org> | 2005-04-21 15:47:33 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2005-04-21 15:47:33 +0000 |
commit | 41806d92af91cf26e52aa00a536cf3094ef2648b (patch) | |
tree | d321c52c21dedb7b851a7e57b5ea7c445d44db56 /gcc/loop-unroll.c | |
parent | ac7e839c63bfb19d83e6c81aee68c4435c1915c2 (diff) | |
download | gcc-41806d92af91cf26e52aa00a536cf3094ef2648b.zip gcc-41806d92af91cf26e52aa00a536cf3094ef2648b.tar.gz gcc-41806d92af91cf26e52aa00a536cf3094ef2648b.tar.bz2 |
alias.c (true_dependence): Remove 'abort' from comments.
* alias.c (true_dependence): Remove 'abort' from comments. Use
gcc_assert and gcc_unreachable as appropriate.
(canon_true_dependence): Likewise.
* bb-reorder.c (connect_traces): Likewise.
* c-common.c (c_add_case_label): Likewise.
* c-decl.c (finish_function): Likewise.
* caller-save.c (insert_restore, insert_save): Likewise.
* cfg.c (update_bb_profile_for_threading): Likewise.
* cfganal.c (flow_active_insn_p): Likewise.
* cfgexpand.c (add_reg_br_prob_note): Likewise.
* cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
cfg_layout_merge_blocks): Likewise.
* ifcvt.c (cond_exec_process_insns, merge_if_block,
find_if_block): Likewise.
* integrate.c (allocate_initial_values): Likewise.
* jump.c (reverse_condition, reverse_condition_maybe_unordered,
swap_condition, unsigned_condition, signed_condition,
mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
reg_or_subregno): Likewise.
* lambda-code.c (lambda_compute_auxillary_space,
lambda_transform_legal_p): Likewise.
* lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
* langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
lhd_incomplete_type_error, lhd_expand_expr,
lhd_types_compatible_p, lhd_tree_size): Likewise.
* lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
* local-alloc.c (update_equiv_regs): Likewise.
* loop-unroll.c (peel_loop_completely
unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
peel_loop_simple, unroll_loop_stupid,
analyze_iv_to_split_insn): Likewise.
* loop.c (gen_prefetch, find_and_verify_loops,
basic_induction_var): Likewise.
* modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
* value-prof.c (tree_find_values_to_profile): Likewise.
* varasm.c (named_section, default_assemble_integer,
decode_addr_const): Likewise.
From-SVN: r98508
Diffstat (limited to 'gcc/loop-unroll.c')
-rw-r--r-- | gcc/loop-unroll.c | 113 |
1 files changed, 66 insertions, 47 deletions
diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c index ab3828d..c93170c 100644 --- a/gcc/loop-unroll.c +++ b/gcc/loop-unroll.c @@ -495,6 +495,8 @@ peel_loop_completely (struct loops *loops, struct loop *loop) if (npeel) { + bool ok; + wont_exit = sbitmap_alloc (npeel + 1); sbitmap_ones (wont_exit); RESET_BIT (wont_exit, 0); @@ -508,11 +510,12 @@ peel_loop_completely (struct loops *loops, struct loop *loop) opt_info = analyze_insns_in_loop (loop); opt_info_start_duplication (opt_info); - 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 (); + 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); free (wont_exit); @@ -670,6 +673,7 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) struct niter_desc *desc = get_simple_loop_desc (loop); bool exit_at_end = loop_exit_at_end_p (loop); struct opt_info *opt_info = NULL; + bool ok; niter = desc->niter; @@ -704,12 +708,12 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) if (exit_mod) { opt_info_start_duplication (opt_info); - if (!duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), + ok = 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)) - abort (); + DLTHE_FLAG_UPDATE_FREQ); + gcc_assert (ok); if (opt_info && exit_mod > 1) apply_opt_in_copies (opt_info, exit_mod, false, false); @@ -740,11 +744,12 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) RESET_BIT (wont_exit, 1); opt_info_start_duplication (opt_info); - 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 (); + 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 (opt_info && exit_mod > 0) apply_opt_in_copies (opt_info, exit_mod + 1, false, false); @@ -763,11 +768,12 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) /* Now unroll the loop. */ opt_info_start_duplication (opt_info); - 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 (); + 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 (opt_info) { @@ -935,6 +941,7 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) struct niter_desc *desc = get_simple_loop_desc (loop); bool exit_at_end = loop_exit_at_end_p (loop); struct opt_info *opt_info = NULL; + bool ok; if (flag_split_ivs_in_unroller || flag_variable_expansion_in_unroller) @@ -1013,11 +1020,12 @@ 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; - 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 (); + 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); /* Record the place where switch will be built for preconditioning. */ swtch = loop_split_edge_with (loop_preheader_edge (loop), @@ -1029,11 +1037,12 @@ 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); - 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 (); + 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); /* Create item for switch. */ j = n_peel - i - (extra_zero_check ? 0 : 1); @@ -1041,7 +1050,8 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) preheader = loop_split_edge_with (loop_preheader_edge (loop), NULL_RTX); branch_code = compare_and_jump_seq (copy_rtx (niter), GEN_INT (j), EQ, - block_label (preheader), p, NULL_RTX); + block_label (preheader), p, + NULL_RTX); swtch = loop_split_edge_with (single_pred_edge (swtch), branch_code); set_immediate_dominator (CDI_DOMINATORS, preheader, swtch); @@ -1058,7 +1068,8 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) swtch = ezc_swtch; preheader = loop_split_edge_with (loop_preheader_edge (loop), NULL_RTX); branch_code = compare_and_jump_seq (copy_rtx (niter), const0_rtx, EQ, - block_label (preheader), p, NULL_RTX); + block_label (preheader), p, + NULL_RTX); swtch = loop_split_edge_with (single_succ_edge (swtch), branch_code); set_immediate_dominator (CDI_DOMINATORS, preheader, swtch); @@ -1077,11 +1088,12 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) RESET_BIT (wont_exit, may_exit_copy); opt_info_start_duplication (opt_info); - 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 (); + 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 (opt_info) { @@ -1094,7 +1106,8 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) if (exit_at_end) { basic_block exit_block = desc->in_edge->src->rbi->copy; - /* Find a new in and out edge; they are in the last copy we have made. */ + /* Find a new in and out edge; they are in the last copy we have + made. */ if (EDGE_SUCC (exit_block, 0)->dest == desc->out_edge->dest) { @@ -1119,7 +1132,8 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) the correct new number of iterations is this: */ gcc_assert (!desc->const_iter); desc->niter_expr = - simplify_gen_binary (UDIV, desc->mode, old_niter, GEN_INT (max_unroll + 1)); + simplify_gen_binary (UDIV, desc->mode, old_niter, + GEN_INT (max_unroll + 1)); desc->niter_max /= max_unroll + 1; if (exit_at_end) { @@ -1242,6 +1256,7 @@ peel_loop_simple (struct loops *loops, struct loop *loop) unsigned npeel = loop->lpt_decision.times; struct niter_desc *desc = get_simple_loop_desc (loop); struct opt_info *opt_info = NULL; + bool ok; if (flag_split_ivs_in_unroller && npeel > 1) opt_info = analyze_insns_in_loop (loop); @@ -1251,10 +1266,11 @@ peel_loop_simple (struct loops *loops, struct loop *loop) opt_info_start_duplication (opt_info); - if (!duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop), - loops, npeel, wont_exit, NULL, NULL, NULL, - DLTHE_FLAG_UPDATE_FREQ)) - abort (); + 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); free (wont_exit); @@ -1387,6 +1403,7 @@ unroll_loop_stupid (struct loops *loops, struct loop *loop) unsigned nunroll = loop->lpt_decision.times; struct niter_desc *desc = get_simple_loop_desc (loop); struct opt_info *opt_info = NULL; + bool ok; if (flag_split_ivs_in_unroller || flag_variable_expansion_in_unroller) @@ -1397,10 +1414,11 @@ unroll_loop_stupid (struct loops *loops, struct loop *loop) sbitmap_zero (wont_exit); opt_info_start_duplication (opt_info); - if (!duplicate_loop_to_header_edge (loop, loop_latch_edge (loop), - loops, nunroll, wont_exit, NULL, NULL, NULL, - DLTHE_FLAG_UPDATE_FREQ)) - abort (); + 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 (opt_info) { @@ -1599,6 +1617,7 @@ analyze_iv_to_split_insn (rtx insn) rtx set, dest; struct rtx_iv iv; struct iv_to_split *ivts; + bool ok; /* For now we just split the basic induction variables. Later this may be extended for example by selecting also addresses of memory references. */ @@ -1613,8 +1632,8 @@ analyze_iv_to_split_insn (rtx insn) if (!biv_p (insn, dest)) return NULL; - if (!iv_analyze (insn, dest, &iv)) - abort (); + ok = iv_analyze (insn, dest, &iv); + gcc_assert (ok); if (iv.step == const0_rtx || iv.mode != iv.extend_mode) |