aboutsummaryrefslogtreecommitdiff
path: root/gcc/sched-deps.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-08-31 11:01:08 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-08-31 11:01:08 -0700
commitfe3e667fb42a7ebf483437373ad4426884eaf6af (patch)
tree2231781fbe92300700ae77e5d1b6e3ff1329d630 /gcc/sched-deps.c
parent38066e838de65b304957b77eab5221041f8798d9 (diff)
downloadgcc-fe3e667fb42a7ebf483437373ad4426884eaf6af.zip
gcc-fe3e667fb42a7ebf483437373ad4426884eaf6af.tar.gz
gcc-fe3e667fb42a7ebf483437373ad4426884eaf6af.tar.bz2
sched-deps.c (add_dependence): Don't elide dependancy if the conditional used by insn is modified in elem.
* sched-deps.c (add_dependence): Don't elide dependancy if the conditional used by insn is modified in elem. From-SVN: r45330
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r--gcc/sched-deps.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index 4a71d10..dbbb140 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;
}