]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
openmp: Fix initialization for 'unroll full'
authorFrederik Harwath <frederik@codesourcery.com>
Thu, 4 May 2023 16:09:23 +0000 (18:09 +0200)
committerFrederik Harwath <frederik@codesourcery.com>
Thu, 4 May 2023 16:09:23 +0000 (18:09 +0200)
The index variable initialization for the 'omp unroll'
directive with 'full' clause got lost and the testsuite
did not catch it.

Add the initialization and add -Wall to some tests
to detect uninitialized variable uses and other
potential problems in the code generation.

gcc/ChangeLog:

* omp-transform-loops.cc (full_unroll): Add initialization of index variable.

libgomp/ChangeLog:

* testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-unroll-full-1.c:
Use -Wall and add -Wno-unknown-pragmas to disable warnings about empty pragmas.
Use -O2.
* testsuite/libgomp.c++/loop-transforms/matrix-no-directive-unroll-full-1.C:
Copy of testsuite/libgomp.c-c++-common/matrix-no-directive-unroll-full-1.c,
but using -O0 which works only for C++.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-1.c: Use -Wall
and use -Wno-unknown-pragmas to disable warnings about empty pragmas.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-distribute-parallel-for-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-for-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-for-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-simd-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-parallel-for-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-teams-distribute-parallel-for-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-taskloop-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-teams-distribute-parallel-for-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/matrix-simd-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rect-1.c:
Likewise.
* testsuite/libgomp.c-c++-common/loop-transforms/unroll-1.c:
Likewise and fix broken function calls found by -Wall.

18 files changed:
gcc/ChangeLog.omp
gcc/omp-transform-loops.cc
libgomp/ChangeLog.omp
libgomp/testsuite/libgomp.c++/loop-transforms/matrix-no-directive-unroll-full-1.C [new file with mode: 0644]
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-unroll-full-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-distribute-parallel-for-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-for-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-for-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-simd-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-parallel-for-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-teams-distribute-parallel-for-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-taskloop-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-teams-distribute-parallel-for-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/matrix-simd-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-1.c
libgomp/testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rect-1.c

index c8a12d108840725d09b47d59b39f83a828c7145d..d70e905d36e35ba175f5d8e667450135bd1ae4bb 100644 (file)
@@ -1,3 +1,7 @@
+2023-05-04  Frederik Harwath  <frederik@codesourcery.com>
+
+       * omp-transform-loops.cc (full_unroll): Add initialization of index variable.
+
 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
 
        * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
index ce8e8f3d0931ba00127267601ccde5fe4f6ace4a..f589c31519f41b8d01c7175a120e2e0080008c00 100644 (file)
@@ -542,6 +542,7 @@ full_unroll (gomp_for *omp_for, location_t loc, walk_ctx *ctx ATTRIBUTE_UNUSED)
 
   gimple_seq unrolled = NULL;
   gimple_seq_add_seq (&unrolled, gimple_omp_for_pre_body (omp_for));
+  gimplify_assign (index, init, &unrolled);
   push_gimplify_context ();
   gimple_seq_add_seq (&unrolled,
                      build_unroll_body (body, unroll_factor, index, incr));
index 9cca6a97666da65a89cca05ad2196e8203e21149..39346957c6fbc17b7faa017861f45ccaebdfe52c 100644 (file)
@@ -1,3 +1,38 @@
+2023-05-04  Frederik Harwath  <frederik@codesourcery.com>
+
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-unroll-full-1.c:
+       Use -Wall and add -Wno-unknown-pragmas to disable warnings about empty pragmas.
+       Use -O2.
+       * testsuite/libgomp.c++/loop-transforms/matrix-no-directive-unroll-full-1.C:
+       Copy of testsuite/libgomp.c-c++-common/matrix-no-directive-unroll-full-1.c,
+       but using -O0 which works only for C++.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-no-directive-1.c: Use -Wall
+       and use -Wno-unknown-pragmas to disable warnings about empty pragmas.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-distribute-parallel-for-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-for-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-for-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-parallel-masked-taskloop-simd-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-parallel-for-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-target-teams-distribute-parallel-for-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-taskloop-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-omp-teams-distribute-parallel-for-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/matrix-simd-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/unroll-non-rect-1.c:
+       Likewise.
+       * testsuite/libgomp.c-c++-common/loop-transforms/unroll-1.c:
+       Likewise and fix broken function calls found by -Wall.
+
 2023-04-25  Frederik Harwath  <frederik@codesourcery.com>
 
        * testsuite/libgomp.fortran/loop-transforms/tile-2.f90: Add reduction clause.
diff --git a/libgomp/testsuite/libgomp.c++/loop-transforms/matrix-no-directive-unroll-full-1.C b/libgomp/testsuite/libgomp.c++/loop-transforms/matrix-no-directive-unroll-full-1.C
new file mode 100644 (file)
index 0000000..3a68421
--- /dev/null
@@ -0,0 +1,13 @@
+/* { dg-additional-options { -O0 -fdump-tree-original -Wall -Wno-unknown-pragmas } } */
+
+#define COMMON_DIRECTIVE
+#define COMMON_TOP_TRANSFORM omp unroll full
+#define COLLAPSE_1
+#define COLLAPSE_2
+#define COLLAPSE_3
+#define IMPLEMENTATION_FILE "../../libgomp.c-c++-common/loop-transforms/matrix-constant-iter.h"
+
+#include "../../libgomp.c-c++-common/loop-transforms/matrix-transform-variants-1.h"
+
+/* A consistency check to prevent broken macro usage. */
+/* { dg-final { scan-tree-dump-times "unroll_full" 13 "original" } } */
index 9f7f02041b005caf6c79fbb6f3fff43b10e0412e..7904a5617f3f308cb35778cb66cf0e23e03aeee9 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-additional-options {-fdump-tree-original} } */
+/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragmas } } */
 
 #define COMMON_DIRECTIVE
 #define COLLAPSE_1 collapse(1)
