Re: [Patch ARM] Fix PR target/50106

2011-10-20 Thread Ramana Radhakrishnan
On 19 October 2011 20:38, Nathan Froyd nfr...@mozilla.com wrote:
 On 10/19/2011 3:27 PM, Ramana Radhakrishnan wrote:

 Index: gcc/config/arm/arm.c
 -      live_regs_mask |= extra_mask  (size / UNITS_PER_WORD);
 +      live_regs_mask |= extra_mask  ((size + 3) / UNITS_PER_WORD);

 IIUC, wouldn't ((size + UNITS_PER_WORD - 1) / UNITS_PER_WORD) be clearer?

 -Nathan



Doh ! Yes , this is what I committed.

Ramana

 2011-10-20  Ramana Radhakrishnan  ramana.radhakrish...@linaro.org

   PR target/50106
   * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
reg size from 1-3.
Index: gcc/config/arm/arm.c
===
--- gcc/config/arm/arm.c(revision 180239)
+++ gcc/config/arm/arm.c(working copy)
@@ -21652,7 +21652,8 @@
   if (extra_pop  0)
 {
   unsigned long extra_mask = (1  extra_pop) - 1;
-  live_regs_mask |= extra_mask  (size / UNITS_PER_WORD);
+  live_regs_mask |= extra_mask  ((size + UNITS_PER_WORD - 1) 
+  / UNITS_PER_WORD);
 }
 
   /* The prolog may have pushed some high registers to use as


Re: [Patch ARM] Fix PR target/50106

2011-10-20 Thread Jakub Jelinek
On Wed, Oct 19, 2011 at 08:27:26PM +0100, Ramana Radhakrishnan wrote:
 Ok to backport to 4.6 branch given it is branch freeze time ? I'll be

Yeah (with the changes Nathan suggested).

 2011-10-19  Ramana Radhakrishnan  ramana.radhakrish...@linaro.org
 
 PR target/50106
 * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
 reg size from 1-3.

Jakub


[Patch ARM] Fix PR target/50106

2011-10-19 Thread Ramana Radhakrishnan
Hi,

This fixes PR target/50106 which was missing handling return register
size from 1-3 for Thumb1. Fixed thusly. Final testing on-going with
arm-linux-gnueabi with thumb1.

Ok to backport to 4.6 branch given it is branch freeze time ? I'll be
able to commit this to the branch latest by tomorrow A.M. UK time.

cheers
Ramana


2011-10-19  Ramana Radhakrishnan  ramana.radhakrish...@linaro.org

PR target/50106
* config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
reg size from 1-3.


Index: gcc/config/arm/arm.c
===
--- gcc/config/arm/arm.c(revision 180200)
+++ gcc/config/arm/arm.c(working copy)
@@ -21652,7 +21652,7 @@
   if (extra_pop  0)
 {
   unsigned long extra_mask = (1  extra_pop) - 1;
-  live_regs_mask |= extra_mask  (size / UNITS_PER_WORD);
+  live_regs_mask |= extra_mask  ((size + 3) / UNITS_PER_WORD);
 }

   /* The prolog may have pushed some high registers to use as


Re: [Patch ARM] Fix PR target/50106

2011-10-19 Thread Nathan Froyd

On 10/19/2011 3:27 PM, Ramana Radhakrishnan wrote:

Index: gcc/config/arm/arm.c
-  live_regs_mask |= extra_mask  (size / UNITS_PER_WORD);
+  live_regs_mask |= extra_mask  ((size + 3) / UNITS_PER_WORD);


IIUC, wouldn't ((size + UNITS_PER_WORD - 1) / UNITS_PER_WORD) be clearer?

-Nathan