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