[patch] Use simple LRA algorithm at -O0
Vladimir Makarov
vmakarov@redhat.com
Thu Dec 19 23:05:00 GMT 2019
On 12/19/19 6:29 AM, Eric Botcazou wrote:
>> Simple LRA algorithms switch off hard register splitting, so there might
>> a slightly bigger chance for occurring "can find reload register" error
>> (e.g. when -O0 -fschedule-insns is used). But this error is still not
>> solved in general case and in my experience the chance for this error is
>> even bigger for optimized modes than for -O0 with simple LRA algorithms.
> I see, thanks for the explanation. So this could occur for register varuables
> or something along these lines?
It might occur when when liveness of hard registers explicitly present
in RTL are expanded. A typical example is a move of hard register (e.g.
x86-64 dx used as function call argument) through insn always requiring
this hard register (e.g. a x86-64 div insn using ax/dx hard register).
Also there are more complicated cases. Reload pass never tried to solve
this problem. LRA tries to solve it but still in general case this
problem is also not solved. Therefore 1st insn scheduler on some
targets is switched off by default. Still GCC users can switch it on
and ran into the problem with or without the patch.
>> Saying that I believe the patch is OK for the trunk.
> OK, let's see how it fares. We have been using it with a GCC 9 compiler for
> some time, without any problem so far.
>
As I wrote for typical GCC use the patch will not create any problem.
But GCC users (or running automatically generated tests with artificial
option set) still can ran into the problem as it was before the patch.
More information about the Gcc-patches
mailing list