On Wed, Jul 19, 2006 at 01:24:59PM +0200, Rask Ingemann Lambertsen wrote: > > The function named emit_move_insn() ought to do the trick here, but > is perhaps a bit heavyweight for this purpose. Anyway, try this patch > (untested), which should plug this particular hole:
There was an unbalanced parantheses. Here's an updated patch: Index: gcc/config/arm/arm.c =================================================================== --- gcc/config/arm/arm.c (revision 115021) +++ gcc/config/arm/arm.c (working copy) @@ -709,12 +709,15 @@ TLS_LE32 }; -/* Emit an insn that's a simple single-set. Both the operands must be known - to be valid. */ +/* Emit an insn that's a simple single-set if Y isn't a general operand. + Both the operands must be known to be valid. */ inline static rtx emit_set_insn (rtx x, rtx y) { - return emit_insn (gen_rtx_SET (VOIDmode, x, y)); + if (general_operand (y, GET_MODE (x))) + return emit_move_insn (x, y); + else + return emit_insn (gen_rtx_SET (VOIDmode, x, y)); } /* Return the number of bits set in VALUE. */ -- Rask Ingemann Lambertsen