On 02/02/18 12:21, Eric Botcazou wrote:
>> That's always been my interpretation too. Seems like we may be changing
>> the meaning of this macro...
> The main (and essentially only) effect of WORD_REGISTER_OPERATIONS in the
> compiler happens during combine and is explained by this comment taken from
> eliminate_regs_1 and written by Jim in 1998:
> #ifdef WORD_REGISTER_OPERATIONS
> /* On these machines, combine can create rtl of the form
> (set (subreg:m1 (reg:m2 R) 0) ...)
> where m1 < m2, and expects something interesting to
> happen to the entire word. Moreover, it will use the
> (reg:m2 R) later, expecting all bits to be preserved.
> So if the number of words is the same, preserve the
> subreg so that push_reloads can see it. */
> && ! ((x_size-1)/UNITS_PER_WORD == (new_size-1) UNITS_PER_WORD)
interesting. So I guess it all comes down to what 'something
interesting' means and whether that has to be consistent for all modes.