recog.c (split_all_insns_noflow): New.

* 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
This commit is contained in:
Jan Hubicka 2001-07-24 20:34:07 +02:00 committed by Jan Hubicka
parent 615cd49b9a
commit 6f862f2fa9
7 changed files with 37 additions and 6 deletions

View 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.

View 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. */

View 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

View 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

View 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;
}
#ifdef HAVE_peephole2
struct peep2_insn_data

View File

@ -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];

View 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