haifa infinite loop
Jeffrey A Law
law@cygnus.com
Mon Apr 20 02:20:00 GMT 1998
In message < 19980419163604.00189@twiddle.rth.home >you write:
> 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:
Yup.
> (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.
Correct, it shouldn't have happened :-)
There's a backedge in the loop, with I know causes haifa some problems,
though I thought I'd managed to keep such code from being identified
as a schedulable region.
It's probably a situation similar to the one mentioned in the comment
above the code which adds all the block from the loop into the block
queue.
I'll try to look at it tomorrow.
> OTOH, I suppose checking for an infinite loop and aborting
> wouldn't be a bad thing...
Agreed.
jeff
More information about the Gcc
mailing list