diff options
author | Tobias Burnus <burnus@gcc.gnu.org> | 2014-06-19 09:16:34 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2014-06-19 09:16:34 +0200 |
commit | 7f6c4159bf807be2450ea3952ecb6ed7ea8e33d0 (patch) | |
tree | d7a03ca2513c1c3ab47867b5d0d5cf274a580a17 /gcc | |
parent | 29d0a43c96c6c9671c0fe8a05b8cfb2791d5d5cd (diff) | |
download | gcc-7f6c4159bf807be2450ea3952ecb6ed7ea8e33d0.zip gcc-7f6c4159bf807be2450ea3952ecb6ed7ea8e33d0.tar.gz gcc-7f6c4159bf807be2450ea3952ecb6ed7ea8e33d0.tar.bz2 |
trans-intrinsic.c (conv_co_minmaxsum): Fix argument passing.
gcc/fortran/
2014-06-19 Tobias Burnus <burnus@net-b.de>
* trans-intrinsic.c (conv_co_minmaxsum): Fix argument
passing.
gcc/testsuite/
2014-06-19 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray/collectives_2.f90: Extend
and make valid.
libgfortran/
2014-06-19 Tobias Burnus <burnus@net-b.de>
* caf/single.c (_gfortran_caf_co_sum, _gfortran_caf_co_max,
_gfortran_caf_co_min): Fix stat setting.
From-SVN: r211816
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/coarray/collectives_2.f90 | 29 |
4 files changed, 38 insertions, 13 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7b21c6e..903e9ab 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2014-06-19 Tobias Burnus <burnus@net-b.de> + + * trans-intrinsic.c (conv_co_minmaxsum): Fix argument + passing. + 2014-06-18 Tobias Burnus <burnus@net-b.de> * gfortran.texi (OpenMP): Update refs to OpenMP 4.0. diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 52a2788..548fd9f 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -8300,13 +8300,11 @@ conv_co_minmaxsum (gfc_code *code) gcc_unreachable (); if (code->resolved_isym->id == GFC_ISYM_CO_SUM) - fndecl = build_call_expr_loc (input_location, fndecl, 6, array, - null_pointer_node, image_index, stat, errmsg, - errmsg_len); + fndecl = build_call_expr_loc (input_location, fndecl, 5, array, + image_index, stat, errmsg, errmsg_len); else - fndecl = build_call_expr_loc (input_location, fndecl, 7, array, - null_pointer_node, image_index, stat, errmsg, - strlen, errmsg_len); + fndecl = build_call_expr_loc (input_location, fndecl, 6, array, image_index, + stat, errmsg, strlen, errmsg_len); gfc_add_expr_to_block (&block, fndecl); gfc_add_block_to_block (&block, &post_block); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8a14203..2d04521 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,9 +1,14 @@ +2014-06-19 Tobias Burnus <burnus@net-b.de> + + * gfortran.dg/coarray/collectives_2.f90: Extend + and make valid. + 2014-06-18 Tom de Vries <tom@codesourcery.com> * gcc.target/aarch64/fuse-caller-save.c: New test. 2014-06-18 Radovan Obradovic <robradovic@mips.com> - Tom de Vries <tom@codesourcery.com> + Tom de Vries <tom@codesourcery.com> * gcc.target/arm/fuse-caller-save.c: New test. diff --git a/gcc/testsuite/gfortran.dg/coarray/collectives_2.f90 b/gcc/testsuite/gfortran.dg/coarray/collectives_2.f90 index a2f5939..3ff9383 100644 --- a/gcc/testsuite/gfortran.dg/coarray/collectives_2.f90 +++ b/gcc/testsuite/gfortran.dg/coarray/collectives_2.f90 @@ -7,7 +7,7 @@ program test intrinsic co_max intrinsic co_min intrinsic co_sum - integer :: val(3) + integer :: val(3), tmp_val(3) integer :: vec(3) vec = [2,3,1] if (this_image() == 1) then @@ -21,13 +21,24 @@ program test else val(3) = 101 endif + tmp_val = val call test_min + val = tmp_val call test_max + val = tmp_val call test_sum contains subroutine test_max - call co_max (val(vec)) - !write(*,*) "Maximal value", val + integer :: tmp + call co_max (val(::2)) + if (num_images() > 1) then + if (any (val /= [42, this_image(), 101])) call abort() + else + if (any (val /= [42, this_image(), -55])) call abort() + endif + + val = tmp_val + call co_max (val(:)) if (num_images() > 1) then if (any (val /= [42, num_images(), 101])) call abort() else @@ -40,20 +51,26 @@ contains if (this_image() == num_images()) then !write(*,*) "Minimal value", val if (num_images() > 1) then - if (any (val /= [-99, num_images(), -55])) call abort() + if (any (val /= [-99, 1, -55])) call abort() else - if (any (val /= [42, num_images(), -55])) call abort() + if (any (val /= [42, 1, -55])) call abort() endif + else + if (any (val /= tmp_val)) call abort() endif end subroutine test_min subroutine test_sum integer :: n - call co_sum (val, result_image=1) + n = 88 + call co_sum (val, result_image=1, stat=n) + if (n /= 0) call abort() if (this_image() == 1) then n = num_images() !write(*,*) "The sum is ", val if (any (val /= [42 + (n-1)*(-99), (n**2 + n)/2, -55+(n-1)*101])) call abort() + else + if (any (val /= tmp_val)) call abort() end if end subroutine test_sum end program test |