This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] cfgrtl.c: removal of additional orphaned code from rtl-profile.c


Roger Sayle wrote:
> On Sat, 22 Apr 2006, Kenneth Zadeck wrote:
>   
>> 2006-04-22  Kenneth Zadeck <zadeck@naturalbridge.com>
>>
>>     * basic-block.h (safe_insert_insn_on_edge): Removed.
>>     * cfgrtl.c (mark_killed_regs, safe_insert_insn_on_edge): Removed.
>>     
>
>
> This is OK for mainline.  Thanks.
>
> Roger
> --
>
>   
Thanks,

Committed,

Bootstrapped on 2006-04-26  i686-pc-linux-gnu.

2006-04-26  Kenneth Zadeck <zadeck@naturalbridge.com>

    * basic-block.h (safe_insert_insn_on_edge): Removed.
    * cfgrtl.c (mark_killed_regs, safe_insert_insn_on_edge): Removed.

Kenny

Index: basic-block.h
===================================================================
--- basic-block.h	(revision 113179)
+++ basic-block.h	(working copy)
@@ -486,7 +486,6 @@ extern void update_bb_for_insn (basic_bl
 extern void free_basic_block_vars (void);
 
 extern void insert_insn_on_edge (rtx, edge);
-bool safe_insert_insn_on_edge (rtx, edge);
 
 extern void commit_edge_insertions (void);
 extern void commit_edge_insertions_watch_calls (void);
Index: cfgrtl.c
===================================================================
--- cfgrtl.c	(revision 113179)
+++ cfgrtl.c	(working copy)
@@ -77,7 +77,6 @@ static edge rtl_redirect_edge_and_branch
 static basic_block rtl_split_block (basic_block, void *);
 static void rtl_dump_bb (basic_block, FILE *, int);
 static int rtl_verify_flow_info_1 (void);
-static void mark_killed_regs (rtx, rtx, void *);
 static void rtl_make_forwarder_block (edge);
 
 /* Return true if NOTE is not one of the ones that must be kept paired,
@@ -1336,108 +1335,6 @@ insert_insn_on_edge (rtx pattern, edge e
   end_sequence ();
 }
 
-/* Called from safe_insert_insn_on_edge through note_stores, marks live
-   registers that are killed by the store.  */
-static void
-mark_killed_regs (rtx reg, rtx set ATTRIBUTE_UNUSED, void *data)
-{
-  regset killed = data;
-  int regno, i;
-
-  if (GET_CODE (reg) == SUBREG)
-    reg = SUBREG_REG (reg);
-  if (!REG_P (reg))
-    return;
-  regno = REGNO (reg);
-  if (regno >= FIRST_PSEUDO_REGISTER)
-    SET_REGNO_REG_SET (killed, regno);
-  else
-    {
-      for (i = 0; i < (int) hard_regno_nregs[regno][GET_MODE (reg)]; i++)
-	SET_REGNO_REG_SET (killed, regno + i);
-    }
-}
-
-/* Similar to insert_insn_on_edge, tries to put INSN to edge E.  Additionally
-   it checks whether this will not clobber the registers that are live on the
-   edge (i.e. it requires liveness information to be up-to-date) and if there
-   are some, then it tries to save and restore them.  Returns true if
-   successful.  */
-bool
-safe_insert_insn_on_edge (rtx insn, edge e)
-{
-  rtx x;
-  regset killed;
-  rtx save_regs = NULL_RTX;
-  unsigned regno;
-  enum machine_mode mode;
-  reg_set_iterator rsi;
-
-  killed = ALLOC_REG_SET (&reg_obstack);
-
-  for (x = insn; x; x = NEXT_INSN (x))
-    if (INSN_P (x))
-      note_stores (PATTERN (x), mark_killed_regs, killed);
-
-  /* Mark all hard registers as killed.  Register allocator/reload cannot
-     cope with the situation when life range of hard register spans operation
-     for that the appropriate register is needed, i.e. it would be unsafe to
-     extend the life ranges of hard registers.  */
-  for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-    if (!fixed_regs[regno]
-	&& !REGNO_PTR_FRAME_P (regno))
-      SET_REGNO_REG_SET (killed, regno);
-
-  bitmap_and_into (killed, e->dest->il.rtl->global_live_at_start);
-
-  EXECUTE_IF_SET_IN_REG_SET (killed, 0, regno, rsi)
-    {
-      mode = regno < FIRST_PSEUDO_REGISTER
-	      ? reg_raw_mode[regno]
-	      : GET_MODE (regno_reg_rtx[regno]);
-      if (mode == VOIDmode)
-	return false;
-
-      /* Avoid copying in CCmode if we can't.  */
-      if (!can_copy_p (mode))
-	return false;
-	
-      save_regs = alloc_EXPR_LIST (0,
-				   alloc_EXPR_LIST (0,
-						    gen_reg_rtx (mode),
-						    gen_raw_REG (mode, regno)),
-				   save_regs);
-    }
-
-  if (save_regs)
-    {
-      rtx from, to;
-
-      start_sequence ();
-      for (x = save_regs; x; x = XEXP (x, 1))
-	{
-	  from = XEXP (XEXP (x, 0), 1);
-	  to = XEXP (XEXP (x, 0), 0);
-	  emit_move_insn (to, from);
-	}
-      emit_insn (insn);
-      for (x = save_regs; x; x = XEXP (x, 1))
-	{
-	  from = XEXP (XEXP (x, 0), 0);
-	  to = XEXP (XEXP (x, 0), 1);
-	  emit_move_insn (to, from);
-	}
-      insn = get_insns ();
-      end_sequence ();
-      free_EXPR_LIST_list (&save_regs);
-    }
-  insert_insn_on_edge (insn, e);
-  
-  FREE_REG_SET (killed);
-
-  return true;
-}
-
 /* Update the CFG for the instructions queued on edge E.  */
 
 static void

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]