Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (Revision 211815) +++ gcc/fortran/ChangeLog (Arbeitskopie) @@ -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. Index: gcc/fortran/trans-intrinsic.c =================================================================== --- gcc/fortran/trans-intrinsic.c (Revision 211815) +++ gcc/fortran/trans-intrinsic.c (Arbeitskopie) @@ -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); Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (Revision 211815) +++ gcc/testsuite/ChangeLog (Arbeitskopie) @@ -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. Index: gcc/testsuite/gfortran.dg/coarray/collectives_2.f90 =================================================================== --- gcc/testsuite/gfortran.dg/coarray/collectives_2.f90 (Revision 211815) +++ gcc/testsuite/gfortran.dg/coarray/collectives_2.f90 (Arbeitskopie) @@ -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,14 +21,25 @@ 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 if (any (val /= [42, num_images(), -55])) call abort() @@ -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 Index: libgfortran/ChangeLog =================================================================== --- libgfortran/ChangeLog (Revision 211815) +++ libgfortran/ChangeLog (Arbeitskopie) @@ -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. Index: libgfortran/caf/single.c =================================================================== --- libgfortran/caf/single.c (Revision 211815) +++ libgfortran/caf/single.c (Arbeitskopie) @@ -211,7 +211,7 @@ _gfortran_caf_co_sum (gfc_descriptor_t *a __attrib int errmsg_len __attribute__ ((unused))) { if (stat) - stat = 0; + *stat = 0; } void @@ -222,7 +222,7 @@ _gfortran_caf_co_min (gfc_descriptor_t *a __attrib int errmsg_len __attribute__ ((unused))) { if (stat) - stat = 0; + *stat = 0; } void @@ -233,7 +233,7 @@ _gfortran_caf_co_max (gfc_descriptor_t *a __attrib int errmsg_len __attribute__ ((unused))) { if (stat) - stat = 0; + *stat = 0; } void