]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
trans-intrinsic.c (conv_co_minmaxsum): Fix argument passing.
authorTobias Burnus <burnus@gcc.gnu.org>
Thu, 19 Jun 2014 07:16:34 +0000 (09:16 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Thu, 19 Jun 2014 07:16:34 +0000 (09:16 +0200)
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

gcc/fortran/ChangeLog
gcc/fortran/trans-intrinsic.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/coarray/collectives_2.f90
libgfortran/ChangeLog
libgfortran/caf/single.c

index 7b21c6e2079bf723bc3025c97d2248af98f17b4d..903e9ab250588cad8a8a6c20889a32da65db9290 100644 (file)
@@ -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.
index 52a2788080edfb22acdd84b131597bcefaf49091..548fd9fbc769fdd341350f0b4211b96264279d5e 100644 (file)
@@ -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 8a142031449d147c697eabe4985533c18160cc8f..2d045216615be6d44c1d0bdc7734f57752ac1d2b 100644 (file)
@@ -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.
 
index a2f5939160cadbfb0d743c9058d5de2719536604..3ff9383b8eb82891d9c1e91ed1c50493a58c3f49 100644 (file)
@@ -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
index 0a89a989635a242be369e552fe6e9a6f2fee599a..ec8928df04e9965d51be664fc601646b56c07fba 100644 (file)
@@ -1,3 +1,8 @@
+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.
+
 2014-06-17  Tobias Burnus  <burnus@net-b.de>
 
        * caf/libcaf.h (gfc_descriptor_t): New typedef.
index cf1d420758a99035846e411c6710d1d100f466b1..abb0a1fb9a28b00f3a75ae055917be2ab0505375 100644 (file)
@@ -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