summaryrefslogtreecommitdiff
path: root/gcc/sched-deps.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.com>2001-04-04 15:56:36 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2001-04-04 15:56:36 +0000
commit79ba58ef680bf23f7ae886be3259e0cead8ecd21 (patch)
tree4463acd8dd211c28153b8d8b4d1ee618099503ea /gcc/sched-deps.c
parente5bef2e40095525c3e12d3543d2f921703bc95b1 (diff)
downloadgcc-79ba58ef680bf23f7ae886be3259e0cead8ecd21.tar.gz
Partially revert previous change
From-SVN: r41085
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r--gcc/sched-deps.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index 0d13a2025e3..0bb9386f2ea 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -1022,12 +1022,13 @@ sched_analyze_insn (deps, x, insn, loop_notes)
if (GET_CODE (insn) == JUMP_INSN)
{
- rtx next, u;
+ rtx next;
next = next_nonnote_insn (insn);
if (next && GET_CODE (next) == BARRIER)
schedule_barrier_found = 1;
else
{
+ rtx pending, pending_mem, u;
regset_head tmp;
INIT_REG_SET (&tmp);
@@ -1042,6 +1043,19 @@ sched_analyze_insn (deps, x, insn, loop_notes)
});
CLEAR_REG_SET (&tmp);
+
+ pending = deps->pending_write_insns;
+ pending_mem = deps->pending_write_mems;
+ while (pending)
+ {
+ add_dependence (insn, XEXP (pending, 0), REG_DEP_OUTPUT);
+
+ pending = XEXP (pending, 1);
+ pending_mem = XEXP (pending_mem, 1);
+ }
+
+ for (u = deps->last_pending_memory_flush; u; u = XEXP (u, 1))
+ add_dependence (insn, XEXP (u, 0), REG_DEP_ANTI);
}
}