On 15 May 2006 15:47, Andreas Krebbel wrote: > [rA + rB] = [rA + rB] & 3;
> 1. SRC rB -> rD > 2. SRC rA -> RC > 3. DEST rB -> rD > 4. DEST rA -> RC > last 3 changes. If the subsequent call to apply_change_group fails we > end up with: > > [rA + rB] = [rA + rD] & 3; > Which now could still be invalid as it is on s390 because we want > MEM operands in these kind of instructions to be the same on both > sides. Doesn't this mean that your insn patterns should be using numerical (aka "matching") constraints? After all, what CSE has done is valid in general given that rD contains the same value as rB; if it's a requirement of the s390 backend that all mem operands in a single instruction are identical, it should specify so in the .md file, or it should offer expanders for mem->mem operations so that reload can deal with them. Then again, I don't quite understand your question, because as far as I can see that's not a mem on the RHS, that's an and operation between a mem and an immediate; can you clarify showing before and after RTL, and the relevant md patterns? cheers, DaveK -- Can't think of a witty .sigline today....