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]

remove dead code in df.{h,c}


There's a lot of code code in here:

2004-11-26  Ben Elliston  <bje@au.ibm.com>

	* df.h (df_pattern_emit_before): Remove extern declaration.
	(df_jump_pattern_emit_after, df_insn_move_before): Likewise.
	(df_reg_replace, df_ref_reg_replace): Likewise.
	(df_ref_remove, df_insn_mem_replace): Likewise.
	(df_bb_def_use_swap, df_regno_bb): Likewise.
	(df_ref_lifetime, df_reg_global_p): Likewise.
	(df_insn_dominates_all_uses_p): Likewise.
	(df_insn_dominates_uses_p): Likewise.
	(df_bb_reg_live_start_p, df_bb_reg_live_end_p): Likewise.
	(df_bb_regs_lives_compare): Likewise.
	(df_bb_single_def_use_insn_find): Likewise.
	(df_bb_regno_last_use_find, df_bb_regno_last_def_find): Likewise.
	(df_insn_debug, iterative_dataflow): Likewise.
	* df.c (df_rtx_mem_replace): Remove.
	(df_rtx_reg_replace, df_refs_reg_replace): Likewise.
	(df_def_dominates_all_uses_p): Likewise.
	(df_bb_insn_regno_last_use_find): Likewise.
	(df_bb_insn_regno_first_def_find): Likewise.
	(df_ref_remove, df_insn_mem_replace): Likewise.
	(df_reg_replace, df_ref_reg_replace): Likewise.
	(df_bb_def_use_swap, df_pattern_emit_before): Likewise.
	(df_jump_pattern_emit_after): Likewise.
	(df_insn_move_before, df_insn_regno_def_p): Likewise.
	(df_def_dominates_all_uses_p): Likewise.
	(df_insn_dominates_all_uses_p): Likewise.
	(df_def_dominates_uses_p): Likewise.
	(df_insn_dominates_uses_p): Likewise.
	(df_reg_global_p, df_reg_lifetime): Likewise.
	(df_bb_reg_live_start_p, df_bb_reg_live_end_p): Likewise.
	(df_bb_regs_lives_compare, df_bb_regno_last_use_find): Likewise.
	(df_bb_regno_last_def_find): Likewise.
	(df_bb_insn_regno_last_use_find): Likewise.
	(df_bb_insn_regno_first_def_find): Likewise.
	(df_bb_single_def_use_insn_find): Likewise.
	(df_insn_debug, df_regno_bb): Make static.
	(iterative_dataflow): Likewise.

Index: df.h
===================================================================
RCS file: /home/bje/gcc-cvs/gcc/gcc/df.h,v
retrieving revision 1.29
diff -u -p -r1.29 df.h
--- df.h	17 Nov 2004 22:05:59 -0000	1.29
+++ df.h	26 Nov 2004 01:11:08 -0000
@@ -252,55 +252,14 @@ extern void df_insn_modify (struct df *,
 
 extern rtx df_insn_delete (struct df *, basic_block, rtx);
 
-extern rtx df_pattern_emit_before (struct df *, rtx, basic_block, rtx);
-
-extern rtx df_jump_pattern_emit_after (struct df *, rtx, basic_block, rtx);
-
 extern rtx df_pattern_emit_after (struct df *, rtx, basic_block, rtx);
 
-extern rtx df_insn_move_before (struct df *, basic_block, rtx, basic_block,
-				rtx);
-
-extern int df_reg_replace (struct df *, bitmap, rtx, rtx);
-
-extern int df_ref_reg_replace (struct df *, struct ref *, rtx, rtx);
-
-extern int df_ref_remove (struct df *, struct ref *);
-
-extern int df_insn_mem_replace (struct df *, basic_block, rtx, rtx, rtx);
-
-extern struct ref *df_bb_def_use_swap (struct df *, basic_block, rtx, rtx,
-				       unsigned int);
-
-
 /* Functions to query dataflow information.  */
 
-extern basic_block df_regno_bb (struct df *, unsigned int);
-
-extern int df_reg_lifetime (struct df *, rtx);
-
-extern int df_reg_global_p (struct df *, rtx);
-
 extern int df_insn_regno_def_p (struct df *, basic_block, rtx, unsigned int);
 
-extern int df_insn_dominates_all_uses_p (struct df *, basic_block, rtx);
-
-extern int df_insn_dominates_uses_p (struct df *, basic_block, rtx, bitmap);
-
-extern int df_bb_reg_live_start_p (struct df *, basic_block, rtx);
-
-extern int df_bb_reg_live_end_p (struct df *, basic_block, rtx);
-
-extern int df_bb_regs_lives_compare (struct df *, basic_block, rtx, rtx);
-
-extern rtx df_bb_single_def_use_insn_find (struct df *, basic_block, rtx,
-					   rtx);
-extern struct ref *df_bb_regno_last_use_find (struct df *, basic_block, unsigned int);
-
 extern struct ref *df_bb_regno_first_def_find (struct df *, basic_block, unsigned int);
 
-extern struct ref *df_bb_regno_last_def_find (struct df *, basic_block, unsigned int);
-
 extern struct ref *df_find_def (struct df *, rtx, rtx);
 
 extern int df_reg_used (struct df *, rtx, rtx);
@@ -321,8 +280,6 @@ extern void debug_df_ref (struct ref *);
 
 extern void debug_df_chain (struct df_link *);
 
-extern void df_insn_debug (struct df *, rtx, FILE *);
-
 extern void df_insn_debug_regno (struct df *, rtx, FILE *);
 
 
@@ -374,7 +331,6 @@ struct dataflow
 					   function.  */
 };
 
