Commit c07a0a22 by Vladimir Makarov Committed by Vladimir Makarov

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

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

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

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

	PR rtl-optimization/89676
	* gcc.target/i386/pr89676.c: New.

From-SVN: r269878
parent eca5f925
2019-03-22 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/89676
* lra-constraints.c (curr_insn_transform): Do match reload for
early clobbers even if the match was successful.
2019-03-22 Jakub Jelinek <jakub@redhat.com>
PR c++/87481
......
......@@ -4256,6 +4256,20 @@ curr_insn_transform (bool check_only_p)
|| MEM_P (SET_DEST (curr_insn_set))
|| GET_CODE (SET_DEST (curr_insn_set)) == SUBREG))))
optional_p = true;
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))
{
/* 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;
continue;
}
else
continue;
}
......
2019-03-22 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/89676
* gcc.target/i386/pr89676.c: New.
2019-03-22 Jakub Jelinek <jakub@redhat.com>
PR c++/60702
......
/* PR rtl-optimization/89676 */
/* { dg-do compile } */
/* { dg-options "-O2 -m32 -march=i686" } */
unsigned long long
foo (unsigned long long i)
{
return i << 3;
}
/* { dg-final { scan-assembler-times "movl" 2 } } */
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