http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50106
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Status|UNCONFIRMED |NEW Last reconfirmed| |2011-08-17 CC| |ramana at gcc dot gnu.org Ever Confirmed|0 |1 Known to fail| |4.6.1, 4.7.0 --- Comment #3 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> 2011-08-17 17:19:14 UTC --- Looks suspiciously similar to PR45070. Ramana The patch below *might* fix it - completely untested. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index fc2fd47..affa7b3 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -21124,7 +21124,7 @@ thumb_unexpanded_epilogue (void) 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