diff options
author | DJ Delorie <dj@redhat.com> | 2004-03-04 14:03:02 -0500 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2004-03-04 14:03:02 -0500 |
commit | 58f206d65d331d1e19f6d9e0a7851381861e113d (patch) | |
tree | 2458692ef3527d5fd22f85be7644cb5e06383a05 /gcc | |
parent | e9eba25540d02efc8ccbf450be20d3d874c36846 (diff) | |
download | gcc-58f206d65d331d1e19f6d9e0a7851381861e113d.zip gcc-58f206d65d331d1e19f6d9e0a7851381861e113d.tar.gz gcc-58f206d65d331d1e19f6d9e0a7851381861e113d.tar.bz2 |
re PR rtl-optimization/14282 (ICE in sh-elf-gcc with -m4-single-only and -O2)
PR optimization/14282
* sched-deps.c (sched_analyze_insn): Allow a stack adjustment
between a call and the assignment of its return value.
From-SVN: r78925
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/sched-deps.c | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 03a47a3..4f53e6b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-03-04 DJ Delorie <dj@redhat.com> + + PR optimization/14282 + * sched-deps.c (sched_analyze_insn): Allow a stack adjustment + between a call and the assignment of its return value. + 2004-03-04 Kazu Hirata <kazu@cs.umass.edu> * config/h8300/h8300.c: Put a comment for every function. diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 754142f..ad96281 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; |