From abfc73778e24d6e8c407150d8071bc7fed755965 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Mon, 12 Nov 2012 12:03:42 +0100 Subject: [PATCH] re PR fortran/55272 (ICE on passing coarray argument between files) 2012-11-12 Tobias Burnus PR fortran/55272 * module.c (mio_array_spec): Correctly handle coarray scalars. 2012-11-12 Tobias Burnus PR fortran/55272 * gfortran.dg/coarray_29_1.f90: New. * gfortran.dg/coarray_29_2.f90: New. From-SVN: r193429 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/module.c | 2 +- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gfortran.dg/coarray_29_1.f90 | 16 ++++++++++++++++ gcc/testsuite/gfortran.dg/coarray_29_2.f90 | 18 ++++++++++++++++++ 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/coarray_29_1.f90 create mode 100644 gcc/testsuite/gfortran.dg/coarray_29_2.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 00c46f15c17..a90b51a1ac3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-11-12 Tobias Burnus + + PR fortran/55272 + * module.c (mio_array_spec): Correctly handle coarray + scalars. + 2012-11-07 Tobias Schlüter PR fortran/51727 diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 4cfcae4f3b9..89c45b7c047 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -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]); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 11dc4cf9b51..87023e796a3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-11-12 Tobias Burnus + + PR fortran/55272 + * gfortran.dg/coarray_29_1.f90: New. + * gfortran.dg/coarray_29_2.f90: New. + 2012-11-12 Bin Cheng * gcc.dg/hoist-register-pressure-3.c: New test. diff --git a/gcc/testsuite/gfortran.dg/coarray_29_1.f90 b/gcc/testsuite/gfortran.dg/coarray_29_1.f90 new file mode 100644 index 00000000000..2c49b1c646d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_29_1.f90 @@ -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 "" } } diff --git a/gcc/testsuite/gfortran.dg/coarray_29_2.f90 b/gcc/testsuite/gfortran.dg/coarray_29_2.f90 new file mode 100644 index 00000000000..9829626d276 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_29_2.f90 @@ -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" } }