diff options
Diffstat (limited to 'gcc/loop-unroll.c')
-rw-r--r-- | gcc/loop-unroll.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c index 68512d02a5a..72fda46e391 100644 --- a/gcc/loop-unroll.c +++ b/gcc/loop-unroll.c @@ -790,7 +790,7 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop) if (exit_at_end) { - basic_block exit_block = desc->in_edge->src->rbi->copy; + basic_block exit_block = get_bb_copy (desc->in_edge->src); /* 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) @@ -1110,7 +1110,7 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop) if (exit_at_end) { - basic_block exit_block = desc->in_edge->src->rbi->copy; + basic_block exit_block = get_bb_copy (desc->in_edge->src); /* Find a new in and out edge; they are in the last copy we have made. */ @@ -2058,9 +2058,11 @@ apply_opt_in_copies (struct opt_info *opt_info, for (i = opt_info->first_new_block; i < (unsigned) last_basic_block; i++) { bb = BASIC_BLOCK (i); - orig_bb = bb->rbi->original; + orig_bb = get_bb_original (bb); - delta = determine_split_iv_delta (bb->rbi->copy_number, n_copies, + /* bb->aux holds position in copy sequence initialized by + duplicate_loop_to_header_edge. */ + delta = determine_split_iv_delta ((size_t)bb->aux, n_copies, unrolling); orig_insn = BB_HEAD (orig_bb); for (insn = BB_HEAD (bb); insn != NEXT_INSN (BB_END (bb)); insn = next) @@ -2124,12 +2126,12 @@ apply_opt_in_copies (struct opt_info *opt_info, /* Rewrite also the original loop body. Find them as originals of the blocks in the last copied iteration, i.e. those that have - bb->rbi->original->copy == bb. */ + get_bb_copy (get_bb_original (bb)) == bb. */ for (i = opt_info->first_new_block; i < (unsigned) last_basic_block; i++) { bb = BASIC_BLOCK (i); - orig_bb = bb->rbi->original; - if (orig_bb->rbi->copy != bb) + orig_bb = get_bb_original (bb); + if (get_bb_copy (orig_bb) != bb) continue; delta = determine_split_iv_delta (0, n_copies, unrolling); |