mn10300.md (cmpsi): Tell reload to disregard the first alternative.
[gcc.git] / gcc / config / mn10300 / mn10300.md
index 4f32cd489d0b0f4091b4c82c06e25f7ad03018a3..7050f7adc9f85827a15fb2f0ee2f5326a8c77663 100644 (file)
 ;; 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")))]
   ""
   "@