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: ia64 performance regression


On Sat, Nov 10, 2001 at 01:26:12PM +0100, Krister Walfridsson wrote:
> This change breaks bootstrap for i386-unknown-netbsdelf1.5Y. (it gives
> ICE for some files, for example f/implicit.c)

Bother.  The same problem I saw on Alpha before I tweeked the
machine description.  The problem being that loop blindly
replaces one register with another without verifying that the
replacement is valid.

The quick hack back to bootstrapville is

Index: loop.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/loop.c,v
retrieving revision 1.366
diff -u -p -r1.366 loop.c
--- loop.c	2001/11/07 06:24:46	1.366
+++ loop.c	2001/11/10 18:54:50
@@ -1346,7 +1346,7 @@ combine_movables (movables, regs)
 	/* We want later insns to match the first one.  Don't make the first
 	   one match any later ones.  So start this loop at m->next.  */
 	for (m1 = m->next; m1; m1 = m1->next)
-	  if (m != m1 && m1->match == 0
+	  if (0 && m != m1 && m1->match == 0
 	      && regs->array[m1->regno].n_times_set == 1
 	      /* A reg used outside the loop mustn't be eliminated.  */
 	      && !m1->global

I'll work on a proper solution.


r~


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