[Bug fortran/87922] ICE in gfc_wide_strlen, at fortran/scanner.c:142
kargl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Nov 7 20:51:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87922
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P4
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-11-07
Target Milestone|--- |9.0
Ever confirmed|0 |1
--- Comment #1 from kargl at gcc dot gnu.org ---
Index: gcc/fortran/io.c
===================================================================
--- gcc/fortran/io.c (revision 265885)
+++ gcc/fortran/io.c (working copy)
@@ -2232,6 +2232,21 @@ gfc_match_open (void)
if (!is_char_type ("ASYNCHRONOUS", open->asynchronous))
goto cleanup;
+ if (open->asynchronous->ts.kind != 1)
+ {
+ gfc_error ("ASYNCHRONOUS= specifier at %L must have be of default "
+ "CHARACTER kind", &open->asynchronous->where);
+ return MATCH_ERROR;
+ }
+
+ if (open->asynchronous->expr_type == EXPR_ARRAY
+ || open->asynchronous->expr_type == EXPR_STRUCTURE)
+ {
+ gfc_error ("ASYNCHRONOUS= specifier at %L must have be scalar",
+ &open->asynchronous->where);
+ return MATCH_ERROR;
+ }
+
if (open->asynchronous->expr_type == EXPR_CONSTANT)
{
static const char * asynchronous[] = { "YES", "NO", NULL };
@@ -3792,6 +3807,21 @@ if (condition) \
if (!is_char_type ("ASYNCHRONOUS", dt->asynchronous))
return MATCH_ERROR;
+
+ if (dt->asynchronous->ts.kind != 1)
+ {
+ gfc_error ("ASYNCHRONOUS= specifier at %L must have be of default "
+ "CHARACTER kind", &dt->asynchronous->where);
+ return MATCH_ERROR;
+ }
+
+ if (dt->asynchronous->expr_type == EXPR_ARRAY
+ || dt->asynchronous->expr_type == EXPR_STRUCTURE)
+ {
+ gfc_error ("ASYNCHRONOUS= specifier at %L must have be scalar",
+ &dt->asynchronous->where);
+ return MATCH_ERROR;
+ }
if (!compare_to_allowed_values
("ASYNCHRONOUS", asynchronous, NULL, NULL,
More information about the Gcc-bugs
mailing list