[PATCH, ARM] PR47855 Compute attr "length" for some thumb2 insns
Richard Sandiford
richard.sandiford@linaro.org
Thu Apr 7 09:32:00 GMT 2011
Hi Carrot,
Sorry if this has already been reported, but the patch breaks bootstrap
of arm-linux-gnueabi (or cross builds with --enable-werror). The problem
is that this...
Carrot Wei <carrot@google.com> writes:
> @@ -10256,7 +10281,29 @@
>
> return \"\";
> }"
> - [(set_attr "type" "store4")]
> + [(set_attr "type" "store4")
> + (set (attr "length")
> + (if_then_else
> + (and (ne (symbol_ref "TARGET_THUMB2") (const_int 0))
> + (ne (symbol_ref "{
> + /* Check if there are any high register (except lr)
> + references in the list. KEEP the following iteration
> + in sync with the template above. */
> + int i, regno, hi_reg;
> + int num_saves = XVECLEN (operands[2], 0);
> + regno = REGNO (operands[1]);
> + hi_reg = (REGNO_REG_CLASS (regno) == HI_REGS)
> + && (regno != LR_REGNUM);
> + for (i = 1; i < num_saves && !hi_reg; i++)
> + {
> + regno = REGNO (XEXP (XVECEXP (operands[2], 0, i), 0));
> + hi_reg |= (REGNO_REG_CLASS (regno) == HI_REGS)
> + && (regno != LR_REGNUM);
> + }
> + !hi_reg; }")
> + (const_int 0)))
> + (const_int 2)
> + (const_int 4)))]
uses a statement expression -- i.e. ({ code; result; }) -- which is
a GNU extension.
I suppose a simple fix would be to put the code into an arm.c function.
Richard
More information about the Gcc-patches
mailing list