Quoting Jason Merrill <[EMAIL PROTECTED]>: > 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. Do you have a testcase, and/or can point out the code that introduces the inconsistency in the rtl?