diff options
author | Mark Eggleston <mark.eggleston@codethink.com> | 2019-12-19 15:13:25 +0000 |
---|---|---|
committer | Mark Eggleston <markeggleston@gcc.gnu.org> | 2019-12-19 15:13:25 +0000 |
commit | 8405874a0e2db1806332ead2dcf3e9ec563075aa (patch) | |
tree | 90a26d11226d612f5fda08c8d2c36feb304072ce /gcc/fortran/array.c | |
parent | aa0e90e7bff935856212b64236cd540acccc66a0 (diff) | |
download | gcc-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.c | 7 |
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, |