Adam Thornton wrote:

>mess/machine/serial.c:779: Unable to generate reloads for:
>(insn 42 29 44 (parallel[
>            (set (mem/s:QI (plus:SI (reg:SI 1 %r1)
>                        (const_int 2 [0x2])) 0)
>                (not:QI (mem/s:QI (plus:SI (reg:SI 3 %r3)
>                            (const_int 7 [0x7])) 0)))
>            (clobber (reg:CC 33 %cc))
>        ] ) 253 {one_cmpqi2}

That's a bug in the old s390.md file, sorry.  This pattern:

(define_insn "one_cmpqi2"
  [(set (match_operand:QI 0 "memory_operand" "=Q")
        (not:QI (match_operand:QI 1 "memory_operand" "0")))
   (clobber (reg:CC 33))]
  ""
  "xi\\t%0,255"
  [(set_attr "op_type"  "SI")])

is invalid, as matching constraints don't work with
memory operands.

This has long since been fixed, and all available 3.x versions
contain this expander instead:

(define_expand "one_cmplqi2"
  [(parallel
    [(set (match_operand:QI 0 "register_operand" "")
          (xor:QI (match_operand:QI 1 "register_operand" "")
                  (const_int -1)))
     (clobber (reg:CC 33))])]
  ""
  "")

I haven't tested it, but replacing the one_cmpqi2 insn pattern
in 2.95 with this new expander should work, and fix the bug.

(Alternatively, as an absolute-low-risk fix, you could simply
delete the one_cmpqi2 pattern without replacement.)

Bye,
Ulrich

--
  Dr. Ulrich Weigand
  [EMAIL PROTECTED]

Reply via email to