Hi,

On Sat, 5 Mar 2005 [EMAIL PROTECTED] wrote:

> > Well, I assumed the same thing when I started poking at that code, but
> > then someone pointed out that it didn't actually work that way, and as
> > I recall the code does in fact assume a register.  I certainly would
> > not object to making '+' work properly for memory operands, but simply
> > asserting that it already does is wrong.
> 
> The code in reload to make non-matching operands match assumes a
> register. However, a match from a plus should always kept in sync
> (except temporarily half-way through a substitution, since we now
> unshare).  If it isn't, that's a regression.

In former times an in-out constraint simply was translated to a matching 
constraints.  So it broke when no register was allowed with it.

Jason added a warning to that effect in 2003
  http://gcc.gnu.org/ml/gcc-patches/2003-12/msg01491.html
RTH fixed the problem of this translation in tree-ssa and hence also 
removed the warning
  http://gcc.gnu.org/ml/gcc-patches/2004-05/msg00438.html

I now see that I had an objection to that one as he also applied the 
removal of the warning to 3.4, without me seeing that we were doing the 
right thing as Richard claimed, but that seemed to have falled through the 
crack.

> Do you have a testcase, and/or can point out the code that introduces
> the inconsistency in the rtl?


Ciao,
Michael.

Reply via email to