On Thu, 2006-07-20 at 12:04, Dave Korn wrote:
> On 20 July 2006 07:03, Wolfgang Mües wrote:
> 
> > Hello Rask,
> > 
> > On Wednesday 19 July 2006 13:24, Rask Ingemann Lambertsen wrote:
> >> I've spotted a function named emit_set_insn() in arm.c. It might be
> >> the problem, because it uses gen_rtx_SET() directly.
> > 
> > But it's not the only function which uses gen_rtx_SET. There are also
> > much places with
> > 
> >>     emit_constant_insn (cond,
> >>    gen_rtx_SET (VOIDmode, target, source));
> > 
> > Isn't it better to replace gen_rtx_SET?
> > 
> 
>   Is there any generic advice available as to when and why one should use
> emit_insn (gen_rtx_SET (....)) as opposed to emit_move_insn (...)?

emit_move_insn will validate that the operands and try to make things
work if they don't satisfy the predicates for mov<mode>; ultimately it
will end up calling the gen_mov<mode> insn to do the right thing. 
emit_insn (gen_rtx_set... just takes the two operands and forms a set
insn, so the operands can be anything that's valid in a set, for
example:

        op0 = reg
        op1 = plus(reg, const_int)

you can only use emit_insn (gen_rtx_set(...)) when you know that the
result is a valid insn (for the current context).

R.

Reply via email to