index 5dd0b5d29899744bc8858738fb05f37b6ae01e3d..bd431a25102091c09309df1c3dbeda6d3da0f986 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-additional-options {-fdump-tree-original} } */
+/* { dg-additional-options { -O2 -fdump-tree-original -Wall -Wno-unknown-pragmas } } */
 
 #define COMMON_DIRECTIVE
 #define COMMON_TOP_TRANSFORM omp unroll full
index d855857e5ee329d0bb59ba50fd941d46afa5d969..3875014dc967838585080d52139498351e761aad 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #define COMMON_DIRECTIVE "omp teams distribute parallel for"
 #define COLLAPSE_1 "collapse(1)"
 #define COLLAPSE_2 "collapse(2)"
index f2a2b80b2fd26df020dfc1ca194f49e3e3b5b3e7..671396cd53303ce7feffcff379e460ea72b55b51 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-additional-options {-fdump-tree-original} } */
+/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragmas } } */
 
 #define COMMON_DIRECTIVE omp for
 #define COLLAPSE_1 collapse(1)
index 2c5701efca42de33694a02505aa454be907a50a0..cc66df42679e60031289f6fc4050f27bee0d76ff 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-additional-options {-fdump-tree-original} } */
+/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragmas } } */
 
 #define COMMON_DIRECTIVE omp parallel for
 #define COLLAPSE_1 collapse(1)
index e2def212725a76dd3e6ab1242a9012d71ac2629b..890b460f374f9594b886faec948768d771d408e3 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #define COMMON_DIRECTIVE omp parallel masked taskloop
 #define COLLAPSE_1 collapse(1)
 #define COLLAPSE_2 collapse(2)
index ce601555cfb4e22707b7a2031459db4c948106a2..74f6271504a20ad19ac0931bfffad1af90ec2ae6 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #define COMMON_DIRECTIVE omp parallel masked taskloop simd
 #define COLLAPSE_1 collapse(1)
 #define COLLAPSE_2 collapse(2)
index 365b39ba3856b1e356ed26c645cfd6d64b04a82c..8138ea57f382d8db6189b3ff2e29933567ec1f1c 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-additional-options {-fdump-tree-original} } */
+/* { dg-additional-options { -fdump-tree-original -Wall -Wno-unknown-pragmas } } */
 
 #define COMMON_DIRECTIVE omp target parallel for map(tofrom:result[0:dim0*dim1]) map(to:matrix1[0:dim0*dim1], matrix2[0:dim0*dim1])
 #define COLLAPSE_1 collapse(1)
index 8afe34874c9eb65a9fd8e3f3f4588a3753cd508f..d4d162d9c2b77e75734288ca93b5962935391ee2 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #define COMMON_DIRECTIVE omp target teams distribute parallel for map(tofrom:result[:dim0*dim1]) map(to:matrix1[0:dim0*dim1], matrix2[0:dim0*dim1])
 #define COLLAPSE_1 collapse(1)
 #define COLLAPSE_2 collapse(2)
index bbc78b39db0918bf122154f892adc7e166d1d40f..28edb6ce83e63c3f1e8f9b34ebd2531536b69682 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #define COMMON_DIRECTIVE omp taskloop
 #define COLLAPSE_1 collapse(1)
 #define COLLAPSE_2 collapse(2)
index 3a58e4793748500c991ad3cb898ddf6a56dfd47f..481a20a18d0b994456e62f5f477f2f6fd3cf2713 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #define COMMON_DIRECTIVE omp teams distribute parallel for
 #define COLLAPSE_1 collapse(1)
 #define COLLAPSE_2 collapse(2)
index e5155dcf76d13cada3828d437046ad15cd096866..200ddd859f5eaddade1c20a29f4a4d1c6f55c744 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #define COMMON_DIRECTIVE omp simd
 #define COLLAPSE_1 collapse(1)
 #define COLLAPSE_2 collapse(2)
index 2ac0fff16af8a8c6c572bfad31265e56e3ad1e80..eb5d3d77eb842bfee64536010344df2e5a6bd746 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #include <stdio.h>
 
 int compute_sum1 ()
@@ -11,7 +13,7 @@ int compute_sum1 ()
     sum++;
 
   if (j != 7)
-    __builtin_abort;
+    __builtin_abort ();
 
   return sum;
 }
@@ -27,7 +29,7 @@ int compute_sum2()
     sum++;
 
   if (j != 7)
-    __builtin_abort;
+    __builtin_abort ();
 
   return sum;
 }
@@ -43,7 +45,7 @@ int compute_sum3()
     sum++;
 
   if (j != 7)
-    __builtin_abort;
+    __builtin_abort ();
 
   return sum;
 }
index 2f9924aea1f65ea57afa3720035de30183ad15d0..7bd9b9062354c73acbe225f4fb0c8bf17c3616b4 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options { -Wall -Wno-unknown-pragmas } } */
+
 #include <stdio.h>
 #include <stdlib.h>