Commit ef4375b2 by Kenneth Zadeck Committed by Kenneth Zadeck

toplev.c (no_new_pseudos): Deleted.

2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>

	* toplev.c (no_new_pseudos): Deleted.
	* rtl.h (no_new_pseudos): Deleted.
	* tree-pass.h (pass_no_new_pseudos): Deleted. 
	* passes.c (pass_no_new_pseudos): Deleted.
	* final.c (rest_of_clean_state): Removed no_new_pseudos.
	(rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
	* struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
	reload_completed.
	* cfgcleanup.c (try_crossjump_to_edge): Ditto. 
	* rtlhooks.c (gen_lowpart_general): Ditto.
	* optabs.c (prepare_operand): Ditto.
	* mode-switching.c (rest_of_handle_mode_switching): Deleted set of
	no_new_pseudos.
	* modulo-sched.c (rest_of_handle_sms): Ditto.
	* see.c (rest_of_handle_see): Ditto.
	* ifcvt.c (if_convert): Ditto.
	(gate_handle_if_after_combine): Replaced no_new_pseudos with 
	reload_completed.
	* init-regs.c (gate_initialize_regs): Deleted set of
	no_new_pseudos.
	* lower-subreg.c (decompose_multiword_subregs): Ditto. 
	* bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
	* doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.

From-SVN: r126561
parent d90dc4fc
2007-07-11 Kenneth Zadeck <zadeck@naturalbridge.com>
* toplev.c (no_new_pseudos): Deleted.
* rtl.h (no_new_pseudos): Deleted.
* tree-pass.h (pass_no_new_pseudos): Deleted.
* passes.c (pass_no_new_pseudos): Deleted.
* final.c (rest_of_clean_state): Removed no_new_pseudos.
(rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
* struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with
reload_completed.
* cfgcleanup.c (try_crossjump_to_edge): Ditto.
* rtlhooks.c (gen_lowpart_general): Ditto.
* optabs.c (prepare_operand): Ditto.
* mode-switching.c (rest_of_handle_mode_switching): Deleted set of
no_new_pseudos.
* modulo-sched.c (rest_of_handle_sms): Ditto.
* see.c (rest_of_handle_see): Ditto.
* ifcvt.c (if_convert): Ditto.
(gate_handle_if_after_combine): Replaced no_new_pseudos with
reload_completed.
* init-regs.c (gate_initialize_regs): Deleted set of
no_new_pseudos.
* lower-subreg.c (decompose_multiword_subregs): Ditto.
* bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
* doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
2007-07-11 Uros Bizjak <ubizjak@gmail.com> 2007-07-11 Uros Bizjak <ubizjak@gmail.com>
PR target/32661 PR target/32661
......
...@@ -2256,9 +2256,7 @@ gate_handle_partition_blocks (void) ...@@ -2256,9 +2256,7 @@ gate_handle_partition_blocks (void)
static unsigned int static unsigned int
rest_of_handle_partition_blocks (void) rest_of_handle_partition_blocks (void)
{ {
no_new_pseudos = 0;
partition_hot_cold_basic_blocks (); partition_hot_cold_basic_blocks ();
no_new_pseudos = 1;
return 0; return 0;
} }
......
...@@ -1587,7 +1587,7 @@ try_crossjump_to_edge (int mode, edge e1, edge e2) ...@@ -1587,7 +1587,7 @@ try_crossjump_to_edge (int mode, edge e1, edge e2)
partition boundaries). See the comments at the top of partition boundaries). See the comments at the top of
bb-reorder.c:partition_hot_cold_basic_blocks for complete details. */ bb-reorder.c:partition_hot_cold_basic_blocks for complete details. */
if (flag_reorder_blocks_and_partition && no_new_pseudos) if (flag_reorder_blocks_and_partition && reload_completed)
return false; return false;
/* Search backward through forwarder blocks. We don't need to worry /* Search backward through forwarder blocks. We don't need to worry
......
...@@ -3435,8 +3435,8 @@ it can be allocated using @code{gen_reg_rtx} prior to life analysis. ...@@ -3435,8 +3435,8 @@ it can be allocated using @code{gen_reg_rtx} prior to life analysis.
If there are cases which need scratch registers during or after reload, If there are cases which need scratch registers during or after reload,
you must provide an appropriate secondary_reload target hook. you must provide an appropriate secondary_reload target hook.
@findex no_new_pseudos @findex can_create_pseudo_p
The global variable @code{no_new_pseudos} can be used to determine if it The macro @code{can_create_pseudo_p} can be used to determine if it
is unsafe to create new pseudo registers. If this variable is nonzero, then is unsafe to create new pseudo registers. If this variable is nonzero, then
it is unsafe to call @code{gen_reg_rtx} to allocate a new pseudo. it is unsafe to call @code{gen_reg_rtx} to allocate a new pseudo.
......
...@@ -4091,7 +4091,6 @@ rest_of_clean_state (void) ...@@ -4091,7 +4091,6 @@ rest_of_clean_state (void)
reload_completed = 0; reload_completed = 0;
epilogue_completed = 0; epilogue_completed = 0;
no_new_pseudos = 0;
#ifdef STACK_REGS #ifdef STACK_REGS
regstack_completed = 0; regstack_completed = 0;
#endif #endif
...@@ -4147,27 +4146,3 @@ struct tree_opt_pass pass_clean_state = ...@@ -4147,27 +4146,3 @@ struct tree_opt_pass pass_clean_state =
0 /* letter */ 0 /* letter */
}; };
/* Set no_new_pseudos. */
static unsigned int
rest_of_no_new_pseudos (void)
{
no_new_pseudos = 1;
return 0;
}
struct tree_opt_pass pass_no_new_pseudos =
{
NULL, /* name */
NULL, /* gate */
rest_of_no_new_pseudos, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
0, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
0, /* todo_flags_finish */
'p' /* letter */
};
...@@ -3968,10 +3968,6 @@ if_convert (bool recompute_dominance) ...@@ -3968,10 +3968,6 @@ if_convert (bool recompute_dominance)
num_updated_if_blocks = 0; num_updated_if_blocks = 0;
num_true_changes = 0; num_true_changes = 0;
/* Some transformations in this pass can create new pseudos,
if the pass runs before reload. Make sure we can do so. */
gcc_assert (! no_new_pseudos || reload_completed);
loop_optimizer_init (AVOID_CFG_MODIFICATIONS); loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
mark_loop_exit_edges (); mark_loop_exit_edges ();
loop_optimizer_finalize (); loop_optimizer_finalize ();
...@@ -4105,9 +4101,7 @@ gate_handle_if_after_combine (void) ...@@ -4105,9 +4101,7 @@ gate_handle_if_after_combine (void)
static unsigned int static unsigned int
rest_of_handle_if_after_combine (void) rest_of_handle_if_after_combine (void)
{ {
no_new_pseudos = 0;
if_convert (true); if_convert (true);
no_new_pseudos = 1;
return 0; return 0;
} }
......
...@@ -132,9 +132,7 @@ gate_initialize_regs (void) ...@@ -132,9 +132,7 @@ gate_initialize_regs (void)
static unsigned int static unsigned int
rest_of_handle_initialize_regs (void) rest_of_handle_initialize_regs (void)
{ {
no_new_pseudos = 0;
initialize_uninitialized_regs (); initialize_uninitialized_regs ();
no_new_pseudos = 1;
return 0; return 0;
} }
......
...@@ -1070,7 +1070,6 @@ decompose_multiword_subregs (void) ...@@ -1070,7 +1070,6 @@ decompose_multiword_subregs (void)
bitmap_and_compl_into (decomposable_context, non_decomposable_context); bitmap_and_compl_into (decomposable_context, non_decomposable_context);
if (!bitmap_empty_p (decomposable_context)) if (!bitmap_empty_p (decomposable_context))
{ {
int hold_no_new_pseudos = no_new_pseudos;
sbitmap sub_blocks; sbitmap sub_blocks;
unsigned int i; unsigned int i;
sbitmap_iterator sbi; sbitmap_iterator sbi;
...@@ -1079,7 +1078,6 @@ decompose_multiword_subregs (void) ...@@ -1079,7 +1078,6 @@ decompose_multiword_subregs (void)
propagate_pseudo_copies (); propagate_pseudo_copies ();
no_new_pseudos = 0;
sub_blocks = sbitmap_alloc (last_basic_block); sub_blocks = sbitmap_alloc (last_basic_block);
sbitmap_zero (sub_blocks); sbitmap_zero (sub_blocks);
...@@ -1185,8 +1183,6 @@ decompose_multiword_subregs (void) ...@@ -1185,8 +1183,6 @@ decompose_multiword_subregs (void)
} }
} }
no_new_pseudos = hold_no_new_pseudos;
/* If we had insns to split that caused control flow insns in the middle /* If we had insns to split that caused control flow insns in the middle
of a basic block, split those blocks now. Note that we only handle of a basic block, split those blocks now. Note that we only handle
the case where splitting a load has caused multiple possibly trapping the case where splitting a load has caused multiple possibly trapping
......
...@@ -740,9 +740,7 @@ static unsigned int ...@@ -740,9 +740,7 @@ static unsigned int
rest_of_handle_mode_switching (void) rest_of_handle_mode_switching (void)
{ {
#ifdef OPTIMIZE_MODE_SWITCHING #ifdef OPTIMIZE_MODE_SWITCHING
no_new_pseudos = 0;
optimize_mode_switching (); optimize_mode_switching ();
no_new_pseudos = 1;
#endif /* OPTIMIZE_MODE_SWITCHING */ #endif /* OPTIMIZE_MODE_SWITCHING */
return 0; return 0;
} }
......
...@@ -2472,15 +2472,12 @@ rest_of_handle_sms (void) ...@@ -2472,15 +2472,12 @@ rest_of_handle_sms (void)
#ifdef INSN_SCHEDULING #ifdef INSN_SCHEDULING
basic_block bb; basic_block bb;
/* We want to be able to create new pseudos. */
no_new_pseudos = 0;
/* Collect loop information to be used in SMS. */ /* Collect loop information to be used in SMS. */
cfg_layout_initialize (0); cfg_layout_initialize (0);
sms_schedule (); sms_schedule ();
/* Update the life information, because we add pseudos. */ /* Update the life information, because we add pseudos. */
max_regno = max_reg_num (); max_regno = max_reg_num ();
no_new_pseudos = 1;
/* Finalize layout changes. */ /* Finalize layout changes. */
FOR_EACH_BB (bb) FOR_EACH_BB (bb)
......
...@@ -3953,7 +3953,7 @@ prepare_operand (int icode, rtx x, int opnum, enum machine_mode mode, ...@@ -3953,7 +3953,7 @@ prepare_operand (int icode, rtx x, int opnum, enum machine_mode mode,
if (!insn_data[icode].operand[opnum].predicate if (!insn_data[icode].operand[opnum].predicate
(x, insn_data[icode].operand[opnum].mode)) (x, insn_data[icode].operand[opnum].mode))
{ {
if (no_new_pseudos) if (reload_completed)
return NULL_RTX; return NULL_RTX;
x = copy_to_mode_reg (insn_data[icode].operand[opnum].mode, x); x = copy_to_mode_reg (insn_data[icode].operand[opnum].mode, x);
} }
......
...@@ -727,7 +727,6 @@ init_optimization_passes (void) ...@@ -727,7 +727,6 @@ init_optimization_passes (void)
NEXT_PASS (pass_regclass_init); NEXT_PASS (pass_regclass_init);
NEXT_PASS (pass_inc_dec); NEXT_PASS (pass_inc_dec);
NEXT_PASS (pass_initialize_regs); NEXT_PASS (pass_initialize_regs);
NEXT_PASS (pass_no_new_pseudos);
NEXT_PASS (pass_outof_cfg_layout_mode); NEXT_PASS (pass_outof_cfg_layout_mode);
NEXT_PASS (pass_ud_rtl_dce); NEXT_PASS (pass_ud_rtl_dce);
NEXT_PASS (pass_combine); NEXT_PASS (pass_combine);
......
...@@ -1977,10 +1977,6 @@ extern int regstack_completed; ...@@ -1977,10 +1977,6 @@ extern int regstack_completed;
the same indirect address eventually. */ the same indirect address eventually. */
extern int cse_not_expected; extern int cse_not_expected;
/* Set to nonzero before life analysis to indicate that it is unsafe to
generate any new pseudo registers. */
extern int no_new_pseudos;
/* Translates rtx code to tree code, for those codes needed by /* Translates rtx code to tree code, for those codes needed by
REAL_ARITHMETIC. The function returns an int because the caller may not REAL_ARITHMETIC. The function returns an int because the caller may not
know what `enum tree_code' means. */ know what `enum tree_code' means. */
......
...@@ -66,7 +66,7 @@ gen_lowpart_general (enum machine_mode mode, rtx x) ...@@ -66,7 +66,7 @@ gen_lowpart_general (enum machine_mode mode, rtx x)
&& SCALAR_INT_MODE_P (GET_MODE (x)) && SCALAR_INT_MODE_P (GET_MODE (x))
&& TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode), && TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode),
GET_MODE_BITSIZE (GET_MODE (x))) GET_MODE_BITSIZE (GET_MODE (x)))
&& ! no_new_pseudos) && !reload_completed)
return gen_lowpart_general (mode, force_reg (GET_MODE (x), x)); return gen_lowpart_general (mode, force_reg (GET_MODE (x), x));
if (WORDS_BIG_ENDIAN) if (WORDS_BIG_ENDIAN)
......
...@@ -3814,12 +3814,7 @@ gate_handle_see (void) ...@@ -3814,12 +3814,7 @@ gate_handle_see (void)
static unsigned int static unsigned int
rest_of_handle_see (void) rest_of_handle_see (void)
{ {
int no_new_pseudos_bcp = no_new_pseudos;
no_new_pseudos = 0;
see_main (); see_main ();
no_new_pseudos = no_new_pseudos_bcp;
run_fast_dce (); run_fast_dce ();
return 0; return 0;
} }
......
...@@ -431,7 +431,7 @@ rtx_equiv_p (rtx *xp, rtx y, int rvalue, struct equiv_info *info) ...@@ -431,7 +431,7 @@ rtx_equiv_p (rtx *xp, rtx y, int rvalue, struct equiv_info *info)
return false; return false;
else if (x_common_live) else if (x_common_live)
{ {
if (! rvalue || info->input_cost < 0 || no_new_pseudos) if (! rvalue || info->input_cost < 0 || reload_completed)
return false; return false;
/* If info->live_update is not set, we are processing notes. /* If info->live_update is not set, we are processing notes.
We then allow a match with x_input / y_input found in a We then allow a match with x_input / y_input found in a
......
...@@ -149,9 +149,6 @@ location_t input_location; ...@@ -149,9 +149,6 @@ location_t input_location;
struct line_maps line_table; struct line_maps line_table;
/* Nonzero if it is unsafe to create any new pseudo registers. */
int no_new_pseudos;
/* Stack of currently pending input files. */ /* Stack of currently pending input files. */
struct file_stack *input_file_stack; struct file_stack *input_file_stack;
......
...@@ -384,7 +384,6 @@ extern struct tree_opt_pass pass_regclass_init; ...@@ -384,7 +384,6 @@ extern struct tree_opt_pass pass_regclass_init;
extern struct tree_opt_pass pass_subregs_of_mode_init; extern struct tree_opt_pass pass_subregs_of_mode_init;
extern struct tree_opt_pass pass_subregs_of_mode_finish; extern struct tree_opt_pass pass_subregs_of_mode_finish;
extern struct tree_opt_pass pass_inc_dec; extern struct tree_opt_pass pass_inc_dec;
extern struct tree_opt_pass pass_no_new_pseudos;
extern struct tree_opt_pass pass_stack_ptr_mod; extern struct tree_opt_pass pass_stack_ptr_mod;
extern struct tree_opt_pass pass_initialize_regs; extern struct tree_opt_pass pass_initialize_regs;
extern struct tree_opt_pass pass_combine; extern struct tree_opt_pass pass_combine;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment