emit-rtl.c (unshare_all_rtl_1): New name of unshare_all_rtl.

2004-06-18  Paolo Bonzini  <bonzini@gnu.org>

	* emit-rtl.c (unshare_all_rtl_1): New name of unshare_all_rtl.
	(unshare_all_rtl_again): Call unshare_all_rtl_1.
	(unshare_all_rtl): New.
	* function.c (instantiate_virtual_regs): Remove parameters.
	* function.h (instantiate_virtual_regs): Add prototype.
	* rtl.h (unshare_all_rtl): Add prototype.
	* tree.h (instantiate_virtual_regs, unshare_all_rtl): Remove
	prototype.
	* passes.c: Remove assertions on the parameters to
	rest_of_handle_* functions.  Remove the parameters to
	the functions, replacing decl with current_function_decl
	and insns with get_insns ().

From-SVN: r83341
This commit is contained in:
Paolo Bonzini 2004-06-18 07:33:08 +00:00 committed by Paolo Bonzini
parent 24a88b0c7a
commit fd743bc109
7 changed files with 242 additions and 316 deletions

View File

@ -1,3 +1,18 @@
2004-06-18 Paolo Bonzini <bonzini@gnu.org>
* emit-rtl.c (unshare_all_rtl_1): New name of unshare_all_rtl.
(unshare_all_rtl_again): Call unshare_all_rtl_1.
(unshare_all_rtl): New.
* function.c (instantiate_virtual_regs): Remove parameters.
* function.h (instantiate_virtual_regs): Add prototype.
* rtl.h (unshare_all_rtl): Add prototype.
* tree.h (instantiate_virtual_regs, unshare_all_rtl): Remove
prototype.
* passes.c: Remove assertions on the parameters to
rest_of_handle_* functions. Remove the parameters to
the functions, replacing decl with current_function_decl
and insns with get_insns ().
2004-06-17 Roger Sayle <roger@eyesopen.com>
* fold-const.c (constant_boolean_node): Handle boolean_type_node

View File

@ -2148,8 +2148,8 @@ restore_emit_status (struct function *p ATTRIBUTE_UNUSED)
/* Go through all the RTL insn bodies and copy any invalid shared
structure. This routine should only be called once. */
void
unshare_all_rtl (tree fndecl, rtx insn)
static void
unshare_all_rtl_1 (tree fndecl, rtx insn)
{
tree decl;
@ -2200,7 +2200,13 @@ unshare_all_rtl_again (rtx insn)
reset_used_flags (stack_slot_list);
unshare_all_rtl (cfun->decl, insn);
unshare_all_rtl_1 (cfun->decl, insn);
}
void
unshare_all_rtl (void)
{
unshare_all_rtl_1 (current_function_decl, get_insns ());
}
/* Check that ORIG is not marked when it should not be and mark ORIG as in use,

View File

@ -3596,30 +3596,30 @@ purge_hard_subreg_sets (rtx insn)
references to hard register references. */
void
instantiate_virtual_regs (tree fndecl, rtx insns)
instantiate_virtual_regs (void)
{
rtx insn;
unsigned int i;
/* Compute the offsets to use for this function. */
in_arg_offset = FIRST_PARM_OFFSET (fndecl);
in_arg_offset = FIRST_PARM_OFFSET (current_function_decl);
var_offset = STARTING_FRAME_OFFSET;
dynamic_offset = STACK_DYNAMIC_OFFSET (fndecl);
dynamic_offset = STACK_DYNAMIC_OFFSET (current_function_decl);
out_arg_offset = STACK_POINTER_OFFSET;
cfa_offset = ARG_POINTER_CFA_OFFSET (fndecl);
cfa_offset = ARG_POINTER_CFA_OFFSET (current_function_decl);
/* Scan all variables and parameters of this function. For each that is
in memory, instantiate all virtual registers if the result is a valid
address. If not, we do it later. That will handle most uses of virtual
regs on many machines. */
instantiate_decls (fndecl, 1);
instantiate_decls (current_function_decl, 1);
/* Initialize recognition, indicating that volatile is OK. */
init_recog ();
/* Scan through all the insns, instantiating every virtual register still
present. */
for (insn = insns; insn; insn = NEXT_INSN (insn))
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
if (GET_CODE (insn) == INSN || GET_CODE (insn) == JUMP_INSN
|| GET_CODE (insn) == CALL_INSN)
{
@ -3647,7 +3647,7 @@ instantiate_virtual_regs (tree fndecl, rtx insns)
/* Now instantiate the remaining register equivalences for debugging info.
These will not be valid addresses. */
instantiate_decls (fndecl, 0);
instantiate_decls (current_function_decl, 0);
/* Indicate that, from now on, assign_stack_local should use
frame_pointer_rtx. */

View File

@ -613,6 +613,7 @@ extern void use_return_register (void);
extern rtx get_arg_pointer_save_area (struct function *);
extern void init_virtual_regs (struct emit_status *);
extern void instantiate_virtual_regs (void);
/* Returns the name of the current function. */
extern const char *current_function_name (void);

File diff suppressed because it is too large Load Diff

View File

@ -2177,6 +2177,7 @@ extern void pop_topmost_sequence (void);
extern void reverse_comparison (rtx);
extern void set_new_first_and_last_insn (rtx, rtx);
extern void set_new_last_label_num (int);
extern void unshare_all_rtl (void);
extern void unshare_all_rtl_again (rtx);
extern void unshare_all_rtl_in_chain (rtx);
extern void verify_rtl_sharing (void);

View File

@ -3415,8 +3415,6 @@ extern void preserve_temp_slots (rtx);
extern void preserve_rtl_expr_temps (tree);
extern int aggregate_value_p (tree, tree);
extern void free_temps_for_rtl_expr (tree);
extern void instantiate_virtual_regs (tree, rtx);
extern void unshare_all_rtl (tree, rtx);
extern void push_function_context (void);
extern void pop_function_context (void);
extern void push_function_context_to (tree);