aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2018-04-12 21:58:54 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2018-04-12 21:58:54 +0000
commitbc436e10e0b892b6953e19776367170cd982367c (patch)
treeda5f112edc134a59ec2b35f11b0d84c478bb05e3
parent741346a2af437a013f9ba01742588d75f933fa78 (diff)
downloadgcc-bc436e10e0b892b6953e19776367170cd982367c.zip
gcc-bc436e10e0b892b6953e19776367170cd982367c.tar.gz
gcc-bc436e10e0b892b6953e19776367170cd982367c.tar.bz2
re PR fortran/83064 (DO CONCURRENT and auto-parallelization)
2018-04-12 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83064 PR testsuite/85346 * trans-stmt.c (gfc_trans_forall_loop): Use annot_expr_ivdep_kind for annotation and remove dependence on -ftree-parallelize-loops. 2018-04-12 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83064 PR testsuite/85346 * gfortran.dg/do_concurrent_5.f90: Dynamically allocate main work array and move test to libgomp/testsuite/libgomp.fortran. * gfortran.dg/do_concurrent_6.f90: New test. 2018-04-12 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/83064 PR testsuite/85346 * testsuite/libgomp.fortran/do_concurrent_5.f90: Move modified test from gfortran.dg to here. From-SVN: r259359
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/trans-stmt.c8
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gfortran.dg/do_concurrent_6.f9013
-rw-r--r--libgomp/ChangeLog7
-rw-r--r--libgomp/testsuite/libgomp.fortran/do_concurrent_5.f90 (renamed from gcc/testsuite/gfortran.dg/do_concurrent_5.f90)12
6 files changed, 46 insertions, 9 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 75d0a7e..3064ab6 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2018-04-12 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/83064
+ PR testsuite/85346
+ * trans-stmt.c (gfc_trans_forall_loop): Use annot_expr_ivdep_kind
+ for annotation and remove dependence on -ftree-parallelize-loops.
+
2018-04-10 Jakub Jelinek <jakub@redhat.com>
PR fortran/85313
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index c44450e..1952f6c 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -3643,12 +3643,12 @@ gfc_trans_forall_loop (forall_info *forall_tmp, tree body,
cond = fold_build2_loc (input_location, LE_EXPR, logical_type_node,
count, build_int_cst (TREE_TYPE (count), 0));
- /* PR 83064 means that we cannot use the annotation if the
- autoparallelizer is active. */
- if (forall_tmp->do_concurrent && ! flag_tree_parallelize_loops)
+ /* PR 83064 means that we cannot use annot_expr_parallel_kind until
+ the autoparallelizer can hande this. */
+ if (forall_tmp->do_concurrent)
cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
build_int_cst (integer_type_node,
- annot_expr_parallel_kind),
+ annot_expr_ivdep_kind),
integer_zero_node);
tmp = build1_v (GOTO_EXPR, exit_label);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 73a358e..16d39a2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2018-04-12 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/83064
+ PR testsuite/85346
+ * gfortran.dg/do_concurrent_5.f90: Dynamically allocate main work
+ array and move test to libgomp/testsuite/libgomp.fortran.
+ * gfortran.dg/do_concurrent_6.f90: New test.
+
2018-04-12 Marek Polacek <polacek@redhat.com>
PR c++/85258
diff --git a/gcc/testsuite/gfortran.dg/do_concurrent_6.f90 b/gcc/testsuite/gfortran.dg/do_concurrent_6.f90
new file mode 100644
index 0000000..9585a9f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/do_concurrent_6.f90
@@ -0,0 +1,13 @@
+! { dg-do compile }
+! { dg-additional-options "-fdump-tree-original" }
+
+program main
+ real, dimension(100) :: a,b
+ call random_number(a)
+ do concurrent (i=1:100)
+ b(i) = a(i)*a(i)
+ end do
+ print *,sum(a)
+end program main
+
+! { dg-final { scan-tree-dump-times "ivdep" 1 "original" } }
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index ea28859..9568a73 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,10 @@
+2018-04-12 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/83064
+ PR testsuite/85346
+ * testsuite/libgomp.fortran/do_concurrent_5.f90: Move modified
+ test from gfortran.dg to here.
+
2018-04-05 Tom de Vries <tom@codesourcery.com>
PR target/85204
diff --git a/gcc/testsuite/gfortran.dg/do_concurrent_5.f90 b/libgomp/testsuite/libgomp.fortran/do_concurrent_5.f90
index feee4c9..6fb9d1e 100644
--- a/gcc/testsuite/gfortran.dg/do_concurrent_5.f90
+++ b/libgomp/testsuite/libgomp.fortran/do_concurrent_5.f90
@@ -1,6 +1,6 @@
! { dg-do run }
! PR 83064 - this used to give wrong results.
-! { dg-options "-O3 -ftree-parallelize-loops=2" }
+! { dg-additional-options "-O1 -ftree-parallelize-loops=2" }
! Original test case by Christian Felter
program main
@@ -8,10 +8,12 @@ program main
implicit none
integer, parameter :: nsplit = 4
- integer(int64), parameter :: ne = 20000000
- integer(int64) :: stride, low(nsplit), high(nsplit), edof(ne), i
+ integer(int64), parameter :: ne = 2**20
+ integer(int64) :: stride, low(nsplit), high(nsplit), i
real(real64), dimension(nsplit) :: pi
-
+ integer(int64), dimension(:), allocatable :: edof
+
+ allocate (edof(ne))
edof(1::4) = 1
edof(2::4) = 2
edof(3::4) = 3
@@ -31,7 +33,7 @@ program main
do concurrent (i = 1:nsplit)
pi(i) = sum(compute( low(i), high(i) ))
end do
- if (abs (sum(pi) - atan(1.0d0)) > 1e-5) call abort
+ if (abs (sum(pi) - atan(1.0d0)) > 1e-5) STOP 1
contains