-extern void iterative_dataflow (struct dataflow *);
 extern bool read_modify_subreg_p (rtx);
 
 #endif /* GCC_DF_H */
Index: df.c
===================================================================
RCS file: /home/bje/gcc-cvs/gcc/gcc/df.c,v
retrieving revision 1.79
diff -u -p -r1.79 df.c
--- df.c	25 Nov 2004 10:27:58 -0000	1.79
+++ df.c	26 Nov 2004 01:11:12 -0000
@@ -267,16 +267,6 @@ static int df_refs_update (struct df *, 
 static void df_analyze_1 (struct df *, bitmap, int, int);
 
 static void df_insns_modify (struct df *, basic_block, rtx, rtx);
-static int df_rtx_mem_replace (rtx *, void *);
-static int df_rtx_reg_replace (rtx *, void *);
-void df_refs_reg_replace (struct df *, bitmap, struct df_link *, rtx, rtx);
-
-static int df_def_dominates_all_uses_p (struct df *, struct ref *def);
-static int df_def_dominates_uses_p (struct df *, struct ref *def, bitmap);
-static struct ref *df_bb_insn_regno_last_use_find (struct df *, basic_block,
-						   rtx, unsigned int);
-static struct ref *df_bb_insn_regno_first_def_find (struct df *, basic_block,
-						    rtx, unsigned int);
 
 static void df_chain_dump (struct df_link *, FILE *file);
 static void df_chain_dump_regno (struct df_link *, FILE *file);
@@ -290,6 +280,7 @@ static void df_lr_transfer_function (int
 				     void *, void *);
 static void hybrid_search (basic_block, struct dataflow *,
 			   sbitmap, sbitmap, sbitmap);
+static void iterative_dataflow (struct dataflow *);
 
 
 /* Local memory allocation/deallocation routines.  */
@@ -679,24 +670,6 @@ df_ref_unlink (struct df_link **phead, s
 }
 
 
-/* Unlink REF from all def-use/use-def chains, etc.  */
-int
-df_ref_remove (struct df *df, struct ref *ref)
-{
-  if (DF_REF_REG_DEF_P (ref))
-    {
-      df_def_unlink (df, ref);
-      df_ref_unlink (&df->insns[DF_REF_INSN_UID (ref)].defs, ref);
-    }
-  else
-    {
-      df_use_unlink (df, ref);
-      df_ref_unlink (&df->insns[DF_REF_INSN_UID (ref)].uses, ref);
-    }
-  return 1;
-}
-
-
 /* Unlink DEF from use-def and reg-def chains.  */
 static void
 df_def_unlink (struct df *df ATTRIBUTE_UNUSED, struct ref *def)
@@ -2683,210 +2656,6 @@ typedef struct replace_args
 } replace_args;
 
 
