new file mode 100644
@@ -0,0 +1,45 @@
+/* { dg-require-effective-target vect_int } */
+
+#include "tree-vect.h"
+int arr[2048];
+int res[100] = { 2148, 2146, 2144, 2142, 2140, 2138, 2136, 2134, 2132, 2130,
+ 2128, 2126, 2124, 2122, 2120, 2118, 2116, 2114, 2112, 2110,
+ 2108, 2106, 2104, 2102, 2100, 2098, 2096, 2094, 2092, 2090,
+ 2088, 2086, 2084, 2082, 2080, 2078, 2076, 2074, 2072, 2070,
+ 2068, 2066, 2064, 2062, 2060, 2058, 2056, 2054, 3078, 2050};
+
+__attribute__ ((noinline)) int
+foo (int *a, int *b, int len)
+{
+ int i;
+ int *a1 = a;
+ int *a0 = a1 - 4;
+ for (i = 0; i < len; i++)
+ {
+ *b = *a0 + *a1;
+ b--;
+ a0++;
+ a1++;
+ }
+ return 0;
+}
+
+int main (void)
+{
+ int *a = &arr[1027];
+ int *b = &arr[1024];
+
+ int i;
+ for (i = 0; i < 2048; i++)
+ arr[i] = i;
+
+ foo (a, b, 50);
+
+ for (i = 975; i < 1025; i++)
+ if (arr[i] != res[i - 975])
+ abort ();
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump "improved number of alias checks from \[0-9\]* to 1" "vect" } } */
@@ -1286,7 +1286,10 @@ prune_runtime_alias_test_list (vec<dr_with_seg_len_pair_t> *alias_pairs,
min_seg_len_b = 0 - min_seg_len_b;
}
else
- min_seg_len_b = factor;
+ {
+ min_seg_len_b = factor;
+ min_seg_len_b *= absu_hwi (tree_to_shwi (DR_STEP (dr_b1->dr)));
+ }
/* Now we try to merge alias check dr_a1 & dr_b and dr_a2 & dr_b.
Hi, As commented in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80815#c1, We can relax minimal segment length of DR_B for merging. With this change, the new test can be improved to only one alias check. Note the condition is still accurate after this patch, it won't introduce false alias. Bootstrap and test on x86_64 and AArch64, is it OK? 2017-05-22 Bin Cheng <bin.cheng@arm.com> * tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal segment length for dr_b. gcc/testsuite/ChangeLog 2017-05-22 Bin Cheng <bin.cheng@arm.com> * gcc.dg/vect/pr80815-3.c: New test. From 8a570eb93cfaff6fcecdce6b91dd665a81d38e29 Mon Sep 17 00:00:00 2001 From: Bin Cheng <binche01@e108451-lin.cambridge.arm.com> Date: Mon, 22 May 2017 11:34:18 +0100 Subject: [PATCH 4/6] minimal-seg-length-for-dr_b-20170516.txt --- gcc/testsuite/gcc.dg/vect/pr80815-3.c | 45 +++++++++++++++++++++++++++++++++++ gcc/tree-data-ref.c | 5 +++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/vect/pr80815-3.c