* function.h (struct function): Remove x_function_call_count.
(function_call_count): Remove.
* calls.c (expand_call): Don't set it.
* integrate.c (copy_rtx_and_substitute): Likewise.
* function.h (struct function): Remove x_cleanup_label.
(cleanup_label): Remove.
* stmt.c (expand_value_return): Don't use it.
* function.c (free_after_compilation): Don't set it.
(expand_function_start): Likewise. Remove parms_have_cleanups arg.
* cfgexpand.c (tree_expand_cfg): Update call.
* tree.h (expand_function_start): Update decl.
From-SVN: r83966
+2004-07-01 Richard Henderson <rth@redhat.com>
+
+ * function.h (struct function): Remove x_function_call_count.
+ (function_call_count): Remove.
+ * calls.c (expand_call): Don't set it.
+ * integrate.c (copy_rtx_and_substitute): Likewise.
+
+ * function.h (struct function): Remove x_cleanup_label.
+ (cleanup_label): Remove.
+ * stmt.c (expand_value_return): Don't use it.
+ * function.c (free_after_compilation): Don't set it.
+ (expand_function_start): Likewise. Remove parms_have_cleanups arg.
+ * cfgexpand.c (tree_expand_cfg): Update call.
+ * tree.h (expand_function_start): Update decl.
+
2004-07-01 Joseph S. Myers <jsm@polyomino.org.uk>
PR c/1027
preferred_unit_stack_boundary = preferred_stack_boundary / BITS_PER_UNIT;
- function_call_count++;
-
/* We want to make two insn chains; one for a sibling call, the other
for a normal call. We will select one of the two chains after
initial RTL generation is complete. */
expand_used_vars ();
/* Set up parameters and prepare for return, for the function. */
- expand_function_start (current_function_decl, 0);
+ expand_function_start (current_function_decl);
/* If this function is `main', emit a call to `__main'
to run global initializers, etc. */
f->return_rtx = NULL;
f->internal_arg_pointer = NULL;
f->x_nonlocal_goto_handler_labels = NULL;
- f->x_cleanup_label = NULL;
f->x_return_label = NULL;
f->x_naked_return_label = NULL;
f->x_save_expr_regs = NULL;
the function's parameters, which must be run at any return statement. */
void
-expand_function_start (tree subr, int parms_have_cleanups)
+expand_function_start (tree subr)
{
/* Make sure volatile mem refs aren't considered
valid operands of arithmetic insns. */
current_function_limit_stack
= (stack_limit_rtx != NULL_RTX && ! DECL_NO_LIMIT_STACK (subr));
- /* If the parameters of this function need cleaning up, get a label
- for the beginning of the code which executes those cleanups. This must
- be done before doing anything with return_label. */
- if (parms_have_cleanups)
- cleanup_label = gen_label_rtx ();
- else
- cleanup_label = 0;
-
/* Make the label for return statements to jump to. Do not special
case machines with special return instructions -- they will be
handled later during jump, ifcvt, or epilogue creation. */
has_hard_reg_initial_val (see integrate.[hc]). */
struct initial_value_struct *hard_reg_initial_vals;
- /* Number of function calls seen so far in current function. */
- int x_function_call_count;
-
/* List (chain of EXPR_LIST) of labels heading the current handlers for
nonlocal gotos. */
rtx x_nonlocal_goto_handler_labels;
- /* Label that will go on parm cleanup code, if any.
- Jumping to this label runs cleanup code for parameters, if
- such code must be run. Following this code is the logical return
- label. */
- rtx x_cleanup_label;
-
/* Label that will go on function epilogue.
Jumping to this label serves as a "return" instruction
on machines which require execution of the epilogue on all returns. */
#define max_parm_reg (cfun->x_max_parm_reg)
#define parm_reg_stack_loc (cfun->x_parm_reg_stack_loc)
-#define cleanup_label (cfun->x_cleanup_label)
#define return_label (cfun->x_return_label)
#define naked_return_label (cfun->x_naked_return_label)
#define save_expr_regs (cfun->x_save_expr_regs)
#define tail_recursion_reentry (cfun->x_tail_recursion_reentry)
#define arg_pointer_save_area (cfun->x_arg_pointer_save_area)
#define rtl_expr_chain (cfun->x_rtl_expr_chain)
-#define function_call_count (cfun->x_function_call_count)
#define used_temp_slots (cfun->x_used_temp_slots)
#define avail_temp_slots (cfun->x_avail_temp_slots)
#define temp_slot_level (cfun->x_temp_slot_level)
&& ! (CODE_LABEL_NUMBER (XEXP (copy, 0)) >= get_first_label_num ()
&& CODE_LABEL_NUMBER (XEXP (copy, 0)) < max_label_num ()));
- /* If we have made a nonlocal label local, it means that this
- inlined call will be referring to our nonlocal goto handler.
- So make sure we create one for this block; we normally would
- not since this is not otherwise considered a "call". */
- if (LABEL_REF_NONLOCAL_P (orig) && ! LABEL_REF_NONLOCAL_P (copy))
- function_call_count++;
-
return copy;
case PC:
static void
expand_null_return_1 (rtx last_insn)
{
- rtx end_label = cleanup_label ? cleanup_label : return_label;
+ rtx end_label = return_label;
clear_pending_stack_adjust ();
do_pending_stack_adjust ();
extern int simple_cst_list_equal (tree, tree);
extern void dump_tree_statistics (void);
extern void expand_function_end (void);
-extern void expand_function_start (tree, int);
+extern void expand_function_start (tree);
extern void expand_pending_sizes (tree);
extern void recompute_tree_invarant_for_addr_expr (tree);
extern bool needs_to_live_in_memory (tree);