summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4>2014-01-08 15:37:35 +0000
committermpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4>2014-01-08 15:37:35 +0000
commit6db33a3dc3c8a1f5570d37eebac1ebe2ea260a66 (patch)
treeb17ff64d436854036e7cc189919357e011c8a37a
parent669bb8449d7f7e784db67c2fb9eb4422a4031fab (diff)
downloadppe42-gcc-6db33a3dc3c8a1f5570d37eebac1ebe2ea260a66.tar.gz
ppe42-gcc-6db33a3dc3c8a1f5570d37eebac1ebe2ea260a66.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206431 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/omp-low.c4
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr59669-1.c9
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr59669-2.c9
5 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5ff7cd027f4..5ad197cec21 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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
* ubsan.c (ubsan_type_descriptor): Call strip_array_types on type2.
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index f1ec1c6e9ae..05513ee5b9b 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -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);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f00c8459f7b..39e7af09ce5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 00000000000..c72156d4bd0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr59669-1.c
@@ -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
index 00000000000..f6aad8998f1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr59669-2.c
@@ -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)
+{
+}
OpenPOWER on IntegriCloud