diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-06 14:30:57 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-06 14:30:57 +0000 |
commit | 75a3a599777855cf45aab014db019885c4c3bf8e (patch) | |
tree | e8e530723dfc9ff55042e20763899481816af0ac /gcc | |
parent | 1a643731b44cff394acf6c5c76e8d14e206166eb (diff) | |
download | ppe42-gcc-75a3a599777855cf45aab014db019885c4c3bf8e.tar.gz ppe42-gcc-75a3a599777855cf45aab014db019885c4c3bf8e.zip |
* function.c (handle_epilogue_set): Check for FP setting case when
SP is set from FP in same insn.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47719 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/function.c | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f244e61815..32ab317840f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Dec 6 09:24:12 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + + * function.c (handle_epilogue_set): Check for FP setting case when + SP is set from FP in same insn. + 2001-12-06 Nick Clifton <nickc@cambridge.redhat.com> * config/arm/arm.c (load_multiple_sequence): Pass pointer to diff --git a/gcc/function.c b/gcc/function.c index 082d6c6737b..dbd76c0121c 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -7349,10 +7349,13 @@ handle_epilogue_set (set, p) /* Next handle the case where we are setting SP's equivalent register. If we already have a value to set it to, abort. We could update, but - there seems little point in handling that case. */ - else if (p->sp_equiv_reg != 0 && reg_set_p (p->sp_equiv_reg, set)) + there seems little point in handling that case. Note that we have + to allow for the case where we are setting the register set in + the previous part of a PARALLEL inside a single insn. But use the + old offset for any updates within this insn. */ + else if (p->new_sp_equiv_reg != 0 && reg_set_p (p->new_sp_equiv_reg, set)) { - if (!rtx_equal_p (p->sp_equiv_reg, SET_DEST (set)) + if (!rtx_equal_p (p->new_sp_equiv_reg, SET_DEST (set)) || p->equiv_reg_src != 0) abort (); else |