aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/array.c
diff options
context:
space:
mode:
authorMark Eggleston <mark.eggleston@codethink.com>2019-12-19 15:13:25 +0000
committerMark Eggleston <markeggleston@gcc.gnu.org>2019-12-19 15:13:25 +0000
commit8405874a0e2db1806332ead2dcf3e9ec563075aa (patch)
tree90a26d11226d612f5fda08c8d2c36feb304072ce /gcc/fortran/array.c
parentaa0e90e7bff935856212b64236cd540acccc66a0 (diff)
downloadgcc-8405874a0e2db1806332ead2dcf3e9ec563075aa.zip
gcc-8405874a0e2db1806332ead2dcf3e9ec563075aa.tar.gz
gcc-8405874a0e2db1806332ead2dcf3e9ec563075aa.tar.bz2
Prevent conversion of character data in array constructors.
Fix for PR fortran/92896 [10 Regression] [DEC] ICE in reduce_unary, at fortran/arith.c:1283. This was caused by an unintended side affect of "Allow CHARACTER literals in assignments and data statements" (revision 277975). If the conversion occurs in a array constructor it is rejected. From-SVN: r279583
Diffstat (limited to 'gcc/fortran/array.c')
-rw-r--r--gcc/fortran/array.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index 1834d2f..bfd4612 100644
--- a/gcc/fortran/array.c
+++ b/gcc/fortran/array.c
@@ -1185,9 +1185,10 @@ walk_array_constructor (gfc_typespec *ts, gfc_constructor_base head)
if (m == MATCH_ERROR)
return m;
}
- else if (!gfc_convert_type (e, ts, 1) && e->ts.type != BT_UNKNOWN)
+ else if (!gfc_convert_type_warn (e, ts, 1, 1, true)
+ && e->ts.type != BT_UNKNOWN)
return MATCH_ERROR;
- }
+ }
return MATCH_YES;
}
@@ -1386,7 +1387,7 @@ check_element_type (gfc_expr *expr, bool convert)
return 0;
if (convert)
- return gfc_convert_type(expr, &constructor_ts, 1) ? 0 : 1;
+ return gfc_convert_type_warn (expr, &constructor_ts, 1, 1, true) ? 0 : 1;
gfc_error ("Element in %s array constructor at %L is %s",
gfc_typename (&constructor_ts), &expr->where,