This is the mail archive of the gcc@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: x86 bootstrap failure


On Sun, Dec 30, 2001 at 05:08:26PM -0500, David Edelsohn wrote:
> 	Removing rth's patch fixes the bootstrap error on AIX.  I would
> appreciate if someone would try bootstrapping x86 without his patch to
> confirm that it the cause of the x86 bootstrap failure as well.  The patch
> in question is:
> 
> 2001-12-29  Richard Henderson  <rth@redhat.com>
> 
>         * loop.c (prescan_loop): Set has_multiple_exit_targets for exception
>         edges.  Rearrange jump interpretation code to use pc_set.
>         (check_dbra_loop): Examine has_multiple_exit_targets not exit_count.

The fix that I am testing is

Index: loop.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/loop.c,v
retrieving revision 1.374
diff -c -p -d -u -r1.374 loop.c
--- loop.c	2001/12/29 18:46:37	1.374
+++ loop.c	2001/12/30 22:25:13
@@ -7977,7 +7977,9 @@ check_dbra_loop (loop, insn_count)
 	 which is reversible.  */
       int reversible_mem_store = 1;
 
-      if (bl->giv_count == 0 && ! loop_info->has_multiple_exit_targets)
+      if (bl->giv_count == 0
+	  && ! loop->exit_count
+	  && ! loop_info->has_multiple_exit_targets)
 	{
 	  rtx bivreg = regno_reg_rtx[bl->regno];
 	  struct iv_class *blt;

Contrary to the way they sound, exit_count and has_multiple_exit_targets
are not different forms of the same test.  The former is the number of
jumps to the "natural" exit, and the later is true if there are jumps
to other than the natural exit.

I didn't examine the comparison failure in detail to figure out what the
actual failure was, or why it affects i686 but not alpha or ia64.  I just
guessed at the problem based on the contents of that patch.  Anyway, given
that there are demonstrated problems with checking only one or the other
I guess we should be checking both.

I successfully bootstrapped and make compare'd i686 with C only with this
patch.  I've restarted with all languages; I expect results in an hour.


r~


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