Hi peter,

On Mon, Oct 22, 2018 at 06:40:58PM -0500, Peter Bergner wrote:
> --- gcc/function.c    (revision 265399)
> +++ gcc/function.c    (working copy)
> @@ -6453,6 +6453,13 @@ match_asm_constraints_1 (rtx_insn *insn,
>         || !general_operand (input, GET_MODE (output)))
>       continue;
>  
> +      /* If we have a matching constraint and both operands are hard 
> registers,
> +      then they must be the same hard register.  */
> +      if (HARD_REGISTER_P (output)
> +       && HARD_REGISTER_P (input)
> +       && REGNO (output) != REGNO (input))

You need to test for REG_P (input) before you can HARD_REGISTER_P (input)
or REGNO (input).

> +     fatal_insn ("unable to fixup asm constraints for:", insn);

"impossible constraints"?  There are some more of those already.  Or you
could describe the actual problem even?

> +                     /* Operands don't match.  Make sure the two operands
> +                        are not two different explicit hard registers.  */
> +                     if (HARD_REGISTER_P (*curr_id->operand_loc[nop])
> +                         && HARD_REGISTER_P (*curr_id->operand_loc[m]))
> +                       fatal_insn ("unable to generate reloads for:",
> +                                   curr_insn);

Same here (and below) :-)


Segher

Reply via email to