From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Matz To: Cc: Subject: Re: df.c and partial writes/REG_EQUAL notes Date: Wed, 24 Oct 2001 13:27:00 -0000 Message-id: References: <3257.1003952277@localhost.localdomain> X-SW-Source: 2001-10/msg01249.html Hi, On Wed, 24 Oct 2001 law@redhat.com wrote: > Right. Review the movxx section in the Machine Descriptions part of the > manual. Quoting: > > @cindex @code{mov@var{m}} instruction pattern > @item @samp{mov@var{m}} > Here @var{m} stands for a two-letter machine mode name, in lower case. > This instruction pattern moves data with that machine mode from operand > 1 to operand 0. For example, @samp{movsi} moves full-word data. > > If operand 0 is a @code{subreg} with mode @var{m} of a register whose > own mode is wider than @var{m}, the effect of this instruction is > to store the specified value in the part of the register that corresponds > to mode @var{m}. The effect on the rest of the register is undefined. > > Based on that I believe there should be no dependency since insn #2 > leaves the rest of the DI register undefined. No, that's exactly the problem I was asking some months before about this documentation. Only the _word_ containing the subreg is touched by such a move, i.e. if the subreg describes a complete word, it leaves no bits undefined. Depending on the machine a (set (subreg:SI (reg:DI x) 0)) clobbers the complete (reg:DI x) (if it only takes one hardreg), or only the lower half. Ciao, Michael.