On 05/31/2018 04:39 AM, Alan Hayward wrote:
> (Missed this thread initially due to incorrect email address)
Sorry.  Good to hear your're still interested in figuring this out.

> 
>> On 29 May 2018, at 11:05, Richard Sandiford <richard.sandif...@linaro.org> 
>> wrote:
>>
>> Jeff Law <l...@redhat.com> writes:
>>> Now that we're in stage1 I do want to revisit the CLOBBER_HIGH stuff.
>>> When we left things I think we were trying to decide between
>>> CLOBBER_HIGH and clobbering the appropriate subreg.  The problem with
>>> the latter is the dataflow we compute is inaccurate (overly pessimistic)
>>> so that'd have to be fixed.
> 
> Yes, I want to get back to looking at this again, however I’ve been busy
> elsewhere.
Similarly.

> 
>>
>> The clobbered part of the register in this case is a high-part subreg,
>> which is ill-formed for single registers.  It would also be difficult
>> to represent in terms of the mode, since there are no defined modes for
>> what can be stored in the high part of an SVE register.  For 128-bit
>> SVE that mode would have zero bits. :-)
>>
>> I thought the alternative suggestion was instead to have:
>>
>>   (set (reg:M X) (reg:M X))
>>
>> when X is preserved in mode M but not in wider modes.  But that seems
>> like too much of a special case to me, both in terms of the source and
>> the destination:
> 
> Agreed. When I looked at doing it that way back in Jan, my conclusion was
> that if we did it that way we end up with more or less the same code but
> instead of:
> 
> if (GET_CODE (setter) == CLOBBER_HIGH
>    && reg_is_clobbered_by_clobber_high(REGNO(dest), GET_MODE 
> (rsp->last_set_value))
> 
> Now becomes something like:
> 
> if (GET_CODE (setter) == SET
>    && REG_P (dest) && HARD_REGISTER_P (dest) && REG_P (src) && REGNO(dst) == 
> REGNO(src)
>    && reg_is_clobbered_by_self_set(REGNO(dest), GET_MODE 
> (rsp->last_set_value))
> 
> Ok, some of that code can go into a macro, but it feel much clearer to
> explicitly check for CLOBBER_HIGH rather then applying some special semantics
> to a specific SET case.
Then let's return to the CLOBBER_HIGH approach.  The hope was that most
of the places where you had to introduce CLOBBER_HIGH would "just work"
with the self-set approach.  If that's not the case, then there's really
nothing to be gained with self-set.

I suggest you get the patch updated for the trunk and repost now that
we're in broad agreement that self-set is a rathole.

jeff

Reply via email to