diff options
author | Tobias Burnus <burnus@net-b.de> | 2011-05-29 20:17:40 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2011-05-29 20:17:40 +0200 |
commit | 427180d243e562912cc37f09b140a4d8c042ae4c (patch) | |
tree | 58e3db3d3be0f4d93c2a283b0fa80d1b591cddcd /gcc/fortran | |
parent | 8a5c4899e8f57f09e288043984cc0f4584f17fc4 (diff) | |
download | gcc-427180d243e562912cc37f09b140a4d8c042ae4c.zip gcc-427180d243e562912cc37f09b140a4d8c042ae4c.tar.gz gcc-427180d243e562912cc37f09b140a4d8c042ae4c.tar.bz2 |
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
2011-05-29 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* interface.c (compare_parameter): Add check for passing coarray
to allocatable noncoarray dummy.
2011-05-29 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* gfortran.dg/coarray_24.f90: New.
From-SVN: r174411
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/interface.c | 18 |
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 71e6452..5ffa5f6 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,4 +1,10 @@ 2011-05-29 Tobias Burnus <burnus@net-b.de> + + PR fortran/18918 + * interface.c (compare_parameter): Add check for passing coarray + to allocatable noncoarray dummy. + +2011-05-29 Tobias Burnus <burnus@net-b.de> Richard Guenther <rguenther@suse.de> PR fortran/18918 diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 732a0c59d..6575fbe 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -1645,6 +1645,24 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual, return 0; } + if (formal->attr.allocatable && !formal->attr.codimension + && gfc_expr_attr (actual).codimension) + { + if (formal->attr.intent == INTENT_OUT) + { + if (where) + gfc_error ("Passing coarray at %L to allocatable, noncoarray, " + "INTENT(OUT) dummy argument '%s'", &actual->where, + formal->name); + return 0; + } + else if (gfc_option.warn_surprising && where + && formal->attr.intent != INTENT_IN) + gfc_warning ("Passing coarray at %L to allocatable, noncoarray dummy " + "argument '%s', which is invalid if the allocation status" + " is modified", &actual->where, formal->name); + } + if (symbol_rank (formal) == actual->rank) return 1; |