]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/59340 (LRA enable-checking bootstrap failure since r205136)
authorVladimir Makarov <vmakarov@redhat.com>
Fri, 29 Nov 2013 20:08:38 +0000 (20:08 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Fri, 29 Nov 2013 20:08:38 +0000 (20:08 +0000)
2013-11-29  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/59340
* lra.c (check_rtl): Use recog_memoized instead of insn_invalid_p.

Revert
2013-11-20  Robert Suchanek  <Robert.Suchanek@imgtec.com>

* 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
gcc/lra.c
gcc/recog.c

index 842352849998a59d38de8f422c0b394575b675f8..74bbc8d75a974530e6e07574f42699b36777f988 100644 (file)
@@ -1,3 +1,15 @@
+2013-11-29  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/59340
+       * lra.c (check_rtl): Use recog_memoized instead of insn_invalid_p.
+
+       Revert
+       2013-11-20  Robert Suchanek  <Robert.Suchanek@imgtec.com>
+
+       * 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  <kyrylo.tkachov@arm.com>
 
        PR target/59289
index d0d9bcbc7e395c4aee2cbb81f5addef6e0e46924..d21d8646a61e0738264793cdbfb21ea8bb2e8834 100644 (file)
--- 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;
index 5c0ec165bd1423711f6b3bd4628baeefd6759576..7f597566770a11b0e7d209ed0dc8f02b0d440852 100644 (file)
@@ -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;