Hi,
We now determine depnedencies across union fields correctly so 2 instead
of 1 loops are vectorized.
regtsted x86_64-linux, comitted.
* gcc.dg/vect/vect-35-big-array.c: Excpect 2 loops to be vectorized.
* gcc.dg/vect/vect-35.c: Excpect 2 loops to be vectorized.
diff --git a/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
b/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
index ca57a10f714..28a99c910fd 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
@@ -20,10 +20,6 @@ int main1 ()
s.b[i] = i;
}
- /* Dependence analysis fails cause s.a and s.b may overlap.
- Try to use runtime aliasing test with versioning, and
- later versioning/vectorization are skipped because the
- overlap is proven at compilation time. */
for (i = 0; i < N; i++)
{
s.a[i] = s.b[i] + 1;
@@ -47,5 +43,4 @@ int main (void)
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail {
ia64-*-* sparc*-*-* } } } } */
-/* { dg-final { scan-tree-dump "can't determine dependence between" "vect" } }
*/
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail {
ia64-*-* sparc*-*-* } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-35.c
b/gcc/testsuite/gcc.dg/vect/vect-35.c
index 76fe32d68ad..a7ec0f16d4c 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-35.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-35.c
@@ -20,10 +20,6 @@ int main1 ()
s.b[i] = i;
}
- /* Dependence analysis fails cause s.a and s.b may overlap.
- Try to use runtime aliasing test with versioning, and
- later versioning/vectorization are skipped because the
- overlap is proven at compilation time. */
for (i = 0; i < N; i++)
{
s.a[i] = s.b[i] + 1;
@@ -47,5 +43,4 @@ int main (void)
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail {
ia64-*-* sparc*-*-* } } } } */
-/* { dg-final { scan-tree-dump "can't determine dependence between" "vect" } }
*/
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail {
ia64-*-* sparc*-*-* } } } } */