diff options
author | Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> | 2015-07-17 06:18:44 -0600 |
---|---|---|
committer | Mikael Morin <mikael@gcc.gnu.org> | 2015-07-17 12:18:44 +0000 |
commit | 996d027a36c646fbb0098e96c83dbb4c0ea5133d (patch) | |
tree | 203dea28d80d730acea563713ae5db2464853755 /gcc | |
parent | c92f5b137e967a3ffd1ad0ce80a74c5a12e97fe3 (diff) | |
download | gcc-996d027a36c646fbb0098e96c83dbb4c0ea5133d.zip gcc-996d027a36c646fbb0098e96c83dbb4c0ea5133d.tar.gz gcc-996d027a36c646fbb0098e96c83dbb4c0ea5133d.tar.bz2 |
Fix fortran double address operator with co_reduce
gcc/fortran/
2015-07-17 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
* trans-intrinsic.c (conv_co_collective): Remove redundant address
operator in the generated code.
gcc/testsuite/
2015-07-17 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
* gfortran.dg/co_reduce_1.f90: New file.
From-SVN: r225930
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/co_reduce_1.f90 | 33 |
4 files changed, 43 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 33b8cbb..d082f0b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2015-07-17 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + + * trans-intrinsic.c (conv_co_collective): Remove redundant address + operator in the generated code. + 2015-07-17 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/66035 diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 66bc72a..967a741 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -8804,7 +8804,7 @@ conv_co_collective (gfc_code *code) } opr_flags = build_int_cst (integer_type_node, opr_flag_int); gfc_conv_expr (&argse, opr_expr); - opr = gfc_build_addr_expr (NULL_TREE, argse.expr); + opr = argse.expr; fndecl = build_call_expr_loc (input_location, fndecl, 8, array, opr, opr_flags, image_index, stat, errmsg, strlen, errmsg_len); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 57b8e54..5462c1f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-07-17 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + + * gfortran.dg/co_reduce_1.f90: New file. + 2015-07-17 H.J. Lu <hongjiu.lu@intel.com> PR target/66824 diff --git a/gcc/testsuite/gfortran.dg/co_reduce_1.f90 b/gcc/testsuite/gfortran.dg/co_reduce_1.f90 new file mode 100644 index 0000000..1d3e89f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/co_reduce_1.f90 @@ -0,0 +1,33 @@ +! { dg-do compile } +! { dg-additional-options "-fdump-tree-original -fcoarray=lib" } +! +! Check that we don't take twice the address of procedure simple_reduction +! in the generated code. +! +! Contributed by Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> + +program simple_reduce + implicit none + + integer :: me + + me = this_image() + + sync all + + call co_reduce(me,simple_reduction) + + write(*,*) this_image(),me + +contains + + pure function simple_reduction(a,b) + integer,intent(in) :: a,b + integer :: simple_reduction + + simple_reduction = a * b + end function simple_reduction + +end program simple_reduce + +! { dg-final { scan-tree-dump "_gfortran_caf_co_reduce \\(&desc\\.\\d+,\\s*simple_reduction," "original" } } |