diff options
author | dj <dj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-04 19:03:02 +0000 |
---|---|---|
committer | dj <dj@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-04 19:03:02 +0000 |
commit | 0cbad26373badb8f6b4c194cd227f98f8ba7ba77 (patch) | |
tree | 2458692ef3527d5fd22f85be7644cb5e06383a05 /gcc/sched-deps.c | |
parent | cdfb02e8c8cb8910dd260d3ae9b1034b58cdc784 (diff) | |
download | gcc-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.c | 8 |
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; |