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]

Performance improvements in compile speed


I did some profiling and noticed that bitmap_bit_p and init_alias_analysis were
performance spikes, so I sped them up a bit.  That ended up causing some
include file changes, which propagated, so this patch is a bit longer than
it would normally need to be.

Fri May 19 18:16:31 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cse.c (cse_basic_block): Only call find_reg_note if REG_NOTES not 0.
	* reload.c (find_equiv_reg): Likewise.
	* alias.c (init_alias_analysis): Likewise.
	Only call prologue_epilogue_contains on insns.
	* basic-block.h (REG_SET_TO_HARD_REG_SET): Call new function.
	* bb-reorder.c (hard-reg-set.h): Include earlier.
	* haifa-sched.c (hard-reg-set.h): Likewise.
	* ifcvt.c (hard-reg-set.h): Likewise.
	* local-alloc.c (hard-reg-set.h): Likewise.
	* loop.c (hard-reg-set.h): Likewise.
	* predict.c (hard-reg-set.h): Likewise.
	* regrename.c (hard-reg-set.h): Likewise.
	* flow.c (hard-reg-set.h): Likewise.
	(reg_set_to_hard_reg_set): New function.
	* bitmap.c (regs.h, basic-block.h): No longer include.
	(bitmap.h): Now include.
	* conflict.c (hard-reg-set.h): Include.
	* profile.c (hard-reg-set.h): Likewise.
	* print-rtl.c (hard-reg-set.h): Likewise.
	* sbitmap.c (hard-reg-set.h): Likewise.
	* toplev.c (hard-reg-set.h): Likewise.
	* unroll.c (hard-reg-set.h, basic-block.h): Likewise.
	* hard-reg-set.h (reg_names): Now constant.
	* regs.h (reg_names): Likewise.
	* regclass.c (reg_names): Likewise.
	* loop.h (basic-block.h): No longer include.
	(bitmap.h): Now include.
	* reload1.c (order_regs_for_reload): Avoid loop over reg sets.
	* Makefile.in (LOOP_H, sbitmap.o, profile.o): Reflect above changes.
	(toplev.o, print-rtl.o, conflict.o, unroll.o, bitmap.o): Likewise.

