[gcc r13-6467] analyzer: start adding test coverage for OpenMP [PR109016]

David Malcolm dmalcolm@gcc.gnu.org
Fri Mar 3 23:19:34 GMT 2023


https://gcc.gnu.org/g:df0184906a7b86a497c038766366904a20b5601e

commit r13-6467-gdf0184906a7b86a497c038766366904a20b5601e
Author: David Malcolm <dmalcolm@redhat.com>
Date:   Fri Mar 3 18:18:51 2023 -0500

    analyzer: start adding test coverage for OpenMP [PR109016]
    
    gcc/testsuite/ChangeLog:
            PR analyzer/109016
            * gcc.dg/analyzer/omp-parallel-for-1.c: New test.
            * gcc.dg/analyzer/omp-parallel-for-get-min.c: New test.
    
    Signed-off-by: David Malcolm <dmalcolm@redhat.com>

Diff:
---
 gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-1.c | 21 +++++++++++++++++++
 .../gcc.dg/analyzer/omp-parallel-for-get-min.c     | 24 ++++++++++++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-1.c b/gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-1.c
new file mode 100644
index 00000000000..dae940dac20
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-1.c
@@ -0,0 +1,21 @@
+/* { dg-additional-options "-fopenmp -Wall" } */
+
+typedef struct _Image
+{
+  int columns, rows;
+} Image;
+
+extern int get_num_threads(void);
+
+void
+test (Image* image)
+{
+  int y;
+
+#pragma omp parallel for schedule(static) \
+  num_threads(get_num_threads ())
+
+  for (y = 0; y < image->rows; y++) {
+    /* [...snip...] */
+  }
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-get-min.c b/gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-get-min.c
new file mode 100644
index 00000000000..a7e64e1a3a8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-get-min.c
@@ -0,0 +1,24 @@
+/* Reduced from ImageMagick-7.1.0-57's MagickCore/attribute.c: GetEdgeBackgroundColor */
+
+/* { dg-additional-options "-fopenmp -Wall" } */
+
+extern double get_census (void);
+
+double
+test()
+{
+  double census[4], edge_census;
+  int i;
+
+#pragma omp parallel for schedule(static)
+
+  for (i = 0; i < 4; i++) {
+    census[i] = get_census ();
+  }
+  edge_census = (-1.0);
+  for (i = 0; i < 4; i++)
+    if (census[i] > edge_census) { /* { dg-bogus "use of uninitialized value" } */
+      edge_census = census[i];
+    }
+  return edge_census;
+}


More information about the Gcc-cvs mailing list