aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoland McGrath <mcgrathr@google.com>2012-07-24 11:53:14 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2012-07-24 11:53:14 +0000
commite2a6dd68afec2aad9db7b7fa438846c02c5a245e (patch)
tree5b9fa96d38952382fc9ac152451f989628f0f4d0 /gcc
parent9fecd0058bade9acd3161052506e53b90bf57101 (diff)
downloadgcc-e2a6dd68afec2aad9db7b7fa438846c02c5a245e.zip
gcc-e2a6dd68afec2aad9db7b7fa438846c02c5a245e.tar.gz
gcc-e2a6dd68afec2aad9db7b7fa438846c02c5a245e.tar.bz2
arm.c (arm_get_frame_offsets): Don't use fixed regs for stack alignment padding.
2012-07-24 Roland McGrath <mcgrathr@google.com> * arm.c (arm_get_frame_offsets): Don't use fixed regs for stack alignment padding. From-SVN: r189807
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 08722af..ecb96a5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-07-24 Roland McGrath <mcgrathr@google.com>
+
+ * arm.c (arm_get_frame_offsets): Don't use fixed regs for
+ stack alignment padding.
+
2012-07-24 Uros Bizjak <ubizjak@gmail.com>
PR target/53961
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 376274a..ca84604 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -16178,7 +16178,11 @@ arm_get_frame_offsets (void)
else
for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++)
{
- if ((offsets->saved_regs_mask & (1 << i)) == 0)
+ /* Avoid fixed registers; they may be changed at
+ arbitrary times so it's unsafe to restore them
+ during the epilogue. */
+ if (!fixed_regs[i]
+ && (offsets->saved_regs_mask & (1 << i)) == 0)
{
reg = i;
break;