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