From 49f5efa5ea35706895eadcdff8c03387be5058e6 Mon Sep 17 00:00:00 2001 From: Vladimir Makarov Date: Fri, 29 Nov 2013 20:08:38 +0000 Subject: [PATCH] re PR rtl-optimization/59340 (LRA enable-checking bootstrap failure since r205136) 2013-11-29 Vladimir Makarov PR rtl-optimization/59340 * lra.c (check_rtl): Use recog_memoized instead of insn_invalid_p. Revert 2013-11-20 Robert Suchanek * lra.c (lra): Set lra_in_progress before check_rtl call. * recog.c (insn_invalid_p): Add !lra_in_progress to prevent adding clobber regs when LRA is running. From-SVN: r205541 --- gcc/ChangeLog | 12 ++++++++++++ gcc/lra.c | 12 ++++++------ gcc/recog.c | 3 +-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84235284999..74bbc8d75a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2013-11-29 Vladimir Makarov + + PR rtl-optimization/59340 + * lra.c (check_rtl): Use recog_memoized instead of insn_invalid_p. + + Revert + 2013-11-20 Robert Suchanek + + * lra.c (lra): Set lra_in_progress before check_rtl call. + * recog.c (insn_invalid_p): Add !lra_in_progress to prevent + adding clobber regs when LRA is running. + 2013-11-29 Kyrylo Tkachov PR target/59289 diff --git a/gcc/lra.c b/gcc/lra.c index d0d9bcbc7e3..d21d8646a61 100644 --- a/gcc/lra.c +++ b/gcc/lra.c @@ -2066,8 +2066,9 @@ check_rtl (bool final_p) correctly decomposed. LRA can generate reloads for decomposable addresses. The decomposition code checks the correctness of the addresses. So we don't need to check - the addresses here. */ - if (insn_invalid_p (insn, false)) + the addresses here. Don't call insn_invalid_p here, it can + change the code at this stage. */ + if (recog_memoized (insn) < 0 && asm_noperands (PATTERN (insn)) < 0) fatal_insn_not_found (insn); } } @@ -2266,14 +2267,13 @@ lra (FILE *f) init_insn_recog_data (); - /* We can not set up reload_in_progress because it prevents new - pseudo creation. */ - lra_in_progress = 1; - #ifdef ENABLE_CHECKING + /* Some quick check on RTL generated by previous passes. */ check_rtl (false); #endif + lra_in_progress = 1; + lra_live_range_iter = lra_coalesce_iter = 0; lra_constraint_iter = lra_constraint_iter_after_spill = 0; lra_inheritance_iter = lra_undo_inheritance_iter = 0; diff --git a/gcc/recog.c b/gcc/recog.c index 5c0ec165bd1..7f597566770 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -315,8 +315,7 @@ insn_invalid_p (rtx insn, bool in_group) int icode = recog (pat, insn, (GET_CODE (pat) == SET && ! reload_completed - && ! reload_in_progress - && ! lra_in_progress) + && ! reload_in_progress) ? &num_clobbers : 0); int is_asm = icode < 0 && asm_noperands (PATTERN (insn)) >= 0;