diff options
author | ramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-19 08:27:59 +0000 |
---|---|---|
committer | ramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-19 08:27:59 +0000 |
commit | a8eb47ea754a18208695983bc5ada2def78add05 (patch) | |
tree | 3a7046701b34c0d55f7149dc9e54e1e7a08448d0 /gcc/config/arm | |
parent | 77d6a623ca1ccd614007ad730fb3f5a3f04d193f (diff) | |
download | gcc-a8eb47ea754a18208695983bc5ada2def78add05.tar.gz |
For Ian Bolton <ian.bolton@arm.com>
2010-08-19 Ian Bolton <ian.bolton@arm.com>
PR target/45070
* gcc.c-torture/execute/pr45070.c: New.
* config/arm/arm.c (arm_output_epilogue): Ensure that return
value of size 1-3 is handled correctly.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163367 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm')
-rw-r--r-- | gcc/config/arm/arm.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index f6148a7309d..5ed16a8a76e 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -14467,7 +14467,8 @@ arm_output_epilogue (rtx sibling) && !crtl->tail_call_emit) { unsigned long mask; - mask = (1 << (arm_size_return_regs() / 4)) - 1; + /* Preserve return values, of any size. */ + mask = (1 << ((arm_size_return_regs() + 3) / 4)) - 1; mask ^= 0xf; mask &= ~saved_regs_mask; reg = 0; |