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 <car...@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

Reply via email to