-/* Replace mem pointed to by PX with its associated pseudo register.
-   DATA is actually a pointer to a structure describing the
-   instruction currently being scanned and the MEM we are currently
-   replacing.  */
-static int
-df_rtx_mem_replace (rtx *px, void *data)
-{
-  replace_args *args = (replace_args *) data;
-  rtx mem = *px;
-
-  if (mem == NULL_RTX)
-    return 0;
-
-  switch (GET_CODE (mem))
-    {
-    case MEM:
-      break;
-
-    case CONST_DOUBLE:
-      /* We're not interested in the MEM associated with a
-	 CONST_DOUBLE, so there's no need to traverse into one.  */
-      return -1;
-
-    default:
-      /* This is not a MEM.  */
-      return 0;
-    }
-
-  if (!rtx_equal_p (args->match, mem))
-    /* This is not the MEM we are currently replacing.  */
-    return 0;
-
-  /* Actually replace the MEM.  */
-  validate_change (args->insn, px, args->replacement, 1);
-  args->modified++;
-
-  return 0;
-}
-
-
-int
-df_insn_mem_replace (struct df *df, basic_block bb, rtx insn, rtx mem, rtx reg)
-{
-  replace_args args;
-
-  args.insn = insn;
-  args.match = mem;
-  args.replacement = reg;
-  args.modified = 0;
-
-  /* Search and replace all matching mems within insn.  */
-  for_each_rtx (&insn, df_rtx_mem_replace, &args);
-
-  if (args.modified)
-    df_insn_modify (df, bb, insn);
-
-  /* ???? FIXME.  We may have a new def or one or more new uses of REG
-     in INSN.  REG should be a new pseudo so it won't affect the
-     dataflow information that we currently have.  We should add
-     the new uses and defs to INSN and then recreate the chains
-     when df_analyze is called.  */
-  return args.modified;
-}
-
-
-/* Replace one register with another.  Called through for_each_rtx; PX
-   points to the rtx being scanned.  DATA is actually a pointer to a
-   structure of arguments.  */
-static int
-df_rtx_reg_replace (rtx *px, void *data)
-{
-  rtx x = *px;
-  replace_args *args = (replace_args *) data;
-
-  if (x == NULL_RTX)
-    return 0;
-
-  if (x == args->match)
-    {
-      validate_change (args->insn, px, args->replacement, 1);
-      args->modified++;
-    }
-
-  return 0;
-}
-
-
-/* Replace the reg within every ref on CHAIN that is within the set
-   BLOCKS of basic blocks with NEWREG.  Also update the regs within
-   REG_NOTES.  */
-void
-df_refs_reg_replace (struct df *df, bitmap blocks, struct df_link *chain, rtx oldreg, rtx newreg)
-{
-  struct df_link *link;
-  replace_args args;
-
-  if (! blocks)
-    blocks = df->all_blocks;
-
-  args.match = oldreg;
-  args.replacement = newreg;
-  args.modified = 0;
-
-  for (link = chain; link; link = link->next)
-    {
-      struct ref *ref = link->ref;
-      rtx insn = DF_REF_INSN (ref);
-
-      if (! INSN_P (insn))
-	continue;
-
-      gcc_assert (bitmap_bit_p (blocks, DF_REF_BBNO (ref)));
-      
-      df_ref_reg_replace (df, ref, oldreg, newreg);
-
-      /* Replace occurrences of the reg within the REG_NOTES.  */
-      if ((! link->next || DF_REF_INSN (ref)
-	   != DF_REF_INSN (link->next->ref))
-	  && REG_NOTES (insn))
-	{
-	  args.insn = insn;
-	  for_each_rtx (&REG_NOTES (insn), df_rtx_reg_replace, &args);
-	}
-    }
-}
-
-
-/* Replace all occurrences of register OLDREG with register NEWREG in
-   blocks defined by bitmap BLOCKS.  This also replaces occurrences of
-   OLDREG in the REG_NOTES but only for insns containing OLDREG.  This
-   routine expects the reg-use and reg-def chains to be valid.  */
-int
-df_reg_replace (struct df *df, bitmap blocks, rtx oldreg, rtx newreg)
-{
-  unsigned int oldregno = REGNO (oldreg);
-
-  df_refs_reg_replace (df, blocks, df->regs[oldregno].defs, oldreg, newreg);
-  df_refs_reg_replace (df, blocks, df->regs[oldregno].uses, oldreg, newreg);
-  return 1;
-}
-
-
-/* Try replacing the reg within REF with NEWREG.  Do not modify
-   def-use/use-def chains.  */
-int
-df_ref_reg_replace (struct df *df, struct ref *ref, rtx oldreg, rtx newreg)
-{
-  /* Check that insn was deleted by being converted into a NOTE.  If
-   so ignore this insn.  */
-  if (! INSN_P (DF_REF_INSN (ref)))
-    return 0;
-
-  gcc_assert (!oldreg || oldreg == DF_REF_REG (ref));
-
-  if (! validate_change (DF_REF_INSN (ref), DF_REF_LOC (ref), newreg, 1))
-    return 0;
-
-  df_insn_modify (df, DF_REF_BB (ref), DF_REF_INSN (ref));
-  return 1;
-}
-
-
-struct ref*
-df_bb_def_use_swap (struct df *df, basic_block bb, rtx def_insn, rtx use_insn, unsigned int regno)
-{
-  struct ref *def;
-  struct ref *use;
-  int def_uid;
-  int use_uid;
-  struct df_link *link;
-
-  def = df_bb_insn_regno_first_def_find (df, bb, def_insn, regno);
-  if (! def)
-    return 0;
-
-  use = df_bb_insn_regno_last_use_find (df, bb, use_insn, regno);
-  if (! use)
-    return 0;
-
-  /* The USE no longer exists.  */
-  use_uid = INSN_UID (use_insn);
-  df_use_unlink (df, use);
-  df_ref_unlink (&df->insns[use_uid].uses, use);
-
-  /* The DEF requires shifting so remove it from DEF_INSN
-     and add it to USE_INSN by reusing LINK.  */
-  def_uid = INSN_UID (def_insn);
-  link = df_ref_unlink (&df->insns[def_uid].defs, def);
-  link->ref = def;
-  link->next = df->insns[use_uid].defs;
-  df->insns[use_uid].defs = link;
-
-#if 0
-  link = df_ref_unlink (&df->regs[regno].defs, def);
-  link->ref = def;
-  link->next = df->regs[regno].defs;
-  df->insns[regno].defs = link;
-#endif
-
-  DF_REF_INSN (def) = use_insn;
-  return def;
-}
-
-
 /* Record df between FIRST_INSN and LAST_INSN inclusive.  All new
    insns must be processed by this routine.  */
 static void
