public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* haifa infinite loop
@ 1998-04-19 21:34 Richard Henderson
  1998-04-20  2:20 ` Jeffrey A Law
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Richard Henderson @ 1998-04-19 21:34 UTC (permalink / raw)
  To: egcs

The following hunk o code on Alpha results in an infinite loop in haifa
beginning with line 1765:

1762          /* Remove blocks from queue[] when their in degree becomes1763                     zero.  Repeat until no blocks are left on the list.  This
1764             produces a topological list of blocks in the region.  */
1765          while (tail >= 0)
1766            {
1767              int_list_ptr ps;
1768
1769              if (head < 0)

The problem is that we make no progress if there is not some member
of degree[] that is zero.  The relevant variables at the time are:

(gdb) p tail
$1 = 4
(gdb) p queue[0]@tail+1
$2 = {7, 6, 4, 3, 2}
(gdb) p degree[0]@7+1
$3 = {1, -1, 1, 1, 1, 1, 1, 1}

I'm pretty sure this case never should have arisen, so there should
be no point in checking for the loop not making progress, but I'm 
not sure yet where to look for the correct code.

OTOH, I suppose checking for an infinite loop and aborting wouldn't
be a bad thing...


r~

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~1998-05-06 18:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-04-19 21:34 haifa infinite loop Richard Henderson
1998-04-20  2:20 ` Jeffrey A Law
1998-04-20 23:19 ` Jeffrey A Law
1998-05-06 18:14 ` Jeffrey A Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).