On Tue, Nov 20, 2018 at 10:07:35AM -0800, Michael Eager wrote: > The internal RTL should not be dictating what the target arch can or > cannot implement. Reload should insert any needed conversions, > especially ones which narrow the size. Well, that depends. A zero_extract of mem is only defined for byte_mode, just like SET is only defined for VOIDmode (on the SET itself, not its args). Because this is guaranteed, nothing in GCC ever needs to check this. That is the theory of course; in reality quite a few targets have used other modes for the mem in a zero_extract, and this seems to have mostly worked. As another example, closer by, an extract length of 0 is not allowed either, for zero_extract. And this *did* cause problems recently. Why was it documented as requiring byte mode? Was this changed, just the documentation was not updated? Segher