]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/hw-doloop.c
Update copyright years.
[thirdparty/gcc.git] / gcc / hw-doloop.c
index 131e71d04fc6592782df53d032363cf3653196ed..fe031257179a90eb6ce832d425ad3e705aa9a654 100644 (file)
@@ -1,6 +1,6 @@
 /* Code to analyze doloop loops in order for targets to perform late
    optimizations converting doloops to other forms of hardware loops.
-   Copyright (C) 2011-2014 Free Software Foundation, Inc.
+   Copyright (C) 2011-2022 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -21,23 +21,18 @@ along with GCC; see the file COPYING3.  If not see
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
-#include "tm.h"
+#include "backend.h"
 #include "rtl.h"
-#include "flags.h"
-#include "expr.h"
-#include "hard-reg-set.h"
-#include "regs.h"
-#include "basic-block.h"
-#include "tm_p.h"
 #include "df.h"
-#include "cfgloop.h"
+#include "insn-config.h"
+#include "regs.h"
+#include "memmodel.h"
+#include "emit-rtl.h"
 #include "recog.h"
-#include "target.h"
+#include "cfgrtl.h"
 #include "hw-doloop.h"
 #include "dumpfile.h"
 
-#ifdef HAVE_doloop_end
-
 /* Dump information collected in LOOPS.  */
 static void
 dump_hwloops (hwloop_info loops)
@@ -146,7 +141,7 @@ scan_loop (hwloop_info loop)
            CLEAR_HARD_REG_BIT (set_this_insn, REGNO (loop->iter_reg));
          else if (reg_mentioned_p (loop->iter_reg, PATTERN (insn)))
            loop->iter_reg_used = true;
-         IOR_HARD_REG_SET (loop->regs_set_in_loop, set_this_insn);
+         loop->regs_set_in_loop |= set_this_insn;
        }
     }
 }
@@ -242,7 +237,7 @@ discover_loop (hwloop_info loop, basic_block tail_bb, rtx_insn *tail_insn, rtx r
   loop->loop_end = tail_insn;
   loop->iter_reg = reg;
   vec_alloc (loop->incoming, 2);
-  loop->start_label = JUMP_LABEL (tail_insn);
+  loop->start_label = as_a <rtx_insn *> (JUMP_LABEL (tail_insn));
 
   if (EDGE_COUNT (tail_bb->succs) != 2)
     {
@@ -360,7 +355,8 @@ discover_loops (bitmap_obstack *loop_stack, struct hw_doloop_hooks *hooks)
   FOR_EACH_BB_FN (bb, cfun)
     {
       rtx_insn *tail = BB_END (bb);
-      rtx insn, reg;
+      rtx_insn *insn;
+      rtx reg;
 
       while (tail && NOTE_P (tail) && tail != BB_HEAD (bb))
        tail = PREV_INSN (tail);
@@ -378,7 +374,7 @@ discover_loops (bitmap_obstack *loop_stack, struct hw_doloop_hooks *hooks)
 
       /* There's a degenerate case we can handle - an empty loop consisting
         of only a back branch.  Handle that by deleting the branch.  */
-      insn = JUMP_LABEL (tail);
+      insn = JUMP_LABEL_AS_INSN (tail);
       while (insn && !NONDEBUG_INSN_P (insn))
        insn = NEXT_INSN (insn);
       if (insn == tail)
@@ -585,7 +581,7 @@ optimize_loop (hwloop_info loop, struct hw_doloop_hooks *hooks)
        inner_depth = inner->depth;
       /* The set of registers may be changed while optimizing the inner
         loop.  */
-      IOR_HARD_REG_SET (loop->regs_set_in_loop, inner->regs_set_in_loop);
+      loop->regs_set_in_loop |= inner->regs_set_in_loop;
     }
 
   loop->depth = inner_depth + 1;
@@ -638,7 +634,7 @@ reorg_loops (bool do_reorder, struct hw_doloop_hooks *hooks)
 
   /* We can't enter cfglayout mode anymore if basic block partitioning
      already happened.  */
-  if (do_reorder && !flag_reorder_blocks_and_partition)
+  if (do_reorder && !crtl->has_bb_partition)
     {
       reorder_loops (loops);
       free_loops (loops);
@@ -668,4 +664,3 @@ reorg_loops (bool do_reorder, struct hw_doloop_hooks *hooks)
   if (dump_file)
     print_rtl (dump_file, get_insns ());
 }
-#endif