(sched_analyze_2): Remove an explicit dependence between an insn that uses CC0 and...
authorJim Wilson <wilson@gcc.gnu.org>
Tue, 1 Sep 1992 01:26:25 +0000 (18:26 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 1 Sep 1992 01:26:25 +0000 (18:26 -0700)
(sched_analyze_2): Remove an explicit dependence between an insn
that uses CC0 and the immediately previous insn.
(SCHED_GROUP_P represents the dependence.)
(schedule_block): Only check sets_cc0_p on an insn.

From-SVN: r2010

gcc/sched.c

index 1a1fe73939cedef6de769cc9924336ce774c176f..e9842107d137d4e7604a378520c4604764a63df0 100644 (file)
@@ -1717,12 +1717,16 @@ sched_analyze_2 (x, insn)
 
        /* Make a copy of all dependencies on the immediately previous insn,
           and add to this insn.  This is so that all the dependencies will
-          apply to the group.  */
+          apply to the group.  Remove an explicit dependence on this insn
+          as SCHED_GROUP_P now represents it.  */
 
        prev = PREV_INSN (insn);
        while (GET_CODE (prev) == NOTE)
          prev = PREV_INSN (prev);
 
+       if (find_insn_list (prev, LOG_LINKS (insn)))
+         remove_dependence (insn, prev);
+
        for (link = LOG_LINKS (prev); link; link = XEXP (link, 1))
          add_dependence (insn, XEXP (link, 0), GET_MODE (link));
 
@@ -2933,10 +2937,12 @@ schedule_block (b, file)
      at the end because they can't be moved away from their cc0 user.  */
   last = 0;
   while (GET_CODE (insn) == CALL_INSN || GET_CODE (insn) == JUMP_INSN
-        || (GET_CODE (insn) == INSN && GET_CODE (PATTERN (insn)) == USE)
+        || (GET_CODE (insn) == INSN
+            && (GET_CODE (PATTERN (insn)) == USE
 #ifdef HAVE_cc0
-        || sets_cc0_p (PATTERN (insn))
+                || sets_cc0_p (PATTERN (insn))
 #endif
+                ))
         || GET_CODE (insn) == NOTE)
     {
       if (GET_CODE (insn) != NOTE)