aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/interface.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2013-05-30 09:29:49 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2013-05-30 09:29:49 +0200
commitf188272d9f6affacbed8055babe1c02601b35d4c (patch)
tree5dde3fa7e4735c312369bdcc1f9b907ca6514718 /gcc/fortran/interface.c
parent0571154ad5d7c206b2a46b4995287bdf9bfbb988 (diff)
downloadgcc-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/interface.c')
-rw-r--r--gcc/fortran/interface.c11
1 files changed, 6 insertions, 5 deletions
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;
}