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

Reply via email to