[PATCH] Fix ubsan expansion of multiplication (PR rtl-optimization/60030)

Jakub Jelinek jakub@redhat.com
Thu Feb 6 16:25:00 GMT 2014


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.

	Jakub



More information about the Gcc-patches mailing list