[gcc(refs/users/guojiufu/heads/personal-branch)] testcase for shared DR alignment

Jiu Fu Guo guojiufu@gcc.gnu.org
Sat Jun 13 03:01:52 GMT 2020


https://gcc.gnu.org/g:4544793ef618484b2cc753a4635ab79b361f8df8

commit 4544793ef618484b2cc753a4635ab79b361f8df8
Author: Richard Biener <rguenther@suse.de>
Date:   Fri Jun 12 13:02:56 2020 +0200

    testcase for shared DR alignment
    
    This adds a reduced C testcase from libgomp.fortran/examples-4/target-1.f90
    and libgomp.fortran/examples-4/target_data-1.f90 FAILs, showing a case
    of SLP instance stmt sharing that affects the shared dataref alignment
    info.
    
    2020-06-12  Richard Biener  <rguenther@suse.de>
    
            * gcc.dg/vect/bb-slp-44.c: New testcase.

Diff:
---
 gcc/testsuite/gcc.dg/vect/bb-slp-44.c | 41 +++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-44.c b/gcc/testsuite/gcc.dg/vect/bb-slp-44.c
new file mode 100644
index 00000000000..dfa0a5eaaab
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-44.c
@@ -0,0 +1,41 @@
+/* { dg-do run } */
+
+typedef struct {
+    unsigned long a;
+    unsigned long b;
+    unsigned long c;
+} data_o;
+typedef struct {
+    unsigned long c;
+    unsigned long gap1;
+    unsigned long b;
+    unsigned long gap2;
+    unsigned long a;
+    unsigned long x;
+} data_i;
+
+volatile unsigned long gx;
+void __attribute__((noipa))
+bar(unsigned long x)
+{
+  gx = x;
+}
+
+void __attribute__((noipa))
+foo(data_o *o, data_i *i)
+{
+  o->a = i->a;
+  o->b = i->b;
+  o->c = i->c;
+  bar (i->x);
+}
+
+int main()
+{
+  unsigned long data[9];
+  if ((__UINTPTR_TYPE__)data & 15 != 0)
+    foo ((data_o *)&data[6], (data_i *)data);
+  else
+    foo ((data_o *)data, (data_i *)&data[3]);
+  return 0;
+}


More information about the Gcc-cvs mailing list