diff options
author | Tobias Burnus <burnus@net-b.de> | 2011-04-23 12:26:38 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2011-04-23 12:26:38 +0200 |
commit | c49eaa233a65b956f0bf07be4b6d65ae7e934143 (patch) | |
tree | d725eeee3661c9060948a73ac3731d9ad58d3102 /gcc/fortran/resolve.c | |
parent | 16997bc01128f46cee9450237cd5e3e8fb3b12ad (diff) | |
download | gcc-c49eaa233a65b956f0bf07be4b6d65ae7e934143.zip gcc-c49eaa233a65b956f0bf07be4b6d65ae7e934143.tar.gz gcc-c49eaa233a65b956f0bf07be4b6d65ae7e934143.tar.bz2 |
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
2011-04-23 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* module.c (mio_array_spec): Set as->cotype on reading.
* resolve.c (resolve_allocate_expr): Fix allocating coarray
components.
2011-04-23 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray_19.f90: New.
From-SVN: r172897
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index c101612..d7b95f5 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -6636,6 +6636,7 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code) { int i, pointer, allocatable, dimension, is_abstract; int codimension; + bool coindexed; symbol_attribute attr; gfc_ref *ref, *ref2; gfc_expr *e2; @@ -6693,18 +6694,32 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code) codimension = sym->attr.codimension; } + coindexed = false; + for (ref = e->ref; ref; ref2 = ref, ref = ref->next) { switch (ref->type) { case REF_ARRAY: + if (ref->u.ar.codimen > 0) + { + int n; + for (n = ref->u.ar.dimen; + n < ref->u.ar.dimen + ref->u.ar.codimen; n++) + if (ref->u.ar.dimen_type[n] != DIMEN_THIS_IMAGE) + { + coindexed = true; + break; + } + } + if (ref->next != NULL) pointer = 0; break; case REF_COMPONENT: /* F2008, C644. */ - if (gfc_is_coindexed (e)) + if (coindexed) { gfc_error ("Coindexed allocatable object at %L", &e->where); |