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