From: Tobias Burnus Date: Thu, 19 Jun 2014 07:16:34 +0000 (+0200) Subject: trans-intrinsic.c (conv_co_minmaxsum): Fix argument passing. X-Git-Tag: releases/gcc-5.1.0~6774 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7f6c4159bf807be2450ea3952ecb6ed7ea8e33d0;p=thirdparty%2Fgcc.git trans-intrinsic.c (conv_co_minmaxsum): Fix argument passing. gcc/fortran/ 2014-06-19 Tobias Burnus * trans-intrinsic.c (conv_co_minmaxsum): Fix argument passing. gcc/testsuite/ 2014-06-19 Tobias Burnus * gfortran.dg/coarray/collectives_2.f90: Extend and make valid. libgfortran/ 2014-06-19 Tobias Burnus * caf/single.c (_gfortran_caf_co_sum, _gfortran_caf_co_max, _gfortran_caf_co_min): Fix stat setting. From-SVN: r211816 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7b21c6e2079b..903e9ab25058 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2014-06-19 Tobias Burnus + + * trans-intrinsic.c (conv_co_minmaxsum): Fix argument + passing. + 2014-06-18 Tobias Burnus * gfortran.texi (OpenMP): Update refs to OpenMP 4.0. diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 52a2788080ed..548fd9fbc769 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 8a142031449d..2d045216615b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,9 +1,14 @@ +2014-06-19 Tobias Burnus + + * gfortran.dg/coarray/collectives_2.f90: Extend + and make valid. + 2014-06-18 Tom de Vries * gcc.target/aarch64/fuse-caller-save.c: New test. 2014-06-18 Radovan Obradovic - Tom de Vries + Tom de Vries * 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 a2f5939160ca..3ff9383b8eb8 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 diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 0a89a989635a..ec8928df04e9 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2014-06-19 Tobias Burnus + + * caf/single.c (_gfortran_caf_co_sum, _gfortran_caf_co_max, + _gfortran_caf_co_min): Fix stat setting. + 2014-06-17 Tobias Burnus * caf/libcaf.h (gfc_descriptor_t): New typedef. diff --git a/libgfortran/caf/single.c b/libgfortran/caf/single.c index cf1d420758a9..abb0a1fb9a28 100644 --- a/libgfortran/caf/single.c +++ b/libgfortran/caf/single.c @@ -211,7 +211,7 @@ _gfortran_caf_co_sum (gfc_descriptor_t *a __attribute__ ((unused)), int errmsg_len __attribute__ ((unused))) { if (stat) - stat = 0; + *stat = 0; } void @@ -222,7 +222,7 @@ _gfortran_caf_co_min (gfc_descriptor_t *a __attribute__ ((unused)), int errmsg_len __attribute__ ((unused))) { if (stat) - stat = 0; + *stat = 0; } void @@ -233,7 +233,7 @@ _gfortran_caf_co_max (gfc_descriptor_t *a __attribute__ ((unused)), int errmsg_len __attribute__ ((unused))) { if (stat) - stat = 0; + *stat = 0; } void