mirror of git://gcc.gnu.org/git/gcc.git
tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Do not consider dependences between accesses that belong to the same group.
2016-06-15 Richard Biener <rguenther@suse.de> * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Do not consider dependences between accesses that belong to the same group. (vect_analyze_data_ref_dependences): Do not analyze read-read or self-dependences. * gcc.dg/vect/bb-slp-pattern-2.c: Disable loop vectorization. From-SVN: r237473
This commit is contained in:
parent
6a3f203c3c
commit
2a5825f23b
|
|
@ -1,3 +1,11 @@
|
||||||
|
2016-06-15 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Do
|
||||||
|
not consider dependences between accesses that belong to the
|
||||||
|
same group.
|
||||||
|
(vect_analyze_data_ref_dependences): Do not analyze read-read
|
||||||
|
or self-dependences.
|
||||||
|
|
||||||
2016-06-14 David Malcolm <dmalcolm@redhat.com>
|
2016-06-14 David Malcolm <dmalcolm@redhat.com>
|
||||||
|
|
||||||
* spellcheck-tree.c: Include spellcheck-tree.h rather than
|
* spellcheck-tree.c: Include spellcheck-tree.h rather than
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
2016-06-15 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
* gcc.dg/vect/bb-slp-pattern-2.c: Disable loop vectorization.
|
||||||
|
|
||||||
2016-06-14 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
2016-06-14 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||||
|
|
||||||
* gcc.target/powerpc/vsx-elemrev-2.c: Change effective target
|
* gcc.target/powerpc/vsx-elemrev-2.c: Change effective target
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
/* { dg-require-effective-target vect_condition } */
|
/* { dg-require-effective-target vect_condition } */
|
||||||
|
/* { dg-additional-options "-fno-tree-vectorize -ftree-slp-vectorize -ftree-loop-if-convert" } */
|
||||||
|
|
||||||
#include "tree-vect.h"
|
#include "tree-vect.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -227,6 +227,12 @@ vect_analyze_data_ref_dependence (struct data_dependence_relation *ddr,
|
||||||
|| (DR_IS_READ (dra) && DR_IS_READ (drb)))
|
|| (DR_IS_READ (dra) && DR_IS_READ (drb)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* We do not have to consider dependences between accesses that belong
|
||||||
|
to the same group. */
|
||||||
|
if (GROUP_FIRST_ELEMENT (stmtinfo_a)
|
||||||
|
&& GROUP_FIRST_ELEMENT (stmtinfo_a) == GROUP_FIRST_ELEMENT (stmtinfo_b))
|
||||||
|
return false;
|
||||||
|
|
||||||
/* Even if we have an anti-dependence then, as the vectorized loop covers at
|
/* Even if we have an anti-dependence then, as the vectorized loop covers at
|
||||||
least two scalar iterations, there is always also a true dependence.
|
least two scalar iterations, there is always also a true dependence.
|
||||||
As the vectorizer does not re-order loads and stores we can ignore
|
As the vectorizer does not re-order loads and stores we can ignore
|
||||||
|
|
@ -469,7 +475,7 @@ vect_analyze_data_ref_dependences (loop_vec_info loop_vinfo, int *max_vf)
|
||||||
LOOP_VINFO_NO_DATA_DEPENDENCIES (loop_vinfo) = true;
|
LOOP_VINFO_NO_DATA_DEPENDENCIES (loop_vinfo) = true;
|
||||||
if (!compute_all_dependences (LOOP_VINFO_DATAREFS (loop_vinfo),
|
if (!compute_all_dependences (LOOP_VINFO_DATAREFS (loop_vinfo),
|
||||||
&LOOP_VINFO_DDRS (loop_vinfo),
|
&LOOP_VINFO_DDRS (loop_vinfo),
|
||||||
LOOP_VINFO_LOOP_NEST (loop_vinfo), true))
|
LOOP_VINFO_LOOP_NEST (loop_vinfo), false))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FOR_EACH_VEC_ELT (LOOP_VINFO_DDRS (loop_vinfo), i, ddr)
|
FOR_EACH_VEC_ELT (LOOP_VINFO_DDRS (loop_vinfo), i, ddr)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue