On 11/28/2017 04:55 AM, Richard Biener wrote:

>>> Or consider a stream of code containing two tls_desc calls (ok, the 
>>> compiler might
>>> optimise one of the tls calls away, but this approach should be reusable 
>>> for other exprs).
>>> Between the two set(x,x)’s x is considered live so the register allocator 
>>> can’t use that
>>> register.
>>> Given that we are applying this to all the neon registers, the register 
>>> allocator now throws
>>> an ICE because it can’t find any free hard neon registers to use.
>> Given your statements it sounds like the liveness infrastructure is
>> making those neon regs globally live when it sees the low part subreg
>> self-set.  Let's confirm that one way or the other and see where it
>> takes us.
> 
> Indeed in (set (subreg:neon reg1) (subreg:neon reg1)) it appears that
> the lowpart of reg1
> is used and thus it is live but liveness analysis can (and should)
> simply ignore such sets.
My suggestion was going to be to peek a bit at the life analysis code if
indeed my suspicion was true.

Jeff

Reply via email to