public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Bin Cheng <Bin.Cheng@arm.com>
To: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>
Cc: nd <nd@arm.com>
Subject: [PATCH GCC][4/6]Relax minimal segment length of DR_B for merging alias check
Date: Tue, 23 May 2017 17:06:00 -0000	[thread overview]
Message-ID: <VI1PR0802MB21767EFC1F51E418D29A9040E7F90@VI1PR0802MB2176.eurprd08.prod.outlook.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 604 bytes --]

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.

[-- Attachment #2: 0004-minimal-seg-length-for-dr_b-20170516.txt --]
[-- Type: text/plain, Size: 2217 bytes --]

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

diff --git a/gcc/testsuite/gcc.dg/vect/pr80815-3.c b/gcc/testsuite/gcc.dg/vect/pr80815-3.c
new file mode 100644
index 0000000..dae01fa
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr80815-3.c
@@ -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" } } */
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index f0799d9..5d9054d 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -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.
 
-- 
1.9.1


             reply	other threads:[~2017-05-23 16:23 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-23 17:06 Bin Cheng [this message]
2017-05-25 15:18 ` Bin.Cheng
2017-05-30 11:29   ` Richard Biener
2017-05-30 15:34     ` Bin.Cheng
2017-05-31  7:33       ` Richard Biener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=VI1PR0802MB21767EFC1F51E418D29A9040E7F90@VI1PR0802MB2176.eurprd08.prod.outlook.com \
    --to=bin.cheng@arm.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=nd@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).