aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiong Wang <jiong.wang@arm.com>2014-11-18 09:30:08 +0000
committerJiong Wang <jiong.wang@arm.com>2014-11-18 09:30:08 +0000
commit3e75c949ee3847aada0466261af87e39e19816fe (patch)
tree71fe9726531e6d174ddccdeaafcf1a180d36e7e9
parentd4de9ae771db6086ba2ca45dd4f66a81c70ae46b (diff)
[LRA] Relax one gcc_assert in lra-eliminate for fixed register
gcc/ * lra-eliminations.c (update_reg_eliminate): Relax gcc_assert for fixed registers. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@217691 138bc75d-0d04-0410-961f-82ee72b054a4
-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++)