]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/30792 (DATA implied-do substring allowed with -std=f95/f2003)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 24 Feb 2018 20:24:27 +0000 (20:24 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 24 Feb 2018 20:24:27 +0000 (20:24 +0000)
2018-02-24  Steven G. Kargl <kargl@gcc.gnu.org>

PR fortran/30792
* decl.c (gfc_match_data): Check for invalid substring in
data-implied-do

2018-02-24  Steven G. Kargl <kargl@gcc.gnu.org>

PR fortran/30792
* gfortran.dg/data_substring.f90: New test.

From-SVN: r257964

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/data_substring.f90 [new file with mode: 0644]

index e5265bf55cad41db9abd7c99f029cfad2c6f30af..bb1743d71b017692fecab835c63cf85a03e57d1b 100644 (file)
@@ -1,3 +1,9 @@
+2018-02-24  Steven G. Kargl <kargl@gcc.gnu.org>
+
+       PR fortran/30792
+       * decl.c (gfc_match_data): Check for invalid substring in
+       data-implied-do
+
 2018-02-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        Backport from trunk
index e9a6440ff2af5c804077dd903eead742d834ba02..a3ac70933f034b0fe7e6887e0708df956ae9fe80 100644 (file)
@@ -573,6 +573,20 @@ gfc_match_data (void)
       if (m != MATCH_YES)
        goto cleanup;
 
+      if (new_data->var->iter.var
+         && new_data->var->iter.var->ts.type == BT_INTEGER
+         && new_data->var->iter.var->symtree->n.sym->attr.implied_index == 1
+         && new_data->var->list
+         && new_data->var->list->expr
+         && new_data->var->list->expr->ts.type == BT_CHARACTER
+         && new_data->var->list->expr->ref
+         && new_data->var->list->expr->ref->type == REF_SUBSTRING)
+       {
+         gfc_error ("Invalid substring in data-implied-do at %L in DATA "
+                    "statement", &new_data->var->list->expr->where);
+         goto cleanup;
+       }
+
       m = top_val_list (new_data);
       if (m != MATCH_YES)
        goto cleanup;
index 8337c4c3b9d3528fe70bcd07396300f60e206754..8305efe3201c0399bd9f62269f3e35d85f241219 100644 (file)
@@ -1,3 +1,8 @@
+2018-02-24  Steven G. Kargl <kargl@gcc.gnu.org>
+
+       PR fortran/30792
+       * gfortran.dg/data_substring.f90: New test.
+
 2018-02-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        Backport from trunk
diff --git a/gcc/testsuite/gfortran.dg/data_substring.f90 b/gcc/testsuite/gfortran.dg/data_substring.f90
new file mode 100644 (file)
index 0000000..6d6b2c0
--- /dev/null
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! PR fortran/30792
+character string*1025
+integer i
+data (string(i:i),i=1,1025)/1025*'?'/  ! { dg-error "Invalid substring" }
+end