Fix gather/scatter check when updating a vector epilogue loop
authorRichard Sandiford <richard.sandiford@arm.com>
Fri, 10 Jan 2020 14:56:20 +0000 (14:56 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 10 Jan 2020 14:56:20 +0000 (14:56 +0000)
update_epilogue_loop_vinfo applies SSA renmaing to the DR_REF of a
gather or scatter, so that vect_check_gather_scatter continues to work.
However, we sometimes also rely on vect_check_gather_scatter when
using gathers and scatters to implement strided accesses.

This showed up on existing tests when testing with fixed-length
-msve-vector-bits=128.

2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
for any type of gather or scatter, including strided accesses.

From-SVN: r280111

gcc/ChangeLog
gcc/tree-vect-loop.c

index f8298abebd7d7545327d320c59ede345b15e7b12..28564f723e18ea2127a94ed697d123576ca0224b 100644 (file)
@@ -1,3 +1,8 @@
+2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
+       for any type of gather or scatter, including strided accesses.
+
 2020-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
 
        * tree-vectorizer.h (get_dr_vinfo_offset): Add missing function
index 596eafc2d3f056447d2c683241d711bd53601c11..1fa3ba6d932e594bdafbbe52cb1c6ef39312dbc3 100644 (file)
@@ -8451,7 +8451,7 @@ update_epilogue_loop_vinfo (class loop *epilogue, tree advance)
         updated offset we set using ADVANCE.  Instead we have to make sure the
         reference in the data references point to the corresponding copy of
         the original in the epilogue.  */
-      if (STMT_VINFO_GATHER_SCATTER_P (stmt_vinfo))
+      if (STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_vinfo) == VMAT_GATHER_SCATTER)
        {
          DR_REF (dr)
            = simplify_replace_tree (DR_REF (dr), NULL_TREE, NULL_TREE,