diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/sched-deps.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2d32c72..b176a4d 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 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; } |
