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