]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
recog.c (split_all_insns_noflow): New.
authorJan Hubicka <jh@suse.cz>
Tue, 24 Jul 2001 18:34:07 +0000 (20:34 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 24 Jul 2001 18:34:07 +0000 (18:34 +0000)
* recog.c (split_all_insns_noflow): New.
* rtl.h (split_all_insns_noflow): Declare.
* ia64.c (ia64_reorg): Use split_all_insns_noflow.
* m68hc11.c (m68hc11_reorg): Likewise.
* sh.c (machine_dependent_reorg): Likewise.
* toplev.c (rest_of_compilation): Likewise for last split_all_insns
call.

From-SVN: r44312

gcc/ChangeLog
gcc/config/ia64/ia64.c
gcc/config/m68hc11/m68hc11.c
gcc/config/sh/sh.c
gcc/recog.c
gcc/rtl.h
gcc/toplev.c

index 8fb3efe1151812953a9124fcb32e2f1f81476b46..1926e4de1774bf96090ddf37fca71a84cc1b7684 100644 (file)
@@ -1,3 +1,13 @@
+Tue Jul 24 20:32:44 CEST 2001  Jan Hubicka  <jh@suse.cz>
+
+       * recog.c (split_all_insns_noflow): New.
+       * rtl.h (split_all_insns_noflow): Declare.
+       * ia64.c (ia64_reorg): Use split_all_insns_noflow.
+       * m68hc11.c (m68hc11_reorg): Likewise.
+       * sh.c (machine_dependent_reorg): Likewise.
+       * toplev.c (rest_of_compilation): Likewise for last split_all_insns
+       call.
+
 2001-07-18  Andrew Haley  <aph@cambridge.redhat.com>
 
         * config/sh/sh.md (ashlsi3_std splitter): Split only after reload.
index 63181c755f4c1d96d1e0f16c0f1d1621428d916d..be2c04dfae3dda54d6ce623e25ca2c5bdeca0de1 100644 (file)
@@ -6457,7 +6457,7 @@ ia64_reorg (insns)
 {
   /* If optimizing, we'll have split before scheduling.  */
   if (optimize == 0)
-    split_all_insns (0);
+    split_all_insns_noflow ();
 
   /* Make sure the CFG and global_live_at_start are correct
      for emit_predicate_relation_info.  */
index da7f490a587e27b7c80bdc53bb3b0e7798f3b018..119d8ee5e51a4bcca01fbd9b0c1d17b562d555e8 100644 (file)
@@ -4803,7 +4803,7 @@ m68hc11_reorg (first)
 
   /* Force a split of all splitable insn.  This is necessary for the
      Z register replacement mechanism because we end up with basic insns.  */
-  split_all_insns (0);
+  split_all_insns_noflow ();
   split_done = 1;
 
   z_replacement_completed = 1;
@@ -4850,7 +4850,7 @@ m68hc11_reorg (first)
      split after Z register replacement.  This gives more opportunities
      for peephole (in particular for consecutives xgdx/xgdy).  */
   if (optimize > 0)
-    split_all_insns (0);
+    split_all_insns_noflow ();
 
   /* Once insns are split after the z_replacement_completed == 2,
      we must not re-run the life_analysis.  The xgdx/xgdy patterns
index a9813697501d78e8827c135429e97ec1f624f247..87b5be9ee9e89a045ab1960eb3d1d283ecc395a0 100644 (file)
@@ -3027,7 +3027,7 @@ machine_dependent_reorg (first)
      optimizing, they'll have already been split.  Otherwise, make
      sure we don't split them too late.  */
   if (! optimize)
-    split_all_insns (0);
+    split_all_insns_noflow ();
 
   /* If relaxing, generate pseudo-ops to associate function calls with
      the symbols they call.  It does no harm to not generate these
index b4b9b9d5bc2d827b8dab5498260bf0d413c7f983..c77bc4263bd41b1e1690a00ed229467ff1a44663 100644 (file)
@@ -2777,6 +2777,22 @@ split_all_insns (upd_life)
 
   sbitmap_free (blocks);
 }
+
+/* Same as split_all_insns, but do not expect CFG to be available. 
+   Used by machine depedent reorg passes.  */
+
+void
+split_all_insns_noflow ()
+{
+  rtx next, insn;
+
+  for (insn = get_insns (); insn; insn = next)
+    {
+      next = NEXT_INSN (insn);
+      split_insn (insn);
+    }
+  return;
+}
 \f
 #ifdef HAVE_peephole2
 struct peep2_insn_data
index 278e9d0697665fa0e0c2045dabcd94de7f5ae262..1fbc9da59a3c10f4fa250787029aec6a68e53650 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1462,6 +1462,7 @@ extern enum reg_class reg_alternate_class PARAMS ((int));
 extern rtx get_first_nonparm_insn      PARAMS ((void));
 
 extern void split_all_insns            PARAMS ((int));
+extern void split_all_insns_noflow     PARAMS ((void));
 
 #define MAX_SAVED_CONST_INT 64
 extern rtx const_int_rtx[MAX_SAVED_CONST_INT * 2 + 1];
index 613ef0da17a0fb0c4a26cdd3bb31062cf329bf93..a7bd5e36daf33fe0eea8a04a90f4535264461a50 100644 (file)
@@ -3459,7 +3459,9 @@ rest_of_compilation (decl)
   timevar_push (TV_FLOW2);
   open_dump_file (DFI_flow2, decl);
 
-  find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+#ifdef ENABLE_CHECKING
+  verify_flow_info ();
+#endif
 
   /* If optimizing, then go ahead and split insns now.  */
   if (optimize > 0)
@@ -3473,6 +3475,8 @@ rest_of_compilation (decl)
      scheduling to operate in the epilogue.  */
   thread_prologue_and_epilogue_insns (insns);
 
+  compute_bb_for_insn (get_max_uid ());
+
   if (optimize)
     {
       cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_CROSSJUMP);
@@ -3624,7 +3628,7 @@ rest_of_compilation (decl)
 
 #if defined (HAVE_ATTR_length) && !defined (STACK_REGS)
   timevar_push (TV_SHORTEN_BRANCH);
-  split_all_insns (0);
+  split_all_insns_noflow ();
   timevar_pop (TV_SHORTEN_BRANCH);
 #endif