*** alias.c	2000/05/09 11:07:48	1.78
--- alias.c	2000/05/19 21:42:15
*************** init_alias_analysis ()
*** 1705,1715 ****
        for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
  	{
- #if defined (HAVE_prologue) || defined (HAVE_epilogue)
- 	  if (prologue_epilogue_contains (insn))
- 	    continue;
- #endif
  	  if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
  	    {
  	      rtx note, set;
  	      /* If this insn has a noalias note, process it,  Otherwise,
  	         scan for sets.  A simple set will have no side effects
--- 1705,1717 ----
        for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
  	{
  	  if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
  	    {
  	      rtx note, set;
+ 
+ #if defined (HAVE_prologue) || defined (HAVE_epilogue)
+ 	      if (prologue_epilogue_contains (insn))
+ 		continue;
+ #endif
+ 
  	      /* If this insn has a noalias note, process it,  Otherwise,
  	         scan for sets.  A simple set will have no side effects
*************** init_alias_analysis ()
*** 1717,1721 ****
  
  	      if (GET_CODE (PATTERN (insn)) == SET
! 		  && (find_reg_note (insn, REG_NOALIAS, NULL_RTX)))
  		record_set (SET_DEST (PATTERN (insn)), NULL_RTX, NULL);
  	      else
--- 1719,1724 ----
  
  	      if (GET_CODE (PATTERN (insn)) == SET
! 		  && REG_NOTES (insn) != 0
! 		  && find_reg_note (insn, REG_NOALIAS, NULL_RTX))
  		record_set (SET_DEST (PATTERN (insn)), NULL_RTX, NULL);
  	      else
*************** init_alias_analysis ()
*** 1727,1730 ****
--- 1730,1734 ----
  		  && GET_CODE (SET_DEST (set)) == REG
  		  && REGNO (SET_DEST (set)) >= FIRST_PSEUDO_REGISTER
+ 		  && REG_NOTES (insn) != 0
  		  && (((note = find_reg_note (insn, REG_EQUAL, 0)) != 0
  		       && REG_N_SETS (REGNO (SET_DEST (set))) == 1)
*** basic-block.h	2000/05/19 20:51:49	1.67
--- basic-block.h	2000/05/19 21:42:17
*************** typedef bitmap regset;
*** 71,81 ****
  
  /* Copy the hard registers in a register set to the hard register set.  */
  #define REG_SET_TO_HARD_REG_SET(TO, FROM)				\
  do {									\
-   int i_;								\
    CLEAR_HARD_REG_SET (TO);						\
!   for (i_ = 0; i_ < FIRST_PSEUDO_REGISTER; i_++)			\
!     if (REGNO_REG_SET_P (FROM, i_))					\
!       SET_HARD_REG_BIT (TO, i_);					\
  } while (0)
  
--- 71,79 ----
  
  /* Copy the hard registers in a register set to the hard register set.  */
+ extern void reg_set_to_hard_reg_set PARAMS ((HARD_REG_SET *, bitmap));
  #define REG_SET_TO_HARD_REG_SET(TO, FROM)				\
  do {									\
    CLEAR_HARD_REG_SET (TO);						\
!   reg_set_to_hard_reg_set (&TO, FROM);					\
  } while (0)
  
*** bb-reorder.c	2000/05/05 16:13:46	1.13
--- bb-reorder.c	2000/05/19 21:42:19
***************
*** 30,37 ****
  #include "rtl.h"
  #include "tm_p.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "regs.h"
- #include "hard-reg-set.h"
  #include "flags.h"
  #include "output.h"
--- 30,37 ----
  #include "rtl.h"
  #include "tm_p.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "regs.h"
  #include "flags.h"
  #include "output.h"
*** bitmap.c	2000/02/19 01:26:58	1.21
--- bitmap.c	2000/05/19 21:42:20
*************** Boston, MA 02111-1307, USA.  */
*** 24,29 ****
  #include "flags.h"
  #include "obstack.h"
! #include "regs.h"
! #include "basic-block.h"
  
  /* Obstack to allocate bitmap elements from.  */
--- 24,28 ----
  #include "flags.h"
  #include "obstack.h"
! #include "bitmap.h"
  
  /* Obstack to allocate bitmap elements from.  */
*** conflict.c	2000/04/19 16:02:53	1.4
--- conflict.c	2000/05/19 21:42:21
*************** Boston, MA 02111-1307, USA.  */
*** 31,34 ****
--- 31,35 ----
  #include "hashtab.h"
  #include "rtl.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  
*** cse.c	2000/05/04 13:49:48	1.142
--- cse.c	2000/05/19 21:42:36
*************** cse_basic_block (from, to, next_branch, 
*** 7018,7025 ****
  	     recorded.  */
  
! 	  if ((p = find_reg_note (insn, REG_LIBCALL, NULL_RTX)))
! 	    libcall_insn = XEXP (p, 0);
! 	  else if (find_reg_note (insn, REG_RETVAL, NULL_RTX))
! 	    libcall_insn = NULL_RTX;
  
  	  cse_insn (insn, libcall_insn);
--- 7018,7028 ----
  	     recorded.  */
  
! 	  if (REG_NOTES (insn) != 0)
! 	    {
! 	      if ((p = find_reg_note (insn, REG_LIBCALL, NULL_RTX)))
! 		libcall_insn = XEXP (p, 0);
! 	      else if (find_reg_note (insn, REG_RETVAL, NULL_RTX))
! 		libcall_insn = 0;
! 	    }
  
  	  cse_insn (insn, libcall_insn);
*** flow.c	2000/05/19 20:51:49	1.289
--- flow.c	2000/05/19 21:42:49
*************** Boston, MA 02111-1307, USA.  */
*** 125,132 ****
  #include "rtl.h"
  #include "tm_p.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "regs.h"
- #include "hard-reg-set.h"
  #include "flags.h"
  #include "output.h"
--- 125,132 ----
  #include "rtl.h"
  #include "tm_p.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "regs.h"
  #include "flags.h"
  #include "output.h"
*************** flow_loops_find (loops)
*** 7484,7487 ****
--- 7484,7488 ----
  
  /* Return non-zero if edge E enters header of LOOP from outside of LOOP.  */
+ 
  int
  flow_loop_outside_edge_p (loop, e)
*************** flow_loop_outside_edge_p (loop, e)
*** 7497,7500 ****
--- 7498,7502 ----
  
  /* Clear LOG_LINKS fields of insns in a chain.  */
+ 
  void
  clear_log_links (insns)
*************** clear_log_links (insns)
*** 7506,7507 ****
--- 7508,7531 ----
        LOG_LINKS (i) = 0;
  }
+ 
+ /* Given a register bitmap, turn on the bits in a HARD_REG_SET that
+    correspond to the hard registers, if any, set in that map.  This
+    could be done far more efficiently by having all sorts of special-cases
+    with moving single words, but probably isn't worth the trouble.  */
+ 
+ void
+ reg_set_to_hard_reg_set (to, from)
+      HARD_REG_SET *to;
+      bitmap from;
+ {
+   int i;
+ 
+   EXECUTE_IF_SET_IN_BITMAP
+     (from, 0, i,
+      {
+        if (i >= FIRST_PSEUDO_REGISTER)
+ 	 return;
+        SET_HARD_REG_BIT (*to, i);
+      });
+ }
+ 
*** haifa-sched.c	2000/05/04 16:04:44	1.153
--- haifa-sched.c	2000/05/19 21:43:03
*************** the Free Software Foundation, 59 Temple 
*** 162,169 ****
  #include "rtl.h"
  #include "tm_p.h"
  #include "basic-block.h"
  #include "regs.h"
  #include "function.h"
- #include "hard-reg-set.h"
  #include "flags.h"
  #include "insn-config.h"
--- 162,169 ----
  #include "rtl.h"
  #include "tm_p.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "regs.h"
  #include "function.h"
  #include "flags.h"
  #include "insn-config.h"
*** hard-reg-set.h	2000/03/25 18:34:02	1.6
--- hard-reg-set.h	2000/05/19 21:43:04
*************** extern int n_non_fixed_regs;
*** 472,474 ****
  /* Vector indexed by hardware reg giving its name.  */
  
! extern const char *reg_names[FIRST_PSEUDO_REGISTER];
--- 472,474 ----
  /* Vector indexed by hardware reg giving its name.  */
  
! extern const char * const reg_names[FIRST_PSEUDO_REGISTER];
*** ifcvt.c	2000/05/19 20:07:18	1.17
--- ifcvt.c	2000/05/19 21:43:08
***************
*** 28,35 ****
  #include "insn-config.h"
  #include "recog.h"
  #include "basic-block.h"
  #include "expr.h"
  #include "output.h"
- #include "hard-reg-set.h"
  #include "tm_p.h"
  
--- 28,35 ----
  #include "insn-config.h"
  #include "recog.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "expr.h"
  #include "output.h"
  #include "tm_p.h"
  
*** local-alloc.c	2000/03/25 18:34:03	1.62
--- local-alloc.c	2000/05/19 21:43:12
*************** Boston, MA 02111-1307, USA.  */
*** 66,73 ****
  #include "tm_p.h"
  #include "flags.h"
  #include "basic-block.h"
  #include "regs.h"
  #include "function.h"
- #include "hard-reg-set.h"
  #include "insn-config.h"
  #include "insn-attr.h"
--- 66,73 ----
  #include "tm_p.h"
  #include "flags.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "regs.h"
  #include "function.h"
  #include "insn-config.h"
  #include "insn-attr.h"
*** loop.c	2000/05/19 19:53:17	1.249
--- loop.c	2000/05/19 21:43:32
*************** Boston, MA 02111-1307, USA.  */
*** 43,51 ****
  #include "function.h"
  #include "expr.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "insn-flags.h"
  #include "regs.h"
- #include "hard-reg-set.h"
  #include "recog.h"
  #include "flags.h"
--- 43,51 ----
  #include "function.h"
  #include "expr.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "insn-flags.h"
  #include "regs.h"
  #include "recog.h"
  #include "flags.h"
*** loop.h	2000/05/15 17:07:13	1.30
--- loop.h	2000/05/19 21:43:34
*************** Boston, MA 02111-1307, USA.  */
*** 20,24 ****
  
  #include "varray.h"
! #include "basic-block.h"
  /* Flags passed to loop_optimize.  */
  #define LOOP_UNROLL 1
--- 20,25 ----
  
  #include "varray.h"
! #include "bitmap.h"
! 
  /* Flags passed to loop_optimize.  */
  #define LOOP_UNROLL 1
*** predict.c	2000/05/09 06:15:18	1.12
--- predict.c	2000/05/19 21:43:34
***************
*** 27,30 ****
--- 27,31 ----
     [3] "Corpus-based Static Branch Prediction"
         Calder, Grunwald, Lindsay, Martin, Mozer, and Zorn; PLDI '95.
+ 
  */
  
***************
*** 35,42 ****
  #include "rtl.h"
  #include "tm_p.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "regs.h"
- #include "hard-reg-set.h"
  #include "flags.h"
  #include "output.h"
--- 36,43 ----
  #include "rtl.h"
  #include "tm_p.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "regs.h"
  #include "flags.h"
  #include "output.h"
*** print-rtl.c	2000/05/18 19:26:57	1.52
--- print-rtl.c	2000/05/19 21:43:35
*************** Boston, MA 02111-1307, USA.  */
*** 26,31 ****
  #include "real.h"
  #include "flags.h"
  #include "basic-block.h"
- 
  
  /* How to print out a register name.
--- 26,31 ----
  #include "real.h"
  #include "flags.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  
  /* How to print out a register name.
*** regclass.c	2000/04/24 07:48:12	1.95
--- regclass.c	2000/05/19 21:43:40
*************** enum reg_class reg_class_superunion[N_RE
*** 163,167 ****
  /* Array containing all of the register names */
  
! const char *reg_names[] = REGISTER_NAMES;
  
  /* For each hard register, the widest mode object that it can contain.
--- 163,167 ----
  /* Array containing all of the register names */
  
! const char * const reg_names[] = REGISTER_NAMES;
  
  /* For each hard register, the widest mode object that it can contain.
*** regrename.c	2000/05/11 13:52:44	1.6
--- regrename.c	2000/05/19 21:43:43
***************
*** 23,30 ****
  #include "tree.h"
  #include "rtl.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "regs.h"
- #include "hard-reg-set.h"
  #include "flags.h"
  #include "output.h"
--- 23,30 ----
  #include "tree.h"
  #include "rtl.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "insn-config.h"
  #include "regs.h"
  #include "flags.h"
  #include "output.h"
*** regs.h	2000/04/24 07:48:12	1.16
--- regs.h	2000/05/19 21:43:43
*************** extern char regs_ever_live[FIRST_PSEUDO_
*** 138,142 ****
  /* Vector indexed by hardware reg giving its name.  */
  
! extern const char *reg_names[FIRST_PSEUDO_REGISTER];
  
  /* For each hard register, the widest mode object that it can contain.
--- 138,142 ----
  /* Vector indexed by hardware reg giving its name.  */
  
! extern const char * const reg_names[FIRST_PSEUDO_REGISTER];
  
  /* For each hard register, the widest mode object that it can contain.
*** reload.c	2000/05/09 11:07:48	1.106
--- reload.c	2000/05/19 21:44:00
*************** find_equiv_reg (goal, insn, class, other
*** 6033,6057 ****
  		     and something equivalent to that constant was copied
  		     into a reg, we can use that reg.  */
! 		  || (goal_const && (tem = find_reg_note (p, REG_EQUIV,
! 							  NULL_RTX))
! 		      && rtx_equal_p (XEXP (tem, 0), goal)
! 		      && (valueno = true_regnum (valtry = SET_DEST (pat))) >= 0)
! 		  || (goal_const && (tem = find_reg_note (p, REG_EQUIV,
! 							  NULL_RTX))
! 		      && GET_CODE (SET_DEST (pat)) == REG
! 		      && GET_CODE (XEXP (tem, 0)) == CONST_DOUBLE
! 		      && GET_MODE_CLASS (GET_MODE (XEXP (tem, 0))) == MODE_FLOAT
! 		      && GET_CODE (goal) == CONST_INT
! 		      && 0 != (goaltry = operand_subword (XEXP (tem, 0), 0, 0,
  							  VOIDmode))
! 		      && rtx_equal_p (goal, goaltry)
! 		      && (valtry = operand_subword (SET_DEST (pat), 0, 0,
! 						    VOIDmode))
! 		      && (valueno = true_regnum (valtry)) >= 0)
  		  || (goal_const && (tem = find_reg_note (p, REG_EQUIV,
  							  NULL_RTX))
  		      && GET_CODE (SET_DEST (pat)) == REG
  		      && GET_CODE (XEXP (tem, 0)) == CONST_DOUBLE
! 		      && GET_MODE_CLASS (GET_MODE (XEXP (tem, 0))) == MODE_FLOAT
  		      && GET_CODE (goal) == CONST_INT
  		      && 0 != (goaltry = operand_subword (XEXP (tem, 0), 1, 0,
--- 6033,6060 ----
  		     and something equivalent to that constant was copied
  		     into a reg, we can use that reg.  */
! 		  || (goal_const && REG_NOTES (p) != 0
! 		      && (tem = find_reg_note (p, REG_EQUIV, NULL_RTX))
! 		      && ((rtx_equal_p (XEXP (tem, 0), goal)
! 			   && (valueno
! 			       = true_regnum (valtry = SET_DEST (pat))) >= 0)
! 			  || (GET_CODE (SET_DEST (pat)) == REG
! 			      && GET_CODE (XEXP (tem, 0)) == CONST_DOUBLE
! 			      && (GET_MODE_CLASS (GET_MODE (XEXP (tem, 0)))
! 				  == MODE_FLOAT)
! 			      && GET_CODE (goal) == CONST_INT
! 			      && 0 != (goaltry
! 				       = operand_subword (XEXP (tem, 0), 0, 0,
  							  VOIDmode))
! 			      && rtx_equal_p (goal, goaltry)
! 			      && (valtry
! 				  = operand_subword (SET_DEST (pat), 0, 0,
! 						     VOIDmode))
! 			      && (valueno = true_regnum (valtry)) >= 0)))
  		  || (goal_const && (tem = find_reg_note (p, REG_EQUIV,
  							  NULL_RTX))
  		      && GET_CODE (SET_DEST (pat)) == REG
  		      && GET_CODE (XEXP (tem, 0)) == CONST_DOUBLE
! 		      && (GET_MODE_CLASS (GET_MODE (XEXP (tem, 0)))
! 			  == MODE_FLOAT)
  		      && GET_CODE (goal) == CONST_INT
  		      && 0 != (goaltry = operand_subword (XEXP (tem, 0), 1, 0,
*************** find_equiv_reg (goal, insn, class, other
*** 6082,6086 ****
    /* Don't try to re-use something that is killed in this insn.  We want
       to be able to trust REG_UNUSED notes.  */
!   if (find_reg_note (where, REG_UNUSED, value))
      return 0;
  
--- 6085,6089 ----
    /* Don't try to re-use something that is killed in this insn.  We want
       to be able to trust REG_UNUSED notes.  */
!   if (REG_NOTES (where) != 0 && find_reg_note (where, REG_UNUSED, value))
      return 0;
  
*** reload1.c	2000/05/09 22:44:28	1.211
--- reload1.c	2000/05/19 21:44:24
*************** reload (first, global, dumpfile)
*** 1211,1214 ****
--- 1211,1215 ----
     register sets to avoid this.
     The whole thing is rather sick, I'm afraid.  */
+ 
  static void
  maybe_fix_stack_asms ()
*************** count_pseudo (reg)
*** 1513,1516 ****
--- 1514,1518 ----
  /* Calculate the SPILL_COST and SPILL_ADD_COST arrays and determine the
     contents of BAD_SPILL_REGS for the insn described by CHAIN.  */
+ 
  static void
  order_regs_for_reload (chain)
*************** order_regs_for_reload (chain)
*** 1518,1523 ****
  {
    register int i, j;
  
!   COPY_HARD_REG_SET (bad_spill_regs, bad_spill_regs_global);
  
    memset (spill_cost, 0, sizeof spill_cost);
--- 1520,1527 ----
  {
    register int i, j;
+   HARD_REG_SET used_by_pseudos;
+   HARD_REG_SET used_by_pseudos2;
  
!   COPY_HARD_REG_SET (bad_spill_regs, fixed_reg_set);
  
    memset (spill_cost, 0, sizeof spill_cost);
*************** order_regs_for_reload (chain)
*** 1525,1539 ****
  
    /* Count number of uses of each hard reg by pseudo regs allocated to it
!      and then order them by decreasing use.  */
  
!   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!     {
!       /* Test the various reasons why we can't use a register for
! 	 spilling in this insn.  */
!       if (fixed_regs[i]
! 	  || REGNO_REG_SET_P (&chain->live_throughout, i)
! 	  || REGNO_REG_SET_P (&chain->dead_or_set, i))
! 	SET_HARD_REG_BIT (bad_spill_regs, i);
!     }
    /* Now find out which pseudos are allocated to it, and update
       hard_reg_n_uses.  */
--- 1529,1540 ----
  
    /* Count number of uses of each hard reg by pseudo regs allocated to it
!      and then order them by decreasing use.  First exclude hard registers
!      that are live in or across this insn.  */
  
!   REG_SET_TO_HARD_REG_SET (used_by_pseudos, &chain->live_throughout);
!   REG_SET_TO_HARD_REG_SET (used_by_pseudos2, &chain->dead_or_set);
!   IOR_HARD_REG_SET (bad_spill_regs, used_by_pseudos);
!   IOR_HARD_REG_SET (bad_spill_regs, used_by_pseudos2);
! 
    /* Now find out which pseudos are allocated to it, and update
       hard_reg_n_uses.  */
*************** finish_spills (global, dumpfile)
*** 3518,3535 ****
        spill_reg_order[i] = -1;
  
!   for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
!     if (REGNO_REG_SET_P (&spilled_pseudos, i))
!       {
! 	/* Record the current hard register the pseudo is allocated to in
! 	   pseudo_previous_regs so we avoid reallocating it to the same
! 	   hard reg in a later pass.  */
! 	if (reg_renumber[i] < 0)
! 	  abort ();
! 	SET_HARD_REG_BIT (pseudo_previous_regs[i], reg_renumber[i]);
! 	/* Mark it as no longer having a hard register home.  */
! 	reg_renumber[i] = -1;
! 	/* We will need to scan everything again.  */
! 	something_changed = 1;
!       }
  
    /* Retry global register allocation if possible.  */
--- 3519,3537 ----
        spill_reg_order[i] = -1;
  
!   EXECUTE_IF_SET_IN_REG_SET
!     (&spilled_pseudos, FIRST_PSEUDO_REGISTER, i,
!      {
!        /* Record the current hard register the pseudo is allocated to in
! 	  pseudo_previous_regs so we avoid reallocating it to the same
! 	  hard reg in a later pass.  */
!        if (reg_renumber[i] < 0)
! 	 abort ();
! 
!        SET_HARD_REG_BIT (pseudo_previous_regs[i], reg_renumber[i]);
!        /* Mark it as no longer having a hard register home.  */
!        reg_renumber[i] = -1;
!        /* We will need to scan everything again.  */
!        something_changed = 1;
!      });
  
    /* Retry global register allocation if possible.  */
*************** allocate_reload_reg (chain, r, last_relo
*** 5063,5066 ****
--- 5065,5069 ----
     CHAIN is the insn currently being processed; SAVE_RELOAD_REG_RTX
     is the array we use to restore the reg_rtx field for every reload.  */
+ 
  static void
  choose_reload_regs_init (chain, save_reload_reg_rtx)
*************** choose_reload_regs_init (chain, save_rel
*** 5094,5097 ****
--- 5097,5101 ----
      compute_use_by_pseudos (&reg_used_in_insn, &chain->dead_or_set);
    }
+ 
    for (i = 0; i < reload_n_operands; i++)
      {
*** sbitmap.c	2000/04/10 19:35:13	1.11
--- sbitmap.c	2000/05/19 21:44:25
*************** Boston, MA 02111-1307, USA.  */
*** 23,26 ****
--- 23,27 ----
  #include "rtl.h"
  #include "flags.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  
*** toplev.c	2000/05/19 20:51:49	1.340
--- toplev.c	2000/05/19 21:44:38
*************** Boston, MA 02111-1307, USA.  */
*** 55,58 ****
--- 55,59 ----
  #include "toplev.h"
  #include "expr.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  #include "intl.h"
*** unroll.c	2000/05/12 16:26:15	1.97
--- unroll.c	2000/05/19 21:44:49
*************** enum unroll_types { UNROLL_COMPLETELY, U
*** 161,164 ****
--- 161,166 ----
  #include "loop.h"
  #include "toplev.h"
+ #include "hard-reg-set.h"
+ #include "basic-block.h"
  
  /* This controls which loops are unrolled, and by how much we unroll
*** profile.c	2000/05/19 20:51:49	1.43
--- profile.c	2000/05/19 22:07:25
*************** Boston, MA 02111-1307, USA.  */
*** 47,50 ****
--- 47,51 ----
  #include "toplev.h"
  #include "ggc.h"
+ #include "hard-reg-set.h"
  #include "basic-block.h"
  
*** Makefile.in	2000/05/19 04:13:35	1.447
--- Makefile.in	2000/05/19 22:19:01
*************** EXPR_H = expr.h insn-codes.h
*** 772,776 ****
  REGS_H = regs.h varray.h $(MACHMODE_H)
  INTEGRATE_H = integrate.h varray.h
! LOOP_H = loop.h varray.h basic-block.h
  GCC_H = gcc.h version.h
  GGC_H = ggc.h varray.h
--- 772,776 ----
  REGS_H = regs.h varray.h $(MACHMODE_H)
  INTEGRATE_H = integrate.h varray.h
! LOOP_H = loop.h varray.h bitmap.h
  GCC_H = gcc.h version.h
  GGC_H = ggc.h varray.h
*************** mbchar.o: mbchar.c $(CONFIG_H) system.h 
*** 1112,1116 ****
  graph.o: graph.c $(CONFIG_H) system.h toplev.h flags.h output.h $(RTL_H) \
      function.h hard-reg-set.h $(BASIC_BLOCK_H) graph.h
! sbitmap.o: sbitmap.c $(CONFIG_H) system.h $(RTL_H) flags.h $(BASIC_BLOCK_H)
  
  COLLECT2_OBJS = collect2.o tlink.o hash.o intl.o underscore.o version.o
--- 1112,1117 ----
  graph.o: graph.c $(CONFIG_H) system.h toplev.h flags.h output.h $(RTL_H) \
      function.h hard-reg-set.h $(BASIC_BLOCK_H) graph.h
! sbitmap.o: sbitmap.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h \
!     $(BASIC_BLOCK_H)
  
  COLLECT2_OBJS = collect2.o tlink.o hash.o intl.o underscore.o version.o
*************** toplev.o : toplev.c $(CONFIG_H) system.h
*** 1236,1241 ****
     flags.h input.h insn-attr.h xcoffout.h defaults.h output.h \
     insn-codes.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h dwarfout.h \
!    dwarf2out.h sdbout.h dbxout.h $(EXPR_H) $(BASIC_BLOCK_H) graph.h loop.h \
!    except.h regs.h $(TIMEVAR_H) $(lang_options_files)
  	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \
  	  -DTARGET_NAME=\"$(target_alias)\" \
--- 1237,1242 ----
     flags.h input.h insn-attr.h xcoffout.h defaults.h output.h \
     insn-codes.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h dwarfout.h \
!    dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \
!    graph.h loop.h  except.h regs.h $(TIMEVAR_H) $(lang_options_files)
  	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \
  	  -DTARGET_NAME=\"$(target_alias)\" \
*************** toplev.o : toplev.c $(CONFIG_H) system.h
*** 1244,1248 ****
  rtl.o : rtl.c $(CONFIG_H) system.h $(RTL_H) bitmap.h $(GGC_H) toplev.h
  
! print-rtl.o : print-rtl.c $(CONFIG_H) system.h $(RTL_H) $(BASIC_BLOCK_H)
  rtlanal.o : rtlanal.c $(CONFIG_H) system.h $(RTL_H)
  errors.o : errors.c $(CONFIG_H) system.h errors.h
--- 1245,1250 ----
  rtl.o : rtl.c $(CONFIG_H) system.h $(RTL_H) bitmap.h $(GGC_H) toplev.h
  
! print-rtl.o : print-rtl.c $(CONFIG_H) system.h $(RTL_H) hard-reg-set.h \
!     $(BASIC_BLOCK_H)
  rtlanal.o : rtlanal.c $(CONFIG_H) system.h $(RTL_H)
  errors.o : errors.c $(CONFIG_H) system.h errors.h
*************** ssa.o : ssa.c $(CONFIG_H) system.h $(RTL
*** 1323,1330 ****
     output.h insn-config.h
  conflict.o : conflict.c $(CONFIG_H) system.h $(OBSTACK_H) $(HASHTAB_H) \
!    $(RTL_H) $(BASIC_BLOCK_H)
! profile.o : profile.c $(CONFIG_H) system.h $(RTL_H) flags.h insn-flags.h \
!    gcov-io.h $(TREE_H) output.h $(REGS_H) toplev.h function.h insn-config.h \
!    $(GGC_H)
  loop.o : loop.c $(CONFIG_H) system.h $(RTL_H) flags.h $(LOOP_H) insn-config.h \
     insn-flags.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) real.h \
--- 1325,1332 ----
     output.h insn-config.h
  conflict.o : conflict.c $(CONFIG_H) system.h $(OBSTACK_H) $(HASHTAB_H) \
!    $(RTL_H) hard-reg-set.h $(BASIC_BLOCK_H)
! profile.o : profile.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
!    insn-flags.h insn-config.h output.h $(REGS_H) $(EXPR_H) function.h \
!    gcov-io.h toplev.h $(GGC_H) hard-reg-set.h $(BASIC_BLOCK_H)
  loop.o : loop.c $(CONFIG_H) system.h $(RTL_H) flags.h $(LOOP_H) insn-config.h \
     insn-flags.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) real.h \
*************** loop.o : loop.c $(CONFIG_H) system.h $(R
*** 1332,1336 ****
  unroll.o : unroll.c $(CONFIG_H) system.h $(RTL_H) insn-config.h function.h \
     $(INTEGRATE_H) $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) $(LOOP_H) toplev.h \
!    varray.h 
  flow.o : flow.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h insn-config.h \
     $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
--- 1334,1338 ----
  unroll.o : unroll.c $(CONFIG_H) system.h $(RTL_H) insn-config.h function.h \
     $(INTEGRATE_H) $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) $(LOOP_H) toplev.h \
!    hard-reg-set.h varray.h $(BASIC_BLOCK_H)
  flow.o : flow.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h insn-config.h \
     $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
*************** $(HOST_PREFIX_1)print-rtl.o: $(srcdir)/p
*** 1686,1690 ****
  
  $(HOST_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(CONFIG_H) system.h $(RTL_H) \
!   flags.h $(BASIC_BLOCK_H) $(REGS_H)
  	rm -f $(HOST_PREFIX)bitmap.c
  	sed -e 's/config[.]h/hconfig.h/' $(srcdir)/bitmap.c > $(HOST_PREFIX)bitmap.c
--- 1688,1692 ----
  
  $(HOST_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(CONFIG_H) system.h $(RTL_H) \
!   flags.h bitmap.h
  	rm -f $(HOST_PREFIX)bitmap.c
  	sed -e 's/config[.]h/hconfig.h/' $(srcdir)/bitmap.c > $(HOST_PREFIX)bitmap.c

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