diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/lra-eliminations.c | 4 |
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 < ®_eliminate[NUM_ELIMINABLE_REGS]; ep1++) |