2006-03-13 Zdenek Dvorak <dvorakz@suse.cz>
+ * jump.c (follow_jumps): Do not check for loop notes. Move check for
+ flag_test_coverage out of loop.
+
+2006-03-13 Zdenek Dvorak <dvorakz@suse.cz>
+
* final.c (shorten_branches): Remove outdated comment, and turn
the if branch that guards it to continue.
If the chain loops or we can't find end, return LABEL,
since that tells caller to avoid changing the insn.
- If RELOAD_COMPLETED is 0, we do not chain across a NOTE_INSN_LOOP_BEG or
- a USE or CLOBBER. */
+ If RELOAD_COMPLETED is 0, we do not chain across a USE or CLOBBER. */
rtx
follow_jumps (rtx label)
&& BARRIER_P (next));
depth++)
{
- /* Don't chain through the insn that jumps into a loop
- from outside the loop,
- since that would create multiple loop entry jumps
- and prevent loop optimization. */
rtx tem;
- if (!reload_completed)
- for (tem = value; tem != insn; tem = NEXT_INSN (tem))
- if (NOTE_P (tem)
- && (NOTE_LINE_NUMBER (tem) == NOTE_INSN_LOOP_BEG
- /* ??? Optional. Disables some optimizations, but makes
- gcov output more accurate with -O. */
- || (flag_test_coverage && NOTE_LINE_NUMBER (tem) > 0)))
- return value;
+ if (!reload_completed && flag_test_coverage)
+ {
+ /* ??? Optional. Disables some optimizations, but makes
+ gcov output more accurate with -O. */
+ for (tem = value; tem != insn; tem = NEXT_INSN (tem))
+ if (NOTE_P (tem) && NOTE_LINE_NUMBER (tem) > 0)
+ return value;
+ }
/* If we have found a cycle, make the insn jump to itself. */
if (JUMP_LABEL (insn) == label)