This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC][PATCH LRA] WIP patch to fix one part of PR87507
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