On 11/23/2016 11:18 AM, Paolo Bonzini wrote:
On 23/11/2016 10:35, Eric Botcazou wrote:
I now wonder
whether this also matters for !WORD_REGISTER_OPERATIONS targets, e.g. x86:
(set (reg1:DI) ...
...
(set (reg1:QI) (expression:QI))
...
(set (reg2:DI) (any_extend:DI (reg1:QI)))
...
(use (reg1:DI))
where the use reads well-defined upper bits from the very first set.
Does it really do that with a (set (reg1:QI)), as opposed to a
(set (strict_low_part (subreg:QI (reg1:DI)))?
It would need strict_low_part unless we're dealing with subwords. I
think the patch should maybe check for that in the !W_R_O case.
Does WORD_REGISTER_OPERATIONS really buy much on targets that use it?
This sort of situation seems very surprising and unfortunate.
Bernd