aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2018-01-13 20:41:00 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2018-01-13 20:41:00 +0000
commitf208c5ccc76fe9f15776e62d466ccb8f565d2284 (patch)
tree3a36687995781a9d97613d60463d8da90be8f6d7 /gcc/fortran/resolve.c
parentf36180f4a415cb579461f8f3e79a1a4aa80e6be8 (diff)
downloadgcc-f208c5ccc76fe9f15776e62d466ccb8f565d2284.zip
gcc-f208c5ccc76fe9f15776e62d466ccb8f565d2284.tar.gz
gcc-f208c5ccc76fe9f15776e62d466ccb8f565d2284.tar.bz2
re PR fortran/82007 (DTIO write format stored in a string leads to severe errors)
2018-01-13 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/82007 * resolve.c (resolve_transfer): Delete code looking for 'DT' format specifiers in format strings. Set formatted to true if a format string or format label is present. * trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix whitespace. From-SVN: r256649
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index e9f91d8..6756871 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -9198,19 +9198,9 @@ resolve_transfer (gfc_code *code)
else
derived = ts->u.derived->components->ts.u.derived;
- if (dt->format_expr)
- {
- char *fmt;
- fmt = gfc_widechar_to_char (dt->format_expr->value.character.string,
- -1);
- if (strtok (fmt, "DT") != NULL)
- formatted = true;
- }
- else if (dt->format_label == &format_asterisk)
- {
- /* List directed io must call the formatted DTIO procedure. */
- formatted = true;
- }
+ /* Determine when to use the formatted DTIO procedure. */
+ if (dt && (dt->format_expr || dt->format_label))
+ formatted = true;
write = dt->dt_io_kind->value.iokind == M_WRITE
|| dt->dt_io_kind->value.iokind == M_PRINT;