;; but will have the proper effect on cc0. Using d0 is arbitrary; any
;; data register would work.)
+;; Even though the first alternative would be preferrable if it can
+;; possibly match, reload must not be given the opportunity to attempt
+;; to use it. It assumes that such matches can only occur when one of
+;; the operands is used for input and the other for output. Since
+;; this is not the case, it abort()s. Indeed, such a reload cannot be
+;; possibly satisfied, so just mark the alternative with a `!', so
+;; that it is not considered by reload.
+
(define_insn "cmpsi"
[(set (cc0)
- (compare (match_operand:SI 0 "register_operand" "*d*a*x,dax")
+ (compare (match_operand:SI 0 "register_operand" "!*d*a*x,dax")
(match_operand:SI 1 "nonmemory_operand" "*0,daxi")))]
""
"@