This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/50106] [ARM] Wrong code with -march=armv5t -mthumb -Os
- From: "ramana at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 17 Aug 2011 17:19:14 +0000
- Subject: [Bug target/50106] [ARM] Wrong code with -march=armv5t -mthumb -Os
- Auto-submitted: auto-generated
- References: <bug-50106-4@http.gcc.gnu.org/bugzilla/>
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