aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/lra-eliminations.c4
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4877dc97747..b303164e248 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-11-18 Jiong Wang <jiong.wang@arm.com>
+
+ * lra-eliminations.c (update_reg_eliminate): Relax gcc_assert for fixed
+ registers.
+
2014-11-18 Marat Zakirov <m.zakirov@samsung.com>
* opts.c (finish_options): Disable aggressive opts for sanitizer.
diff --git a/gcc/lra-eliminations.c b/gcc/lra-eliminations.c
index 8ab0222ae50..aeae27c3710 100644
--- a/gcc/lra-eliminations.c
+++ b/gcc/lra-eliminations.c
@@ -1199,7 +1199,9 @@ update_reg_eliminate (bitmap insns_with_changed_offsets)
ep->from, ep->to);
/* If after processing RTL we decides that SP can be used as
a result of elimination, it can not be changed. */
- gcc_assert (ep->to_rtx != stack_pointer_rtx);
+ gcc_assert ((ep->to_rtx != stack_pointer_rtx)
+ || (ep->from < FIRST_PSEUDO_REGISTER
+ && fixed_regs [ep->from]));
/* Mark that is not eliminable anymore. */
elimination_map[ep->from] = NULL;
for (ep1 = ep + 1; ep1 < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep1++)