Adam Nemet <adambne...@gmail.com> writes:

> > > I think the right fix is to call convert_to_mode or convert_move in the
> > > expansion code which ensure the proper truncation.
> > 
> > That would yield correct code, but wouldn't it throw away the fact
> > that the high bits are already known to be zero, and yield redundant
> > zero-extension on some platforms?  I'm guessing that's why the code was
> > originally written to call convert_lowpart rather than convert_to_mode.
> 
> convert_to_mode uses gen_lowpart for truncation if TRULY_NOOP_TRUNCATION.

I was concerned about the !TRULY_NOOP_TRUNCATION case; I didn't want
to harm someone else's performance to benefit my chip.  But, looking
around, it looks like (almost?) every chip either #defines
TRULY_NOOP_TRUNCATION or wants this fix.  So your suggestion sounds
good to me, and in any case using straightforward type conversions
should surely be the default choice.

-Mat

Reply via email to