diff options
author | pbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-12 21:28:27 +0000 |
---|---|---|
committer | pbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-12 21:28:27 +0000 |
commit | c550a00b50405315436cded355cb59717ecf39da (patch) | |
tree | 6f71e2b7e962f81d365145e3066fcac841769bf3 | |
parent | e7fef81b550973a86930ebc7a3f5e6e6403ccc9c (diff) | |
download | ppe42-gcc-c550a00b50405315436cded355cb59717ecf39da.tar.gz ppe42-gcc-c550a00b50405315436cded355cb59717ecf39da.zip |
2007-07-12 Paul Brook <paul@codesourcery.com>
gcc/
* config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
reg does not overlap return value.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126604 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8502ba0d021..806a0579736 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-07-12 Paul Brook <paul@codesourcery.com> + + * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch + reg does not overlap return value. + 2007-07-12 Daniel Berlin <dberlin@dberlin.org> * tree-ssa-pre.c (get_expression_vuses): Move out side-effect. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 6e993710227..5569d4a615b 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -10182,6 +10182,10 @@ thumb1_compute_save_reg_mask (void) have to push it. Use LAST_LO_REGNUM as our fallback choice for the register to select. */ reg = thumb_find_work_register (1 << LAST_LO_REGNUM); + /* Make sure the register returned by thumb_find_work_register is + not part of the return value. */ + if (reg * UNITS_PER_WORD <= arm_size_return_regs ()) + reg = LAST_LO_REGNUM; if (! call_used_regs[reg]) mask |= 1 << reg; |