Add processing STRICT_LOW_PART for matched reloads.
2020-06-04 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/95464 * lra.c (lra_emit_move): Add processing STRICT_LOW_PART. * lra-constraints.c (match_reload): Use STRICT_LOW_PART in output reload if the original insn has it too.
This commit is contained in:
parent
ab56390384
commit
5261cf8ce8
@ -1071,6 +1071,8 @@ match_reload (signed char out, signed char *ins, signed char *outs,
|
||||
if (find_reg_note (curr_insn, REG_UNUSED, out_rtx) == NULL_RTX)
|
||||
{
|
||||
start_sequence ();
|
||||
if (out >= 0 && curr_static_id->operand[out].strict_low)
|
||||
out_rtx = gen_rtx_STRICT_LOW_PART (VOIDmode, out_rtx);
|
||||
lra_emit_move (out_rtx, copy_rtx (new_out_reg));
|
||||
emit_insn (*after);
|
||||
*after = get_insns ();
|
||||
|
@ -490,13 +490,16 @@ void
|
||||
lra_emit_move (rtx x, rtx y)
|
||||
{
|
||||
int old;
|
||||
|
||||
rtx_insn *insn;
|
||||
|
||||
if (GET_CODE (y) != PLUS)
|
||||
{
|
||||
if (rtx_equal_p (x, y))
|
||||
return;
|
||||
old = max_reg_num ();
|
||||
rtx_insn *insn = emit_move_insn (x, y);
|
||||
|
||||
insn = (GET_CODE (x) != STRICT_LOW_PART
|
||||
? emit_move_insn (x, y) : emit_insn (gen_rtx_SET (x, y)));
|
||||
/* The move pattern may require scratch registers, so convert them
|
||||
into real registers now. */
|
||||
if (insn != NULL_RTX)
|
||||
|
Loading…
Reference in New Issue
Block a user