aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargls@comcast.net>2006-01-02 22:23:35 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2006-01-02 22:23:35 +0000
commit99f1e970919e08ce15113e28618ec93ddc0cddc4 (patch)
tree7afc0fef569cec594dd978ca946f9533ac38a401
parenta9cc9cc69a8de25ba338b5021dc7667ad2610f7f (diff)
downloadgcc-99f1e970919e08ce15113e28618ec93ddc0cddc4.zip
gcc-99f1e970919e08ce15113e28618ec93ddc0cddc4.tar.gz
gcc-99f1e970919e08ce15113e28618ec93ddc0cddc4.tar.bz2
re PR fortran/24640 ([4.1] ice with invalid label)
PR fortran/24640 * parse.c (next_free): Check for whitespace after the label. * match.c (gfc_match_small_literal_int): Initialize cnt variable. * gfortran.dg/label_2.f90: New test. From-SVN: r109246
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/match.c1
-rw-r--r--gcc/fortran/parse.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/label_2.f9010
5 files changed, 26 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c8c82da..e2f63f6 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-01-02 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/24640
+ * parse.c (next_free): Check for whitespace after the label.
+ * match.c (gfc_match_small_literal_int): Initialize cnt variable.
+
2006-01-01 Steven G. Kargl <kargls@comcast.net>
* ChangeLog: Split previous years into ...
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index e28127b..a07de60 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -151,6 +151,7 @@ gfc_match_small_literal_int (int *value, int *cnt)
gfc_gobble_whitespace ();
c = gfc_next_char ();
+ *cnt = 0;
if (!ISDIGIT (c))
{
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index a0da448..87f36df 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -334,6 +334,10 @@ next_free (void)
do
c = gfc_next_char ();
while (ISDIGIT(c));
+
+ if (!gfc_is_whitespace (c))
+ gfc_error_now ("Non-numeric character in statement label at %C");
+
}
else
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 10f7c25..a312fd0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-02 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/24640
+ * gfortran.dg/label_2.f90: New test.
+
2006-01-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
* g++.dg/lookup/using12.C: Tighten error marker.
diff --git a/gcc/testsuite/gfortran.dg/label_2.f90 b/gcc/testsuite/gfortran.dg/label_2.f90
new file mode 100644
index 0000000..7b87f6c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/label_2.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! PR fortran/24640. We needed to check that whitespace follows
+! a statement label in free form.
+!
+program pr24640
+
+10: a=10 ! { dg-error "character in statement" }
+
+end program
+