summaryrefslogtreecommitdiffstats
path: root/gcc/config/d30v/d30v.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/d30v/d30v.c')
-rw-r--r--gcc/config/d30v/d30v.c50
1 files changed, 4 insertions, 46 deletions
diff --git a/gcc/config/d30v/d30v.c b/gcc/config/d30v/d30v.c
index 12ae39ad3b5..2ce3468140b 100644
--- a/gcc/config/d30v/d30v.c
+++ b/gcc/config/d30v/d30v.c
@@ -47,10 +47,7 @@
static void d30v_print_operand_memory_reference PARAMS ((FILE *, rtx));
static void d30v_build_long_insn PARAMS ((HOST_WIDE_INT, HOST_WIDE_INT,
rtx, rtx));
-static void d30v_add_gc_roots PARAMS ((void));
-static void d30v_init_machine_status PARAMS ((struct function *));
-static void d30v_mark_machine_status PARAMS ((struct function *));
-static void d30v_free_machine_status PARAMS ((struct function *));
+static struct machine_function * d30v_init_machine_status PARAMS ((void));
static void d30v_output_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
static void d30v_output_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
static int d30v_adjust_cost PARAMS ((rtx, rtx, rtx, int));
@@ -298,8 +295,6 @@ override_options ()
reg_class_from_letter['x'] = F0_REGS;
reg_class_from_letter['y'] = F1_REGS;
reg_class_from_letter['z'] = OTHER_FLAG_REGS;
-
- d30v_add_gc_roots ();
}
@@ -3482,35 +3477,10 @@ d30v_issue_rate ()
/* Routine to allocate, mark and free a per-function,
machine specific structure. */
-static void
-d30v_init_machine_status (p)
- struct function *p;
+static struct machine_function *
+d30v_init_machine_status ()
{
- p->machine =
- (machine_function *) xcalloc (1, sizeof (machine_function));
-}
-
-static void
-d30v_mark_machine_status (p)
- struct function * p;
-{
- if (p->machine == NULL)
- return;
-
- ggc_mark_rtx (p->machine->eh_epilogue_sp_ofs);
-}
-
-static void
-d30v_free_machine_status (p)
- struct function *p;
-{
- struct machine_function *machine = p->machine;
-
- if (machine == NULL)
- return;
-
- free (machine);
- p->machine = NULL;
+ return ggc_alloc_cleared (sizeof (machine_function));
}
/* Do anything needed before RTL is emitted for each function. */
@@ -3520,8 +3490,6 @@ d30v_init_expanders ()
{
/* Arrange to save and restore machine status around nested functions. */
init_machine_status = d30v_init_machine_status;
- mark_machine_status = d30v_mark_machine_status;
- free_machine_status = d30v_free_machine_status;
}
/* Find the current function's return address.
@@ -3536,13 +3504,3 @@ d30v_return_addr ()
{
return get_hard_reg_initial_val (Pmode, GPR_LINK);
}
-
-/* Called to register all of our global variables with the garbage
- collector. */
-
-static void
-d30v_add_gc_roots ()
-{
- ggc_add_rtx_root (&d30v_compare_op0, 1);
- ggc_add_rtx_root (&d30v_compare_op1, 1);
-}
OpenPOWER on IntegriCloud