On 05/08/2015 02:32 PM, Jeff Law wrote: > On 05/08/2015 02:15 PM, Richard Henderson wrote: >> >> But it *does* try to match an intermediate pattern, >> >> (set (reg:CCGC 17 flags) >> (compare:CCGC (reg:CCGC 17 flags) >> (const_int 0 [0]))) >> >> which can be considered a no-op move. If I add the attached pattern, then >> the >> combination happens in two steps -- 9->12, 12->13 -- and we get what we >> hoped: > So what happens if that pattern is actually recognized as a nop-move by > set_noop_p? That would allow recog_for_combine to see it as a nop and > "recognize" it as valid.
Interesting suggestion -- I hadn't thought of that. It might be easier than playing with use_crosses_set_p, and certainly better than the nop_cmp pattern. I'll have a go at this later. r~