mirror of
git://slackware.nl/current.git
synced 2025-01-10 05:25:51 +01:00
41 lines
1.4 KiB
Diff
41 lines
1.4 KiB
Diff
|
[PATCH] deferred-shape vs assumed-shape
|
||
|
Steve Kargl sgk@troutmask.apl.washington.edu
|
||
|
Wed Apr 1 20:04:43 GMT 2020
|
||
|
|
||
|
See
|
||
|
https://stackoverflow.com/questions/60972134/whats-wrong-with-the-following-fortran-code-gfortran-dtio-dummy-argument-at
|
||
|
|
||
|
Is A(:) a deferred-shape array or an assumed-shape array? The
|
||
|
answer of course depends on context.
|
||
|
|
||
|
This patch fixes the issue found at the above URL.
|
||
|
|
||
|
Index: gcc/fortran/interface.c
|
||
|
===================================================================
|
||
|
--- gcc/fortran/interface.c (revision 280157)
|
||
|
+++ gcc/fortran/interface.c (working copy)
|
||
|
@@ -4916,10 +4916,15 @@ check_dtio_arg_TKR_intent (gfc_symbol *fsym, bool type
|
||
|
|| ((type != BT_CLASS) && fsym->attr.dimension)))
|
||
|
gfc_error ("DTIO dummy argument at %L must be a scalar",
|
||
|
&fsym->declared_at);
|
||
|
- else if (rank == 1
|
||
|
- && (fsym->as == NULL || fsym->as->type != AS_ASSUMED_SHAPE))
|
||
|
- gfc_error ("DTIO dummy argument at %L must be an "
|
||
|
- "ASSUMED SHAPE ARRAY", &fsym->declared_at);
|
||
|
+ else if (rank == 1)
|
||
|
+ {
|
||
|
+ if (fsym->as == NULL
|
||
|
+ || !(fsym->as->type == AS_ASSUMED_SHAPE
|
||
|
+ || (fsym->as->type == AS_DEFERRED && fsym->attr.dummy
|
||
|
+ && !fsym->attr.allocatable && !fsym->attr.pointer)))
|
||
|
+ gfc_error ("DTIO dummy argument at %L must be an "
|
||
|
+ "ASSUMED-SHAPE ARRAY", &fsym->declared_at);
|
||
|
+ }
|
||
|
|
||
|
if (type == BT_CHARACTER && fsym->ts.u.cl->length != NULL)
|
||
|
gfc_error ("DTIO character argument at %L must have assumed length",
|
||
|
|
||
|
--
|
||
|
Steve
|
||
|
|