From e2a6dd68afec2aad9db7b7fa438846c02c5a245e Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 24 Jul 2012 11:53:14 +0000 Subject: [PATCH] arm.c (arm_get_frame_offsets): Don't use fixed regs for stack alignment padding. 2012-07-24 Roland McGrath * arm.c (arm_get_frame_offsets): Don't use fixed regs for stack alignment padding. From-SVN: r189807 --- gcc/ChangeLog | 5 +++++ gcc/config/arm/arm.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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 + + * arm.c (arm_get_frame_offsets): Don't use fixed regs for + stack alignment padding. + 2012-07-24 Uros Bizjak 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; -- 2.7.4