@@ -2917,24 +2686,6 @@ df_insns_modify (struct df *df, basic_bl
 }
 
 
-/* Emit PATTERN before INSN within BB.  */
-rtx
-df_pattern_emit_before (struct df *df, rtx pattern, basic_block bb, rtx insn)
-{
-  rtx ret_insn;
-  rtx prev_insn = PREV_INSN (insn);
-
-  /* We should not be inserting before the start of the block.  */
-  gcc_assert (insn != BB_HEAD (bb));
-  ret_insn = emit_insn_before (pattern, insn);
-  if (ret_insn == insn)
-    return ret_insn;
-
-  df_insns_modify (df, bb, NEXT_INSN (prev_insn), ret_insn);
-  return ret_insn;
-}
-
-
 /* Emit PATTERN after INSN within BB.  */
 rtx
 df_pattern_emit_after (struct df *df, rtx pattern, basic_block bb, rtx insn)
@@ -2949,77 +2700,10 @@ df_pattern_emit_after (struct df *df, rt
   return ret_insn;
 }
 
-
-/* Emit jump PATTERN after INSN within BB.  */
-rtx
-df_jump_pattern_emit_after (struct df *df, rtx pattern, basic_block bb, rtx insn)
-{
-  rtx ret_insn;
-
-  ret_insn = emit_jump_insn_after (pattern, insn);
-  if (ret_insn == insn)
-    return ret_insn;
-
-  df_insns_modify (df, bb, NEXT_INSN (insn), ret_insn);
-  return ret_insn;
-}
-
-
-/* Move INSN within BB before BEFORE_INSN within BEFORE_BB.
-
-   This function should only be used to move loop invariant insns
-   out of a loop where it has been proven that the def-use info
-   will still be valid.  */
-rtx
-df_insn_move_before (struct df *df, basic_block bb, rtx insn, basic_block before_bb, rtx before_insn)
-{
-  struct df_link *link;
-  unsigned int uid;
-
-  if (! bb)
-    return df_pattern_emit_before (df, insn, before_bb, before_insn);
-
-  uid = INSN_UID (insn);
-
-  /* Change bb for all df defined and used by this insn.  */
-  for (link = df->insns[uid].defs; link; link = link->next)
-    DF_REF_BB (link->ref) = before_bb;
-  for (link = df->insns[uid].uses; link; link = link->next)
-    DF_REF_BB (link->ref) = before_bb;
-
-  /* The lifetimes of the registers used in this insn will be reduced
-     while the lifetimes of the registers defined in this insn
-     are likely to be increased.  */
-
-  /* ???? Perhaps all the insns moved should be stored on a list
-     which df_analyze removes when it recalculates data flow.  */
-
-  return emit_insn_before (insn, before_insn);
-}
 
 /* Functions to query dataflow information.  */
 
 
