Patchwork [Fortran,committed] PR55272 - Fix module handling of coarray scalars

login
register
mail settings
Submitter Tobias Burnus
Date Nov. 12, 2012, 11:03 a.m.
Message ID <50A0D79E.7010202@net-b.de>
Download mbox | patch
Permalink /patch/198361/
State New
Headers show

Comments

Tobias Burnus - Nov. 12, 2012, 11:03 a.m.
Thanks for the report Damian! And sorry for the breakage.

Fixed with the following obvious patch (committed as Rev. 193429) after 
an all-language bootstrap/regtesting

Tobias

Patch

Index: gcc/fortran/ChangeLog
===================================================================
--- gcc/fortran/ChangeLog	(Revision 193427)
+++ gcc/fortran/ChangeLog	(Arbeitskopie)
@@ -1,3 +1,9 @@ 
+2012-11-12  Tobias Burnus  <burnus@net-b.de>
+
+	PR fortran/55272
+	* module.c (mio_array_spec): Correctly handle coarray
+	scalars.
+
 2012-11-07  Tobias Schl├╝ter  <tobi@gcc.gnu.org>
 
 	PR fortran/51727
Index: gcc/fortran/module.c
===================================================================
--- gcc/fortran/module.c	(Revision 193427)
+++ gcc/fortran/module.c	(Arbeitskopie)
@@ -2395,7 +2395,7 @@  mio_array_spec (gfc_array_spec **asp)
   if (iomode == IO_INPUT && as->corank)
     as->cotype = (as->type == AS_DEFERRED) ? AS_DEFERRED : AS_EXPLICIT;
 
-  if (as->rank > 0)
+  if (as->rank + as->corank > 0)
     for (i = 0; i < as->rank + as->corank; i++)
       {
 	mio_expr (&as->lower[i]);
Index: gcc/testsuite/ChangeLog
===================================================================
--- gcc/testsuite/ChangeLog	(Revision 193427)
+++ gcc/testsuite/ChangeLog	(Arbeitskopie)
@@ -1,3 +1,9 @@ 
+2012-11-12  Tobias Burnus  <burnus@net-b.de>
+
+	PR fortran/55272
+	* gfortran.dg/coarray_29_1.f90: New.
+	* gfortran.dg/coarray_29_2.f90: New.
+
 2012-11-12  Bin Cheng  <bin.cheng@arm.com>
 
 	* gcc.dg/hoist-register-pressure-3.c: New test.
Index: gcc/testsuite/gfortran.dg/coarray_29_1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/coarray_29_1.f90	(Revision 0)
+++ gcc/testsuite/gfortran.dg/coarray_29_1.f90	(Arbeitskopie)
@@ -0,0 +1,16 @@ 
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+
+! To be used by coarray_29_2.f90
+! PR fortran/55272
+
+module co_sum_module
+  implicit none
+contains
+  subroutine co_sum(scalar)
+    integer scalar[*]
+  end subroutine
+end module
+
+! DO NOT CLEAN UP THE MODULE FILE - coarray_29_2.f90 does it.
+! { dg-final { keep-modules "" } }
Index: gcc/testsuite/gfortran.dg/coarray_29_2.f90
===================================================================
--- gcc/testsuite/gfortran.dg/coarray_29_2.f90	(Revision 0)
+++ gcc/testsuite/gfortran.dg/coarray_29_2.f90	(Arbeitskopie)
@@ -0,0 +1,18 @@ 
+! { dg-compile }
+! { dg-options "-fcoarray=single" }
+
+! Requires that coarray_29.f90 has been compiled before
+! and that, thus, co_sum_module is available
+
+! PR fortran/55272
+!
+! Contributed by Damian Rouson
+
+program main
+  use co_sum_module
+  implicit none    
+  integer score[*] 
+  call co_sum(score)
+end program
+
+! { dg-final { cleanup-modules "co_sum_module" } }