summaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-02-05 11:32:37 +0100
committerJakub Jelinek <jakub@redhat.com>2020-02-05 11:32:37 +0100
commitb843bcb89519293404bb00d2ed09aae529b54d7f (patch)
treebcc9c051915ffe04939c1c31d9460d9bcf97d08f /gcc/testsuite/c-c++-common
parent27736735f6fcba464b90c3a9dff13b7e5c8bdc6e (diff)
openmp: Avoid ICEs with declare simd; declare simd inbranch [PR93555]
The testcases ICE because when processing the declare simd inbranch, we don't create the i == 0 clone as it already exists, which means clone_info->nargs is not adjusted, but we then rely on it being adjusted when trying other clones. 2020-02-05 Jakub Jelinek <jakub@redhat.com> PR middle-end/93555 * omp-simd-clone.c (expand_simd_clones): If simd_clone_mangle or simd_clone_create failed when i == 0, adjust clone->nargs by clone->inbranch. * c-c++-common/gomp/pr93555-1.c: New test. * c-c++-common/gomp/pr93555-2.c: New test. * gfortran.dg/gomp/pr93555.f90: New test.
Diffstat (limited to 'gcc/testsuite/c-c++-common')
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr93555-1.c18
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr93555-2.c16
2 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/c-c++-common/gomp/pr93555-1.c b/gcc/testsuite/c-c++-common/gomp/pr93555-1.c
new file mode 100644
index 00000000000..2eb76a2d9de
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr93555-1.c
@@ -0,0 +1,18 @@
+/* PR middle-end/93555 */
+/* { dg-do compile } */
+
+#pragma omp declare simd
+#pragma omp declare simd inbranch
+int
+foo (int x)
+{
+ return x;
+}
+
+#pragma omp declare simd inbranch
+#pragma omp declare simd
+int
+bar (int x)
+{
+ return x;
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr93555-2.c b/gcc/testsuite/c-c++-common/gomp/pr93555-2.c
new file mode 100644
index 00000000000..091f5bd5ff1
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr93555-2.c
@@ -0,0 +1,16 @@
+/* PR middle-end/93555 */
+/* { dg-do compile } */
+
+#pragma omp declare simd
+#pragma omp declare simd inbranch
+void
+foo (void)
+{
+}
+
+#pragma omp declare simd inbranch
+#pragma omp declare simd
+void
+bar (void)
+{
+}