-int
-df_insn_regno_def_p (struct df *df, basic_block bb ATTRIBUTE_UNUSED,
-		     rtx insn, unsigned int regno)
-{
-  unsigned int uid;
-  struct df_link *link;
-
-  uid = INSN_UID (insn);
-
-  for (link = df->insns[uid].defs; link; link = link->next)
-    {
-      struct ref *def = link->ref;
-
-      if (DF_REF_REGNO (def) == regno)
-	return 1;
-    }
-
-  return 0;
-}
-
 /* Finds the reference corresponding to the definition of REG in INSN.
    DF is the dataflow object.  */
 
@@ -3049,103 +2733,9 @@ df_reg_used (struct df *df, rtx insn, rt
   return 0;
 }
 
-static int
-df_def_dominates_all_uses_p (struct df *df ATTRIBUTE_UNUSED, struct ref *def)
-{
-  struct df_link *du_link;
-
-  /* Follow def-use chain to find all the uses of this def.  */
-  for (du_link = DF_REF_CHAIN (def); du_link; du_link = du_link->next)
-    {
-      struct ref *use = du_link->ref;
-      struct df_link *ud_link;
-
-      /* Follow use-def chain to check all the defs for this use.  */
-      for (ud_link = DF_REF_CHAIN (use); ud_link; ud_link = ud_link->next)
-	if (ud_link->ref != def)
-	  return 0;
-    }
-  return 1;
-}
-
-
-int
-df_insn_dominates_all_uses_p (struct df *df, basic_block bb ATTRIBUTE_UNUSED,
-			      rtx insn)
-{
-  unsigned int uid;
-  struct df_link *link;
-
-  uid = INSN_UID (insn);
-
-  for (link = df->insns[uid].defs; link; link = link->next)
-    {
-      struct ref *def = link->ref;
-
-      if (! df_def_dominates_all_uses_p (df, def))
-	return 0;
-    }
-
-  return 1;
-}
-
-
-/* Return nonzero if all DF dominates all the uses within the bitmap
-   BLOCKS.  */
-static int
-df_def_dominates_uses_p (struct df *df ATTRIBUTE_UNUSED, struct ref *def,
-			 bitmap blocks)
-{
-  struct df_link *du_link;
-
-  /* Follow def-use chain to find all the uses of this def.  */
-  for (du_link = DF_REF_CHAIN (def); du_link; du_link = du_link->next)
-    {
-      struct ref *use = du_link->ref;
-      struct df_link *ud_link;
-
-      /* Only worry about the uses within BLOCKS.  For example,
-      consider a register defined within a loop that is live at the
-      loop exits.  */
-      if (bitmap_bit_p (blocks, DF_REF_BBNO (use)))
-	{
-	  /* Follow use-def chain to check all the defs for this use.  */
-	  for (ud_link = DF_REF_CHAIN (use); ud_link; ud_link = ud_link->next)
-	    if (ud_link->ref != def)
-	      return 0;
-	}
-    }
-  return 1;
-}
-
-
-/* Return nonzero if all the defs of INSN within BB dominates
-   all the corresponding uses.  */
-int
-df_insn_dominates_uses_p (struct df *df, basic_block bb ATTRIBUTE_UNUSED,
-			  rtx insn, bitmap blocks)
-{
-  unsigned int uid;
-  struct df_link *link;
-
-  uid = INSN_UID (insn);
-
-  for (link = df->insns[uid].defs; link; link = link->next)
-    {
-      struct ref *def = link->ref;
-
-      /* Only consider the defs within BLOCKS.  */
-      if (bitmap_bit_p (blocks, DF_REF_BBNO (def))
-	  && ! df_def_dominates_uses_p (df, def, blocks))
-	return 0;
-    }
-  return 1;
-}
-
-
 /* Return the basic block that REG referenced in or NULL if referenced
    in multiple basic blocks.  */
