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) > #endif >
interesting. So I guess it all comes down to what 'something interesting' means and whether that has to be consistent for all modes.