summaryrefslogtreecommitdiff
path: root/gcc/sched-deps.c
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2002-11-20 10:03:36 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2002-11-20 10:03:36 +0000
commit7f8cb26b7cd1706b4f293f6d991bdc9502e5fbe1 (patch)
tree5f9c3ba9af36829f0d25dc8c9d0972426410d458 /gcc/sched-deps.c
parentcb77e60d0bf54f3cfa78ed62af62a22db8eb1c61 (diff)
downloadgcc-7f8cb26b7cd1706b4f293f6d991bdc9502e5fbe1.tar.gz
* sched-deps.c (sched_analyze): Check HARD_REGNO_CALL_PART_CLOBBERED.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59300 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r--gcc/sched-deps.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index cf762cccb58..98b0732291b 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -1287,8 +1287,12 @@ sched_analyze (deps, head, tail)
SET_REGNO_REG_SET (reg_pending_sets, i);
SET_REGNO_REG_SET (reg_pending_uses, i);
}
- /* Other call-clobbered hard regs may be clobbered. */
- else if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
+ /* Other call-clobbered hard regs may be clobbered.
+ Since we only have a choice between 'might be clobbered'
+ and 'definitely not clobbered', we must include all
+ partly call-clobbered registers here. */
+ else if (HARD_REGNO_CALL_PART_CLOBBERED (i, reg_raw_mode[i])
+ || TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
SET_REGNO_REG_SET (reg_pending_clobbers, i);
/* We don't know what set of fixed registers might be used
by the function, but it is certain that the stack pointer