[Patch/rtl-expand] Take tree range info into account to improve LSHIFT_EXP expanding
Jiong Wang
jiong.wang@arm.com
Wed Apr 29 22:14:00 GMT 2015
Jeff Law writes:
> On 04/27/2015 02:21 PM, Jiong Wang wrote:
>
>> Jeff,
>>
>> Sorry, I can't understand the meaning of "overlap between t_low and low",
>> assume "right" in "right value" means the opposite of "left" not
>> "correct".
>>
>> So what you mean is t_low and low share the same pseudo regiser?
> My concern is sharing the same pseudo or memory location. But thinking
> more about it, the shifted value has to have range information, so it
> must have been an SSA_NAME, right? If so, then it can't overlap with
> the destination, so this is a non-issue. Sorry for the confusion.
Thanks for the light. By looking at related code, looks like even it's
SSA_NAME, it's still possible to share the same pseudo given the
destination is in the same SSA map parition after ssa name coleascing?
> I've never liked the model of storing into TARGET when it's convenient.
> Because storing into TARGET is totally optional, it means the callers
> have to check if the value was stored into TARGET or not.
>
> Sadly that model has been in the expanders as long as I can remember.
>
> So I think this can go forward once we resolve the case where
> expand_variable_shift returns its value in something other than the
> passed in target.
OK. I will rework the patch, and I found there is a function named
"expand_doubleword_shift" which looks like a more natural place to do
this optimization, although it's hard to get range info there. I will do
further explore on this.
--
Regards,
Jiong
More information about the Gcc-patches
mailing list