aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-08-31 18:42:55 +0000
committerJakub Jelinek <jakub@redhat.com>2016-08-31 18:42:55 +0000
commit3d81eb6242ca91df045612f16a0b5e80c2dca393 (patch)
treeec28d0149fff8389b1640c653288cfcd0a1524d7
parent5654c30b7680c590d87fe6b1a09d1a33bd5434f5 (diff)
PR fortran/77352
* trans-openmp.c (gfc_trans_omp_parallel_workshare): Always add a BIND_EXPR with BLOCK around what gfc_trans_omp_workshare returns. * gfortran.dg/gomp/pr77352.f90: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@239904 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog4
-rw-r--r--gcc/fortran/trans-openmp.c5
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr77352.f9016
4 files changed, 24 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index d7f416128ab..9913c97de04 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,9 @@
2016-08-31 Jakub Jelinek <jakub@redhat.com>
+ PR fortran/77352
+ * trans-openmp.c (gfc_trans_omp_parallel_workshare): Always add a
+ BIND_EXPR with BLOCK around what gfc_trans_omp_workshare returns.
+
PR fortran/77374
* parse.c (parse_omp_oacc_atomic): Copy over cp->ext.omp_atomic
to cp->block->ext.omp_atomic.
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index 3f5db965822..c0d67617871 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -4001,10 +4001,7 @@ gfc_trans_omp_parallel_workshare (gfc_code *code)
code->loc);
pushlevel ();
stmt = gfc_trans_omp_workshare (code, &workshare_clauses);
- if (TREE_CODE (stmt) != BIND_EXPR)
- stmt = build3_v (BIND_EXPR, NULL, stmt, poplevel (1, 0));
- else
- poplevel (0, 0);
+ stmt = build3_v (BIND_EXPR, NULL, stmt, poplevel (1, 0));
stmt = build2_loc (input_location, OMP_PARALLEL, void_type_node, stmt,
omp_clauses);
OMP_PARALLEL_COMBINED (stmt) = 1;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d77d548481f..864215d9dc4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2016-08-31 Jakub Jelinek <jakub@redhat.com>
+ PR fortran/77352
+ * gfortran.dg/gomp/pr77352.f90: New test.
+
PR fortran/77374
* gfortran.dg/gomp/pr77374.f08: New test.
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr77352.f90 b/gcc/testsuite/gfortran.dg/gomp/pr77352.f90
new file mode 100644
index 00000000000..74ddecd4af2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr77352.f90
@@ -0,0 +1,16 @@
+! PR fortran/77352
+! { dg-do compile }
+! { dg-additional-options "-fstack-arrays -O2" }
+! { dg-additional-options "-fopenacc" { target fopenacc } }
+
+program pr77352
+ real, allocatable :: a(:,:), b(:)
+ integer :: m, n
+ m = 4
+ n = 2
+ allocate (a(m,n), b(m))
+ a = 1.0
+!$omp parallel workshare
+ b(:) = [ sum(a, dim=1) ]
+!$omp end parallel workshare
+end