aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/omp-low.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr77516.f9012
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f31907a..b9e71731 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-09-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/77516
+ * omp-low.c (lower_rec_simd_input_clauses): Use max_vf for non-positive
+ OMP_CLAUSE_SAFELEN_EXPR.
+
2016-09-07 David Malcolm <dmalcolm@redhat.com>
* Makefile.in (OBJS): Add substring-locations.o.
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 7c11b50..c890e83 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -4302,7 +4302,9 @@ lower_rec_simd_input_clauses (tree new_var, omp_context *ctx, int &max_vf,
{
tree c = find_omp_clause (gimple_omp_for_clauses (ctx->stmt),
OMP_CLAUSE_SAFELEN);
- if (c && TREE_CODE (OMP_CLAUSE_SAFELEN_EXPR (c)) != INTEGER_CST)
+ if (c
+ && (TREE_CODE (OMP_CLAUSE_SAFELEN_EXPR (c)) != INTEGER_CST
+ || tree_int_cst_sgn (OMP_CLAUSE_SAFELEN_EXPR (c)) != 1))
max_vf = 1;
else if (c && compare_tree_int (OMP_CLAUSE_SAFELEN_EXPR (c),
max_vf) == -1)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 03af3a3..9075d48 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-09-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/77516
+ * gfortran.dg/gomp/pr77516.f90: New test.
+
2016-09-07 Jakub Jelinek <jakub@redhat.com>
PR middle-end/77475
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr77516.f90 b/gcc/testsuite/gfortran.dg/gomp/pr77516.f90
new file mode 100644
index 0000000..7852abf
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr77516.f90
@@ -0,0 +1,12 @@
+! PR fortran/77516
+! { dg-do compile }
+
+program pr77516
+ integer :: i, x
+ x = 0
+!$omp simd safelen(0) reduction(+:x)
+ do i = 1, 8
+ x = x + 1
+ end do
+ print *, x
+end