On 10/22/18 7:20 PM, Segher Boessenkool wrote:
> Hi peter,
>> + /* 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).
Yup, already done that. Just checking the s390 debugger which is seeing
a SUBREG, so trying to decide whether I should be looking inside the SUBREG
or not. Shouldn't be hard to do if it makes sense.
>> + 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) :-)
Yeah, I like that. Thanks.
Peter