From ddcfa953fc03ed582dfac5c51870fb3df27b6aff Mon Sep 17 00:00:00 2001 From: Jiong Wang Date: Tue, 18 Nov 2014 09:30:08 +0000 Subject: [PATCH] [LRA] Relax one gcc_assert in lra-eliminate for fixed register gcc/ * lra-eliminations.c (update_reg_eliminate): Relax gcc_assert for fixed registers. From-SVN: r217691 --- gcc/ChangeLog | 5 +++++ gcc/lra-eliminations.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) 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 + + * lra-eliminations.c (update_reg_eliminate): Relax gcc_assert for fixed + registers. + 2014-11-18 Marat Zakirov * 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++)