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
+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>
Naveen H.S <Naveen.Hurugalawadi@cavium.com>
if (ve->var_expansions.length () == 0)
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 ();
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>
* gcc.dg/tree-ssa/cmpmul-1.c: New file.
--- /dev/null
+/* 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;
+ }
+}