summaryrefslogtreecommitdiff
path: root/gcc/sched-deps.c
diff options
context:
space:
mode:
authordj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>2004-03-04 19:03:02 +0000
committerdj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>2004-03-04 19:03:02 +0000
commit0cbad26373badb8f6b4c194cd227f98f8ba7ba77 (patch)
tree2458692ef3527d5fd22f85be7644cb5e06383a05 /gcc/sched-deps.c
parentcdfb02e8c8cb8910dd260d3ae9b1034b58cdc784 (diff)
downloadgcc-0cbad26373badb8f6b4c194cd227f98f8ba7ba77.tar.gz
PR optimization/14282
* sched-deps.c (sched_analyze_insn): Allow a stack adjustment between a call and the assignment of its return value. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78925 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r--gcc/sched-deps.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index 754142f137c..ad96281b093 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -1127,7 +1127,13 @@ sched_analyze_insn (struct deps *deps, rtx x, rtx insn, rtx loop_notes)
tmp = SET_SRC (set);
if (GET_CODE (tmp) == SUBREG)
tmp = SUBREG_REG (tmp);
- if (GET_CODE (tmp) == REG)
+ if ((GET_CODE (tmp) == PLUS
+ || GET_CODE (tmp) == MINUS)
+ && GET_CODE (XEXP (tmp, 0)) == REG
+ && REGNO (XEXP (tmp, 0)) == STACK_POINTER_REGNUM
+ && dest_regno == STACK_POINTER_REGNUM)
+ src_regno = STACK_POINTER_REGNUM;
+ else if (GET_CODE (tmp) == REG)
src_regno = REGNO (tmp);
else
goto end_call_group;