summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-31 18:01:08 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-31 18:01:08 +0000
commit2647d4bde42382ca3f3505d0480fc6b199ac7215 (patch)
tree2231781fbe92300700ae77e5d1b6e3ff1329d630 /gcc
parented6762c8d835d1044f766b6db24d2f211a8a5a2c (diff)
downloadgcc-2647d4bde42382ca3f3505d0480fc6b199ac7215.tar.gz
* sched-deps.c (add_dependence): Don't elide dependancy if the
conditional used by insn is modified in elem. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45330 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/sched-deps.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2d32c720889..b176a4d4374 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-08-31 Richard Henderson <rth@redhat.com>
+
+ * sched-deps.c (add_dependence): Don't elide dependancy if the
+ conditional used by insn is modified in elem.
+
2001-08-31 Nick Clifton <nickc@cambridge.redhat.com>
* config/v850/v850.h (OUTPUT_ADDR_CONST_EXTRA): Define.
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index 4a71d104c6c..dbbb140671b 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -213,11 +213,16 @@ add_dependence (insn, elem, dep_type)
/* flow.c doesn't handle conditional lifetimes entirely correctly;
calls mess up the conditional lifetimes. */
+ /* ??? add_dependence is the wrong place to be eliding dependencies,
+ as that forgets that the condition expressions themselves may
+ be dependent. */
if (GET_CODE (insn) != CALL_INSN && GET_CODE (elem) != CALL_INSN)
{
cond1 = get_condition (insn);
cond2 = get_condition (elem);
- if (cond1 && cond2 && conditions_mutex_p (cond1, cond2))
+ if (cond1 && cond2
+ && conditions_mutex_p (cond1, cond2)
+ && !modified_in_p (cond1, elem))
return;
}