Commit 33163a62 by Vladimir Makarov Committed by Vladimir Makarov

re PR rtl-optimization/89676 (Redundant moves for long long shift on 32bit x86)

2019-03-25  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/89676
	* lra-constraints.c (curr_insn_transform): Do match reload for
	early clobbers when the match was successful only for different
	registers.

From-SVN: r269924
parent 0abbc99c
2019-03-25 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/89676
* lra-constraints.c (curr_insn_transform): Do match reload for
early clobbers when the match was successful only for different
registers.
2019-03-25 Martin Sebor <msebor@redhat.com>
* doc/extend.texi (Common Type Attributes): Document vector_size.
......
......@@ -4259,15 +4259,27 @@ curr_insn_transform (bool check_only_p)
else if (goal_alt_matched[i][0] != -1
&& curr_static_id->operand[i].type == OP_OUT
&& (curr_static_id->operand_alternative
[goal_alt_number * n_operands + i].earlyclobber))
[goal_alt_number * n_operands + i].earlyclobber)
&& REG_P (op))
{
/* Generate reloads for output and matched inputs. This
is the easiest way to avoid creation of non-existing
conflicts in lra-lives.c. */
match_reload (i, goal_alt_matched[i], outputs, goal_alt[i], &before,
&after, TRUE);
outputs[n_outputs++] = i;
outputs[n_outputs] = -1;
for (j = 0; goal_alt_matched[i][j] != -1; j++)
{
rtx op2 = *curr_id->operand_loc[goal_alt_matched[i][j]];
if (REG_P (op2) && REGNO (op) != REGNO (op2))
break;
}
if (goal_alt_matched[i][j] != -1)
{
/* Generate reloads for different output and matched
input registers. This is the easiest way to avoid
creation of non-existing register conflicts in
lra-lives.c. */
match_reload (i, goal_alt_matched[i], outputs, goal_alt[i], &before,
&after, TRUE);
outputs[n_outputs++] = i;
outputs[n_outputs] = -1;
}
continue;
}
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment