r279753 - in /trunk/gcc: ChangeLog testsuite/Ch...
rsandifo@gcc.gnu.org
rsandifo@gcc.gnu.org
Sun Dec 29 09:28:00 GMT 2019
Author: rsandifo
Date: Sun Dec 29 09:28:34 2019
New Revision: 279753
URL: https://gcc.gnu.org/viewcvs?rev=279753&root=gcc&view=rev
Log:
Unshare DR_STEP before gimplifying it
In this testcase we use an unmasked SVE loop with an Advanced SIMD
epilogue (because we don't yet support fully-masked downward loops).
The main loop uses a gather load for the strided access while the
epilogue loop builds the access from scalars instead. In both cases
we gimplify expressions based on the DR_STEP and insert them in the
loop preheader.
The problem was that the gather load code didn't copy the DR_STEP before
gimplifying it, meaning that the epilogue loop tried to reuse a result
from the (non-dominating) main loop preheader.
It looks at first glance like there could be other instances of this too,
but this patch just deals with the gather/scatter case.
2019-12-29 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-stmts.c (vect_get_strided_load_store_ops): Copy
DR_STEP before gimplifying it.
gcc/testsuite/
* gcc.dg/vect/vect-strided-epilogue-1.c: New test.
Added:
trunk/gcc/testsuite/gcc.dg/vect/vect-strided-epilogue-1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-stmts.c
More information about the Gcc-cvs
mailing list