Georg Lay <a...@gjlay.de> writes: > roy rosen schrieb: >> What might be the problem here? > > Define and use proper constraint(s).
Right. doloop_end is a notoriously difficult case though, because jump insns aren't allowed to have output reloads. Something like: (define_insn "doloop_end_internal" [(set (pc) (if_then_else (ne (match_operand:SI 1 "lc_operand" "+lc") (const_int 0)) (label_ref (match_operand 0 "" "")) (pc))) (set (match_dup 1) (plus:SI (match_dup 1) (const_int -1)))] ...) isn't allowed because it might generate an output reload from an lc_register to either a general register or memory. The predicates and constraints have to accept all allocatable registers for SImode and at least (mem (reg)). See the MeP port for one example of how to do this. Richard