This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Unable to generate reloads
- To: gcc at gcc dot gnu dot org
- Subject: Unable to generate reloads
- From: Lars Brinkhoff <lars at nocrew dot org>
- Date: 21 Sep 2001 15:09:51 +0200
- Organization: nocrew
In my back end, there is an instruction that can load a value from
memory (or another register) and then conditionally jump depending on
how the value compares with zero. The instruction is recognized by
the combine pass and is defined like this:
(define_insn "*load_and_jump"
[(set (pc)
(if_then_else (match_operator 0 "comparison_operator"
[(match_operand:SI 2 "reg_or_mem_operand" "rm")
(const_int 0)])
(label_ref (match_operand 3 "" ""))
(pc)))
(set (match_operand:SI 1 "register_operand" "=r")
(match_dup 2))]
...)
A few files in the testsuite generate the "Unable to generate reloads
for:" error for this instruction. Example:
testsuite/gcc.c-torture/compile/920625-1.c:279: Unable to generate reloads for:
(jump_insn 45 4975 5103 (parallel[
(set (pc)
(if_then_else (ge (reg:SI 1217)
(const_int 0 [0x0]))
(label_ref 48)
(pc)))
(set (reg/v:SI 30)
(reg:SI 1217))
] ) 68 {*move_and_skipsi} (nil)
(expr_list:REG_DEAD (reg:SI 1217)
(expr_list:REG_BR_PROB (const_int 8900 [0x22c4])
(nil))))
How do I avoid this error?
--
Lars Brinkhoff http://lars.nocrew.org/ Linux, GCC, PDP-10
Brinkhoff Consulting http://www.brinkhoff.se/ programming