-basic_block
+static basic_block
 df_regno_bb (struct df *df, unsigned int regno)
 {
   struct df_link *defs = df->regs[regno].defs;
@@ -3161,102 +2751,6 @@ df_regno_bb (struct df *df, unsigned int
 }
 
 
-/* Return nonzero if REG used in multiple basic blocks.  */
-int
-df_reg_global_p (struct df *df, rtx reg)
-{
-  return df_regno_bb (df, REGNO (reg)) != 0;
-}
-
-
-/* Return total lifetime (in insns) of REG.  */
-int
-df_reg_lifetime (struct df *df, rtx reg)
-{
-  return df->regs[REGNO (reg)].lifetime;
-}
-
-
-/* Return nonzero if REG live at start of BB.  */
-int
-df_bb_reg_live_start_p (struct df *df, basic_block bb, rtx reg)
-{
-  struct bb_info *bb_info = DF_BB_INFO (df, bb);
-
-  gcc_assert (bb_info->lr_in);
-
-  return bitmap_bit_p (bb_info->lr_in, REGNO (reg));
-}
-
-
-/* Return nonzero if REG live at end of BB.  */
-int
-df_bb_reg_live_end_p (struct df *df, basic_block bb, rtx reg)
-{
-  struct bb_info *bb_info = DF_BB_INFO (df, bb);
-
-  gcc_assert (bb_info->lr_in);
-
-  return bitmap_bit_p (bb_info->lr_out, REGNO (reg));
-}
-
-
-/* Return -1 if life of REG1 before life of REG2, 1 if life of REG1
-   after life of REG2, or 0, if the lives overlap.  */
-int
-df_bb_regs_lives_compare (struct df *df, basic_block bb, rtx reg1, rtx reg2)
-{
-  unsigned int regno1 = REGNO (reg1);
-  unsigned int regno2 = REGNO (reg2);
-  struct ref *def1;
-  struct ref *use1;
-  struct ref *def2;
-  struct ref *use2;
-
-
-  /* The regs must be local to BB.  */
-  gcc_assert (df_regno_bb (df, regno1) == bb
-	      && df_regno_bb (df, regno2) == bb);
-
-  def2 = df_bb_regno_first_def_find (df, bb, regno2);
-  use1 = df_bb_regno_last_use_find (df, bb, regno1);
-
-  if (DF_INSN_LUID (df, DF_REF_INSN (def2))
-      > DF_INSN_LUID (df, DF_REF_INSN (use1)))
-    return -1;
-
-  def1 = df_bb_regno_first_def_find (df, bb, regno1);
-  use2 = df_bb_regno_last_use_find (df, bb, regno2);
-
-  if (DF_INSN_LUID (df, DF_REF_INSN (def1))
-      > DF_INSN_LUID (df, DF_REF_INSN (use2)))
-    return 1;
-
-  return 0;
-}
-
-
-/* Return last use of REGNO within BB.  */
-struct ref *
-df_bb_regno_last_use_find (struct df *df, basic_block bb, unsigned int regno)
-{
-  struct df_link *link;
-
-  /* This assumes that the reg-use list is ordered such that for any
-     BB, the last use is found first.  However, since the BBs are not
-     ordered, the first use in the chain is not necessarily the last
-     use in the function.  */
-  for (link = df->regs[regno].uses; link; link = link->next)
-    {
-      struct ref *use = link->ref;
-
-      if (DF_REF_BB (use) == bb)
-	return use;
-    }
-  return 0;
-}
-
-
 /* Return first def of REGNO within BB.  */
 struct ref *
 df_bb_regno_first_def_find (struct df *df, basic_block bb, unsigned int regno)
@@ -3277,108 +2771,6 @@ df_bb_regno_first_def_find (struct df *d
   return 0;
 }
 
-/* Return last def of REGNO within BB.  */
-struct ref *
-df_bb_regno_last_def_find (struct df *df, basic_block bb, unsigned int regno)
-{
-  struct df_link *link;
-  struct ref *last_def = NULL;
-  int in_bb = 0;
-
-  /* This assumes that the reg-def list is ordered such that for any
-     BB, the first def is found first.  However, since the BBs are not
-     ordered, the first def in the chain is not necessarily the first
-     def in the function.  */
-  for (link = df->regs[regno].defs; link; link = link->next)
-    {
-      struct ref *def = link->ref;
-      /* The first time in the desired block.  */ 
-      if (DF_REF_BB (def) == bb)
-	  in_bb = 1;
-      /* The last def in the desired block.  */
-      else if (in_bb)
-        return last_def;
-      last_def = def;
-    }
-  return last_def;
-}
-
-/* Return first use of REGNO inside INSN within BB.  */
-static struct ref *
-df_bb_insn_regno_last_use_find (struct df *df,
-				basic_block bb ATTRIBUTE_UNUSED, rtx insn,
-				unsigned int regno)
-{
-  unsigned int uid;
-  struct df_link *link;
-
-  uid = INSN_UID (insn);
-
-  for (link = df->insns[uid].uses; link; link = link->next)
-    {
-      struct ref *use = link->ref;
-
-      if (DF_REF_REGNO (use) == regno)
-	return use;
-    }
-
-  return 0;
-}
-
-
-/* Return first def of REGNO inside INSN within BB.  */
-static struct ref *
-df_bb_insn_regno_first_def_find (struct df *df,
-				 basic_block bb ATTRIBUTE_UNUSED, rtx insn,
-				 unsigned int regno)
-{
-  unsigned int uid;
-  struct df_link *link;
-
-  uid = INSN_UID (insn);
-
-  for (link = df->insns[uid].defs; link; link = link->next)
-    {
-      struct ref *def = link->ref;
-
-      if (DF_REF_REGNO (def) == regno)
-	return def;
-    }
-
-  return 0;
-}
-
-
-/* Return insn using REG if the BB contains only a single
-   use and def of REG.  */
-rtx
-df_bb_single_def_use_insn_find (struct df *df, basic_block bb, rtx insn, rtx reg)
-{
-  struct ref *def;
-  struct ref *use;
-  struct df_link *du_link;
-
-  def = df_bb_insn_regno_first_def_find (df, bb, insn, REGNO (reg));
-
-  gcc_assert (def);
-
-  du_link = DF_REF_CHAIN (def);
-
-  if (! du_link)
-    return NULL_RTX;
-
-  use = du_link->ref;
-
-  /* Check if def is dead.  */
-  if (! use)
-    return NULL_RTX;
-
-  /* Check for multiple uses.  */
-  if (du_link->next)
-    return NULL_RTX;
-
-  return DF_REF_INSN (use);
-}
 
 /* Functions for debugging/dumping dataflow information.  */
 
@@ -3586,7 +2978,7 @@ df_dump (struct df *df, int flags, FILE 
 }
 
 
-void
+static void
 df_insn_debug (struct df *df, rtx insn, FILE *file)
 {
   unsigned int uid;
@@ -3867,7 +3259,7 @@ hybrid_search (basic_block bb, struct da
    For forward problems, you probably want to pass in a mapping of
    block number to rc_order (like df->inverse_rc_map).  */
 
-void
+static void
 iterative_dataflow (struct dataflow *dataflow)
 {
   unsigned i, idx;


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