------- Comment #10 from mkuvyrkov at gcc dot gnu dot org 2009-06-23 12:26 ------- (In reply to comment #9) > But % makes it commutative, no?
Yes, but that only means that the operands can be swapped *if* swap_commutative_operands_p() returns true. Due to the funny precedence that does not happen. > So operand 2 matches operand 0, and operand 1 > matches mSrIKLT. Matching procedures do not take commutativeness into account. Part of the problem are optimizations using commutativeness during reload. One way to paper over the issue is to forbid such optimizations during reload, but that may worsen code. And this approach is not as clean as letting backends decide if their .md files can handle funny canonicalization rules. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37053