Pat Haugen wrote:
Is this being done on purpose (going on assumption that operands are commutative), such as to allow more opportunities for a successful allocation with reduced spill?
I think so, but reordering the "else if"s should improve the results.
I've also seen the same situation come up during register renaming (regrename.c), but not too surprising since the code there says it's based off find_reloads_address_1() and is coded similarly.
... and likewise here. Paolo