alpha.h (struct machine_function): Remove.
authorDJ Delorie <dj@redhat.com>
Thu, 21 Jun 2001 20:34:39 +0000 (16:34 -0400)
committerDJ Delorie <dj@gcc.gnu.org>
Thu, 21 Jun 2001 20:34:39 +0000 (16:34 -0400)
* config/alpha/alpha.h (struct machine_function): Remove.
* config/alpha/alpha.c (integrate.h): Include.
(override_options): Don't set up machine_status hooks.
(alpha_init_machine_status): Remove.
(alpha_mark_machine_status): Remove.
(alpha_free_machine_status): Remove.
(alpha_return_addr): Use get_hard_reg_initial_val.
(alpha_gp_save_rtx): Likewise.
(alpha_ra_ever_killed): Use has_hard_reg_initial_val.

From-SVN: r43491

gcc/ChangeLog
gcc/config/alpha/alpha.c
gcc/config/alpha/alpha.h

index 3b33ab651adc6eba8733040455ae87bc7a354c16..006f16d034ba56ca2cc2e06928443d023ebb9df6 100644 (file)
@@ -1,3 +1,15 @@
+2001-06-21  DJ Delorie  <dj@redhat.com>
+
+       * config/alpha/alpha.h (struct machine_function): Remove.
+       * config/alpha/alpha.c (integrate.h): Include.
+       (override_options): Don't set up machine_status hooks.
+       (alpha_init_machine_status): Remove.
+       (alpha_mark_machine_status): Remove.
+       (alpha_free_machine_status): Remove.
+       (alpha_return_addr): Use get_hard_reg_initial_val.
+       (alpha_gp_save_rtx): Likewise.
+       (alpha_ra_ever_killed): Use has_hard_reg_initial_val.
+
 2001-06-20  Aldy Hernandez  <aldyh@redhat.com>
 
        * config/sh/sh.md (interrupt_function): Use
index 3e3de7017bbb1477806a81b4627154636194d993..79700d45f302d7958a300d5693e2b1e922c91df4 100644 (file)
@@ -42,6 +42,7 @@ Boston, MA 02111-1307, USA.  */
 #include "toplev.h"
 #include "ggc.h"
 #include "tm_p.h"
+#include "integrate.h"
 
 /* External data.  */
 extern int rtx_equal_function_value_matters;
@@ -357,11 +358,6 @@ override_options ()
 
   /* Acquire a unique set number for our register saves and restores.  */
   alpha_sr_alias_set = new_alias_set ();
-
-  /* Set up function hooks.  */
-  init_machine_status = alpha_init_machine_status;
-  mark_machine_status = alpha_mark_machine_status;
-  free_machine_status = alpha_free_machine_status;
 }
 \f
 /* Returns 1 if VALUE is a mask that contains full bytes of zero or ones.  */
@@ -3661,35 +3657,6 @@ alpha_adjust_cost (insn, link, dep_insn, cost)
 \f
 /* Functions to save and restore alpha_return_addr_rtx.  */
 
-static void
-alpha_init_machine_status (p)
-     struct function *p;
-{
-  p->machine =
-    (struct machine_function *) xcalloc (1, sizeof (struct machine_function));
-}
-
-static void
-alpha_mark_machine_status (p)
-     struct function *p;
-{
-  struct machine_function *machine = p->machine;
-
-  if (machine)
-    {
-      ggc_mark_rtx (machine->ra_rtx);
-      ggc_mark_rtx (machine->gp_save_rtx);
-    }
-}
-
-static void
-alpha_free_machine_status (p)
-     struct function *p;
-{
-  free (p->machine);
-  p->machine = NULL;
-}
-
 /* Start the ball rolling with RETURN_ADDR_RTX.  */
 
 rtx
@@ -3697,27 +3664,10 @@ alpha_return_addr (count, frame)
      int count;
      rtx frame ATTRIBUTE_UNUSED;
 {
-  rtx init, reg;
-
   if (count != 0)
     return const0_rtx;
 
-  reg = cfun->machine->ra_rtx;
-  if (reg == NULL)
-    {
-      /* No rtx yet.  Invent one, and initialize it from $26 in
-        the prologue.  */
-      reg = gen_reg_rtx (Pmode);
-      cfun->machine->ra_rtx = reg;
-      init = gen_rtx_SET (VOIDmode, reg, gen_rtx_REG (Pmode, REG_RA));
-
-      /* Emit the insn to the prologue with the other argument copies.  */
-      push_topmost_sequence ();
-      emit_insn_after (init, get_insns ());
-      pop_topmost_sequence ();
-    }
-
-  return reg;
+  return get_hard_reg_initial_val (Pmode, REG_RA);
 }
 
 /* Return or create a pseudo containing the gp value for the current
@@ -3726,21 +3676,7 @@ alpha_return_addr (count, frame)
 rtx
 alpha_gp_save_rtx ()
 {
-  rtx init, reg;
-
-  reg = cfun->machine->gp_save_rtx;
-  if (reg == NULL)
-    {
-      reg = gen_reg_rtx (DImode);
-      cfun->machine->gp_save_rtx = reg;
-      init = gen_rtx_SET (VOIDmode, reg, gen_rtx_REG (DImode, 29));
-
-      push_topmost_sequence ();
-      emit_insn_after (init, get_insns ());
-      pop_topmost_sequence ();
-    }
-
-  return reg;
+  return get_hard_reg_initial_val (DImode, 29);
 }
 
 static int
@@ -3752,7 +3688,7 @@ alpha_ra_ever_killed ()
   if (current_function_is_thunk)
     return 0;
 #endif
-  if (!cfun->machine->ra_rtx)
+  if (!has_hard_reg_initial_val (Pmode, REG_RA))
     return regs_ever_live[REG_RA];
 
   push_topmost_sequence ();
index 739a177cb0b697f01b342bbdcda36b7ee3222f07..20278da517a37808143a447b3f61827840cf0bc7 100644 (file)
@@ -1185,17 +1185,6 @@ struct alpha_compare
 
 extern struct alpha_compare alpha_compare;
 
-/* Machine specific function data.  */
-
-struct machine_function
-{
-  /* If non-null, this rtx holds the return address for the function.  */
-  struct rtx_def *ra_rtx;
-
-  /* If non-null, this rtx holds a saved copy of the GP for the function.  */
-  struct rtx_def *gp_save_rtx;
-};
-
 /* Make (or fake) .linkage entry for function call.
    IS_LOCAL is 0 if name is used in call, 1 if name is used in definition.  */