re PR middle-end/84040 (compilation time of gcc.c-torture/compile/limits-blockid...
authorJakub Jelinek <jakub@redhat.com>
Sat, 27 Jan 2018 06:28:15 +0000 (07:28 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 27 Jan 2018 06:28:15 +0000 (07:28 +0100)
PR middle-end/84040
* sched-deps.c (sched_macro_fuse_insns): Return immediately for
debug insns.

From-SVN: r257119

gcc/ChangeLog
gcc/sched-deps.c

index bcf3ffd079f3725b393e73442fdeb79ef421e55b..f2699e0c0d09b5b9a281aea337569b59f0a93d32 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-27  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/84040
+       * sched-deps.c (sched_macro_fuse_insns): Return immediately for
+       debug insns.
+
 2018-01-26  Jim Wilson  <jimw@sifive.com>
 
        * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
index 3971861e5eff87e73aaad9542b9f066812ee911b..2d0199d5837740bcc4ac84c65e973cd0972accf3 100644 (file)
@@ -2834,10 +2834,16 @@ static void
 sched_macro_fuse_insns (rtx_insn *insn)
 {
   rtx_insn *prev;
+  /* No target hook would return true for debug insn as any of the
+     hook operand, and with very large sequences of only debug insns
+     where on each we call sched_macro_fuse_insns it has quadratic
+     compile time complexity.  */
+  if (DEBUG_INSN_P (insn))
+    return;
   prev = prev_nonnote_nondebug_insn (insn);
   if (!prev)
     return;
+
   if (any_condjump_p (insn))
     {
       unsigned int condreg1, condreg2;