aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-07-28 23:12:23 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-07-28 23:12:23 +0000
commit89f1f37ea61d1eff9f01e9a580f44f1964500bc1 (patch)
tree8eac3a67d1d4a1346b76d8f17f86203ad7eee3e1 /gcc
parent204ada0caa0a1ad2f0a534697bec67f9c26f292d (diff)
downloadgcc-89f1f37ea61d1eff9f01e9a580f44f1964500bc1.zip
gcc-89f1f37ea61d1eff9f01e9a580f44f1964500bc1.tar.gz
gcc-89f1f37ea61d1eff9f01e9a580f44f1964500bc1.tar.bz2
re PR fortran/71067 (ICE on data initialization with insufficient value)
2016-07-28 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/71067 * decl.c (match_data_constant): On error, set 'result' to NULL. 2016-07-28 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/71067 * gfortran.dg/pr71067_1.f90: New test. * gfortran.dg/pr71067_2.f90: Ditto. From-SVN: r238842
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/decl.c1
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/pr71067_1.f905
-rw-r--r--gcc/testsuite/gfortran.dg/pr71067_2.f907
5 files changed, 24 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 752fb02..b9ca106 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,10 @@
2016-07-28 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/71067
+ * decl.c (match_data_constant): On error, set 'result' to NULL.
+
+2016-07-28 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/71799
* resolve.c(gfc_resolve_iterator): Failure of type conversion need
not ICE.
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 1b62833..cf75039 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -395,6 +395,7 @@ match_data_constant (gfc_expr **result)
{
gfc_error ("Symbol %qs must be a PARAMETER in DATA statement at %C",
name);
+ *result = NULL;
return MATCH_ERROR;
}
else if (dt_sym && gfc_fl_struct (dt_sym->attr.flavor))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 239cf67..a588afe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2016-07-28 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/71067
+ * gfortran.dg/pr71067_1.f90: New test.
+ * gfortran.dg/pr71067_2.f90: Ditto.
+
2016-07-28 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/vec-extract-1.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr71067_1.f90 b/gcc/testsuite/gfortran.dg/pr71067_1.f90
new file mode 100644
index 0000000..76fbcfb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr71067_1.f90
@@ -0,0 +1,5 @@
+program p
+ integer :: i = 0
+ integer :: z(2)
+ data z /2*i/ ! { dg-error "must be a PARAMETER in DATA" }
+end
diff --git a/gcc/testsuite/gfortran.dg/pr71067_2.f90 b/gcc/testsuite/gfortran.dg/pr71067_2.f90
new file mode 100644
index 0000000..6fac4c5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr71067_2.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+program p
+ integer :: a(2), b(2), c(2)
+ data a /2*b1'/ ! { dg-error "must be a PARAMETER in DATA" }
+ data b /2*o1' ! { dg-error "must be a PARAMETER in DATA" }
+ data c /2*z1 ! { dg-error "must be a PARAMETER in DATA" }
+end