diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cd3f8b2e8e0..257cb9aae8a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-03-13 Zdenek Dvorak + + * jump.c (follow_jumps): Do not check for loop notes. Move check for + flag_test_coverage out of loop. + 2006-03-13 Zdenek Dvorak * final.c (shorten_branches): Remove outdated comment, and turn diff --git a/gcc/jump.c b/gcc/jump.c index 38d1146ff22..79a21b4d1ae 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -1041,8 +1041,7 @@ sets_cc0_p (rtx x) 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) @@ -1063,19 +1062,15 @@ 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)