On Mon, Feb 22, 2016 at 4:34 PM, Jeff Law <l...@redhat.com> wrote:
> On 02/22/2016 07:34 AM, Richard Biener wrote:
>
>> Hum, but then you get to "inifinite" compiles again when LRA is buggy
>> or the user presents it with an impossible to handle asm.
>
> Neither should be happening in practice, even an impossible asm should cause
> LRA to halt in some way or another.
>
> In practice looping has occurred due to bugs in machine descriptions are are
> typically seen during development/porting.  Hence the desire to put it under
> -fchecking for gcc-6 and possibly implement something smarter for gcc-7
> (where we'd track more precisely whether or not we're making forward
> progress).
>
>>
>> I don't think that's a good idea - maybe bumping the limit is the way to
>> go instead?
>
> No, because one just needs to build a longer chain of insns needing
> reloading.
>
>>
>> 30 constraint passes sounds excessive and a sign of a bug to me anyway.
>
> Not really.  If you look at the testcase and the chain of reloads, it's
> legitimate.  Essentially each pass exposes a case where spill a register in
> an insn that previously had a register allocated.

But requiring another full reload pass to handle such chains is pointing at
a wrong algorithm IMHO.  Isn't this also quadratic in the length of the chain?

Richard.

> Jeff

Reply via email to