re PR middle-end/67335 (ICE in compiling omp simd function with unused argument)
authorJakub Jelinek <jakub@redhat.com>
Mon, 21 Nov 2016 19:17:36 +0000 (20:17 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 21 Nov 2016 19:17:36 +0000 (20:17 +0100)
PR middle-end/67335
* omp-simd-clone.c (simd_clone_adjust_argument_types): Use NULL prefix
for tmp simd array if DECL_NAME (parm) is NULL.

* g++.dg/vect/simd-clone-7.cc: New test.

From-SVN: r242678

gcc/ChangeLog
gcc/omp-simd-clone.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/vect/simd-clone-7.cc [new file with mode: 0644]

index d546162..9cb2526 100644 (file)
@@ -1,3 +1,9 @@
+2016-11-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/67335
+       * omp-simd-clone.c (simd_clone_adjust_argument_types): Use NULL prefix
+       for tmp simd array if DECL_NAME (parm) is NULL.
+
 2016-11-20  Jeff Law  <law@redhat.com>
 
        PR target/25128
index 15f80ab..7b8d2a9 100644 (file)
@@ -630,8 +630,9 @@ simd_clone_adjust_argument_types (struct cgraph_node *node)
 
          if (node->definition)
            sc->args[i].simd_array
-             = create_tmp_simd_array (IDENTIFIER_POINTER (DECL_NAME (parm)),
-                                      parm_type, sc->simdlen);
+             = create_tmp_simd_array (DECL_NAME (parm)
+                                      ? IDENTIFIER_POINTER (DECL_NAME (parm))
+                                      : NULL, parm_type, sc->simdlen);
        }
       adjustments.safe_push (adj);
     }
index d672a47..dd89d88 100644 (file)
@@ -1,5 +1,8 @@
 2016-11-21  Jakub Jelinek  <jakub@redhat.com>
 
+       PR middle-end/67335
+       * g++.dg/vect/simd-clone-7.cc: New test.
+
        PR c++/71973
        * g++.dg/torture/pr53321.C (size_t): Use __SIZE_TYPE__ instead of
        long unsigned int.
diff --git a/gcc/testsuite/g++.dg/vect/simd-clone-7.cc b/gcc/testsuite/g++.dg/vect/simd-clone-7.cc
new file mode 100644 (file)
index 0000000..fd5751b
--- /dev/null
@@ -0,0 +1,10 @@
+// PR middle-end/67335
+// { dg-do compile }
+// { dg-additional-options "-fopenmp-simd" }
+
+#pragma omp declare simd notinbranch uniform(y)
+float
+bar (float x, float *y, int)
+{
+  return y[0] + y[1] * x;
+}