diff options
author | Tobias Burnus <burnus@net-b.de> | 2013-05-30 09:29:49 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2013-05-30 09:29:49 +0200 |
commit | f188272d9f6affacbed8055babe1c02601b35d4c (patch) | |
tree | 5dde3fa7e4735c312369bdcc1f9b907ca6514718 /gcc/fortran | |
parent | 0571154ad5d7c206b2a46b4995287bdf9bfbb988 (diff) | |
download | gcc-f188272d9f6affacbed8055babe1c02601b35d4c.zip gcc-f188272d9f6affacbed8055babe1c02601b35d4c.tar.gz gcc-f188272d9f6affacbed8055babe1c02601b35d4c.tar.bz2 |
re PR fortran/57458 (TS29113: Wrongly rejects noncontiguous argument to assumed-rank when both are volatile/asynchronous)
2013-05-30 Tobias Burnus <burnus@net-b.de>
PR fortran/57458
* interface.c (compare_parameter): Update C1239/C1240 constraint
check for assumed-rank/TS29113.
2013-05-30 Tobias Burnus <burnus@net-b.de>
PR fortran/57458
* gfortran.dg/assumed_rank_13.f90: New.
From-SVN: r199437
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/fortran/interface.c | 11 |
2 files changed, 14 insertions, 7 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4ecf60b..87aa9bc 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,4 +1,10 @@ -2013-05-28 Tobias Burnus <burnus@net-b.de> +2013-05-30 Tobias Burnus <burnus@net-b.de> + + PR fortran/57458 + * interface.c (compare_parameter): Update C1239/C1240 constraint + check for assumed-rank/TS29113. + +2013-05-29 Tobias Burnus <burnus@net-b.de> PR fortran/37336 * class.c (finalize_component): Fix coarray array refs. @@ -15,7 +21,7 @@ BT_CLASS allocations. * trans-stmt.c (gfc_trans_allocate): Ditto. -2013-05-28 Tobias Burnus <burnus@net-b.de> +2013-05-29 Tobias Burnus <burnus@net-b.de> PR fortran/37336 * resolve.c (gfc_resolve_finalizers): Remove not implemented error. diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 2f8c6a5..adc4e63 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -2031,14 +2031,15 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual, || actual->symtree->n.sym->attr.volatile_) && (formal->attr.asynchronous || formal->attr.volatile_) && actual->rank && !gfc_is_simply_contiguous (actual, true) - && ((formal->as->type != AS_ASSUMED_SHAPE && !formal->attr.pointer) + && ((formal->as->type != AS_ASSUMED_SHAPE + && formal->as->type != AS_ASSUMED_RANK && !formal->attr.pointer) || formal->attr.contiguous)) { if (where) - gfc_error ("Dummy argument '%s' has to be a pointer or assumed-shape " - "array without CONTIGUOUS attribute - as actual argument at" - " %L is not simply contiguous and both are ASYNCHRONOUS " - "or VOLATILE", formal->name, &actual->where); + gfc_error ("Dummy argument '%s' has to be a pointer, assumed-shape or " + "assumed-rank array without CONTIGUOUS attribute - as actual" + " argument at %L is not simply contiguous and both are " + "ASYNCHRONOUS or VOLATILE", formal->name, &actual->where); return 0; } |