Commit 03f8829b by Bernd Schmidt Committed by Bernd Schmidt

bfin.c (bfin_optimize_loop): If the LSETUP goes before a jump insn...

	* config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
	a jump insn, count that jump in the distance to the loop start.

From-SVN: r145080
parent c0b753c7
2009-03-26 Bernd Schmidt <bernd.schmidt@analog.com>
* config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
a jump insn, count that jump in the distance to the loop start.
2009-03-25 Kaz Kojima <kkojima@gcc.gnu.org>
PR target/39523
......
......@@ -3854,9 +3854,17 @@ bfin_optimize_loop (loop_info loop)
/* Make sure the predecessor is before the loop start label, as required by
the LSETUP instruction. */
length = 0;
for (insn = BB_END (loop->incoming_src);
insn && insn != loop->start_label;
insn = NEXT_INSN (insn))
insn = BB_END (loop->incoming_src);
/* If we have to insert the LSETUP before a jump, count that jump in the
length. */
if (VEC_length (edge, loop->incoming) > 1
|| !(VEC_last (edge, loop->incoming)->flags & EDGE_FALLTHRU))
{
gcc_assert (JUMP_P (insn));
insn = PREV_INSN (insn);
}
for (; insn && insn != loop->start_label; insn = NEXT_INSN (insn))
length += length_for_loop (insn);
if (!insn)
......
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