------- Comment #12 from bonzini at gnu dot org 2009-02-06 09:16 ------- There's another peephole2, namely from
[(set (match_operand 0 "register_operand") (match_operand 1 "register_operand")) (set (match_operand 0 "register_operand") (match_operator 3 "arith_or_logical_operator" [(match_dup 0) (match_operand 2 "memory_operand" "")]))] to [(set (match_dup 0) (match_dup 2)) (set (match_dup 0) (match_op_dup 3 [(match_dup 0) (match_dup 1)])] for operands[0] != operands[1] and commutative operator 3 (i.e. plus,mult,and,ior,xor,smin,smax,umin,umax). Testing a patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38824