This is the mail archive of the
mailing list for the GCC project.
A question about define_insn and force-reg
- From: Eric Fisher <joefoxreal at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 25 Oct 2005 16:00:31 +0800
- Subject: A question about define_insn and force-reg
I think it's very interesting. I want to split a insn of loading SF
data through SI symbol, such as (set (reg:SF 5 $5) (mem/u/f:SF
I want to it firstly load the address into a register, then load the
the register. So I define the insn as follows,
[(set (match_operand:SF 0 "register_operand" "=r")
(mem:SF (match_operand:SI 1 "immediate_operand" "m")))]
operands = force_reg (SImode, operands);
return md_output_move (operands, operands);
[(set_attr "type" "load")
(set_attr "mode" "SF")
(set_attr "length" "*")])
But the gcc will come out such error,
internal compiler error: in gen_reg_rtx, at emit-rtl.c:819.
Which is the codes as following at emit-rtl.c:819,
/* Don't let anything called after initial flow analysis create new
Why can't I create a new register? So how should I do to implement it?
Thanks for your help time after time.