public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Bin.Cheng" <amker.cheng@gmail.com>
Cc: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH GCC][4/6]Relax minimal segment length of DR_B for merging alias check
Date: Thu, 25 May 2017 15:18:00 -0000	[thread overview]
Message-ID: <CAHFci2-8TUj6V=D32FPB1U=Jmk2p5G2m4Xt+yU4ur7-vT4tJsA@mail.gmail.com> (raw)
In-Reply-To: <VI1PR0802MB21767EFC1F51E418D29A9040E7F90@VI1PR0802MB2176.eurprd08.prod.outlook.com>

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

On Tue, May 23, 2017 at 5:23 PM, Bin Cheng <Bin.Cheng@arm.com> wrote:
> 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?
Updated patch wrto change of previous patch.

Bootstrap and test on x86_64 and AArch64.

Thanks,
bin
>
> 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-20170519.txt --]
[-- Type: text/plain, Size: 2229 bytes --]

From 654996fde92852a50c49fefeff79489e01d7db97 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-20170519.txt

---
 gcc/testsuite/gcc.dg/vect/pr80815-3.c | 45 +++++++++++++++++++++++++++++++++++
 gcc/tree-data-ref.c                   |  4 +++-
 2 files changed, 48 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 1a28000..0b5fd1b 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -1287,7 +1287,9 @@ prune_runtime_alias_test_list (vec<dr_with_seg_len_pair_t> *alias_pairs,
 		min_seg_len_b = wi::neg (min_seg_len_b);
 	    }
 	  else
-	    min_seg_len_b = wi::uhwi (factor, TYPE_PRECISION (sizetype));
+	    {
+	      min_seg_len_b = wi::mul (factor, wi::abs (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-25 15:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-23 17:06 Bin Cheng
2017-05-25 15:18 ` Bin.Cheng [this message]
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='CAHFci2-8TUj6V=D32FPB1U=Jmk2p5G2m4Xt+yU4ur7-vT4tJsA@mail.gmail.com' \
    --to=amker.cheng@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    /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).