aboutsummaryrefslogtreecommitdiff
path: root/gcc/sched.c
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-08-31 18:26:25 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-08-31 18:26:25 -0700
commit11222b61f1ba16a1fd82acb2741eb989118d4ebd (patch)
tree3c17a16b63f2f8f507742243b87858924deaba6e /gcc/sched.c
parent4ecc65ac4eb85f3e2864b966b54176758612eddb (diff)
downloadgcc-11222b61f1ba16a1fd82acb2741eb989118d4ebd.zip
gcc-11222b61f1ba16a1fd82acb2741eb989118d4ebd.tar.gz
gcc-11222b61f1ba16a1fd82acb2741eb989118d4ebd.tar.bz2
(sched_analyze_2): Remove an explicit dependence between an insn that uses CC0 and the immediately previous insn.
(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
Diffstat (limited to 'gcc/sched.c')
-rw-r--r--gcc/sched.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/sched.c b/gcc/sched.c
index 1a1fe73..e984210 100644
--- a/gcc/sched.c
+++ b/gcc/sched.c
@@ -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)