diff -uprN a/gcc/testsuite/gcc.target/aarch64/sve/slp_fix_1.c b/gcc/testsuite/gcc.target/aarch64/sve/slp_fix_1.c --- a/gcc/testsuite/gcc.target/aarch64/sve/slp_fix_1.c 1970-01-01 08:00:00.000000000 +0800 +++ b/gcc/testsuite/gcc.target/aarch64/sve/slp_fix_1.c 2020-11-17 02:38:45.284000000 +0800 @@ -0,0 +1,19 @@ +/* { dg-do compiler} */ +/* { dg-options "-O2 -ftree-vectorize -msve-vector-bits=256 -funsafe-math-optimizations" } */ + +long a, b; +float c, e; +float *d; +void f() { + float g, h, i, j; + b = 0; + for (; b < a; b++) { + i = d[0]; + g = g + i * e; + j = d[1]; + h = h - j * e; + d = d + 2; + } + c = g; + e = h; +} diff -uprN a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c --- a/gcc/tree-vect-slp.c 2020-11-16 10:59:36.000000000 +0800 +++ b/gcc/tree-vect-slp.c 2020-11-16 23:30:19.560000000 +0800 @@ -4140,8 +4140,8 @@ vect_schedule_slp_instance (slp_tree nod gimple *vstmt; vstmt = gimple_build_assign (make_ssa_name (vectype), VEC_PERM_EXPR, - gimple_assign_lhs (v0[j]->stmt), - gimple_assign_lhs (v1[j]->stmt), + gimple_get_lhs (v0[j]->stmt), + gimple_get_lhs (v1[j]->stmt), tmask); SLP_TREE_VEC_STMTS (node).quick_push (vect_finish_stmt_generation (stmt_info, vstmt, &si));