On 02/06/2014 08:25 AM, Jakub Jelinek wrote: > On Thu, Feb 06, 2014 at 08:23:00AM -0800, Richard Henderson wrote: >> On 02/06/2014 08:02 AM, Jakub Jelinek wrote: >>> On Thu, Feb 06, 2014 at 06:53:55AM -0800, Richard Henderson wrote: >>>> On 02/04/2014 04:40 AM, Jakub Jelinek wrote: >>>>> - tem = expand_shift (LSHIFT_EXPR, mode, lopart, hprec, NULL_RTX, 1); >>>>> + tem = gen_rtx_SUBREG (mode, lopart, 0); >>>>> + tem = expand_shift (LSHIFT_EXPR, mode, tem, hprec, NULL_RTX, 1); >>>> >>>> I would be happier with gen_lowpart rather than the explicit >>>> gen_rtx_subreg. >>> >>> I need a paradoxical subreg, gen_lowpart ICEs in that case >> >> It does? Since when? I've certainly used it for paradoxicals in the past. >> >> Oh, I see, yes, it would ICE for a multi-word paradoxical subreg. But that >> sort of thing is ... skirting the bounds of validity at best. >> >> Surely we should be able to optimize away a zero-extension in all cases? > > All I know is that the generated code with the ZERO_EXTEND has been larger > than with the paradoxical subreg. But if you prefer, I can surely emit a > ZERO_EXTEND and open a PR for GCC 5.0 that we should investigate why we > generate worse code then.
Yes please. r~