OSDN Git Service

* jump.c (follow_jumps): Do not check for loop notes. Move check for
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 13 Mar 2006 12:16:40 +0000 (12:16 +0000)
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 13 Mar 2006 12:16:40 +0000 (12:16 +0000)
flag_test_coverage out of loop.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111996 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/jump.c

index cd3f8b2..257cb9a 100644 (file)
@@ -1,5 +1,10 @@
 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.
 
index 38d1146..79a21b4 100644 (file)
@@ -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)