]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/59669 (ICE: SIGSEGV with #pragma omp declare simd linear)
authorMarek Polacek <polacek@redhat.com>
Wed, 8 Jan 2014 15:37:35 +0000 (15:37 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Wed, 8 Jan 2014 15:37:35 +0000 (15:37 +0000)
PR middle-end/59669
* omp-low.c (simd_clone_adjust): Don't crash if def is NULL.
testsuite/
* gcc.dg/gomp/pr59669-1.c: New test.
* gcc.dg/gomp/pr59669-2.c: New test.

From-SVN: r206431

gcc/ChangeLog
gcc/omp-low.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/gomp/pr59669-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/gomp/pr59669-2.c [new file with mode: 0644]

index 5ff7cd027f433b1364222fcbe3ae1fbc7e558bfe..5ad197cec21004b73b19fc544aee86565d63fdb5 100644 (file)
@@ -1,3 +1,8 @@
+2014-01-08  Marek Polacek  <polacek@redhat.com>
+
+       PR middle-end/59669
+       * omp-low.c (simd_clone_adjust): Don't crash if def is NULL.
+
 2014-01-08  Marek Polacek  <polacek@redhat.com>
 
        PR sanitizer/59667
index f1ec1c6e9aea51eb4933b0bd4d94abeeb5b5808f..05513ee5b9bd0ab1662951dfee9c62598f16b918 100644 (file)
@@ -11537,7 +11537,7 @@ simd_clone_adjust (struct cgraph_node *node)
        unsigned int alignment = node->simdclone->args[i].alignment;
        tree orig_arg = node->simdclone->args[i].orig_arg;
        tree def = ssa_default_def (cfun, orig_arg);
-       if (!has_zero_uses (def))
+       if (def && !has_zero_uses (def))
          {
            tree fn = builtin_decl_explicit (BUILT_IN_ASSUME_ALIGNED);
            gimple_seq seq = NULL;
@@ -11587,7 +11587,7 @@ simd_clone_adjust (struct cgraph_node *node)
        tree def = ssa_default_def (cfun, orig_arg);
        gcc_assert (INTEGRAL_TYPE_P (TREE_TYPE (orig_arg))
                    || POINTER_TYPE_P (TREE_TYPE (orig_arg)));
-       if (!has_zero_uses (def))
+       if (def && !has_zero_uses (def))
          {
            iter1 = make_ssa_name (orig_arg, NULL);
            iter2 = make_ssa_name (orig_arg, NULL);
index f00c8459f7ba8b7d47d353207a5a723cb9d40eac..39e7af09ce59d1693e24231b1fc6d2a77ba16252 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-08  Marek Polacek  <polacek@redhat.com>
+
+       PR middle-end/59669
+       * gcc.dg/gomp/pr59669-1.c: New test.
+       * gcc.dg/gomp/pr59669-2.c: New test.
+
 2014-01-08  Martin Jambor  <mjambor@suse.cz>
 
        PR ipa/59610
diff --git a/gcc/testsuite/gcc.dg/gomp/pr59669-1.c b/gcc/testsuite/gcc.dg/gomp/pr59669-1.c
new file mode 100644 (file)
index 0000000..c72156d
--- /dev/null
@@ -0,0 +1,9 @@
+/* PR middle-end/59669 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+#pragma omp declare simd linear(a)
+void
+foo (int a)
+{
+}
diff --git a/gcc/testsuite/gcc.dg/gomp/pr59669-2.c b/gcc/testsuite/gcc.dg/gomp/pr59669-2.c
new file mode 100644 (file)
index 0000000..f6aad89
--- /dev/null
@@ -0,0 +1,9 @@
+/* PR middle-end/59669 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+#pragma omp declare simd uniform(a) aligned(a:32)
+void
+bar (int *a)
+{
+}