Commit 39259462 by Jakub Jelinek Committed by Jakub Jelinek

re PR rtl-optimization/80500 (ICE: internal consistency failure (error: invalid…

re PR rtl-optimization/80500 (ICE: internal consistency failure (error: invalid rtl sharing found in the insn))

	PR rtl-optimization/80500
	* loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
	sum's initial value.

	* gcc.dg/pr80500.c: New test.

From-SVN: r247126
parent 904588d8
2017-04-25 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/80500
* loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
sum's initial value.
2017-04-25 Julian Brown <julian@codesourcery.com> 2017-04-25 Julian Brown <julian@codesourcery.com>
Naveen H.S <Naveen.Hurugalawadi@cavium.com> Naveen H.S <Naveen.Hurugalawadi@cavium.com>
......
...@@ -1913,6 +1913,9 @@ combine_var_copies_in_loop_exit (struct var_to_expand *ve, basic_block place) ...@@ -1913,6 +1913,9 @@ combine_var_copies_in_loop_exit (struct var_to_expand *ve, basic_block place)
if (ve->var_expansions.length () == 0) if (ve->var_expansions.length () == 0)
return; return;
/* ve->reg might be SUBREG or some other non-shareable RTL, and we use
it both here and as the destination of the assignment. */
sum = copy_rtx (sum);
start_sequence (); start_sequence ();
switch (ve->op) switch (ve->op)
{ {
......
2017-04-25 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/80500
* gcc.dg/pr80500.c: New test.
2017-04-25 Marc Glisse <marc.glisse@inria.fr> 2017-04-25 Marc Glisse <marc.glisse@inria.fr>
* gcc.dg/tree-ssa/cmpmul-1.c: New file. * gcc.dg/tree-ssa/cmpmul-1.c: New file.
......
/* PR rtl-optimization/80500 */
/* { dg-do compile } */
/* { dg-options "-O2 -funroll-loops -ftree-loop-if-convert -fvariable-expansion-in-unroller" } */
signed char v;
void
foo (int x)
{
while (x != 0)
{
v = (x >= 0) + 1;
++x;
}
}
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