diff options
author | Roland McGrath <mcgrathr@google.com> | 2012-07-24 11:53:14 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2012-07-24 11:53:14 +0000 |
commit | e2a6dd68afec2aad9db7b7fa438846c02c5a245e (patch) | |
tree | 5b9fa96d38952382fc9ac152451f989628f0f4d0 /gcc | |
parent | 9fecd0058bade9acd3161052506e53b90bf57101 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 6 |
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; |