aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Schlüter <tobi@gcc.gnu.org>2006-05-07 15:46:02 +0200
committerTobias Schlüter <tobi@gcc.gnu.org>2006-05-07 15:46:02 +0200
commitd0bd09f613cb8e84c6ee5319b58faa526014b4ef (patch)
treef70b103b3afbabd2c2a76ed7d4ff05e19b60dea1 /gcc
parented52affe53af75a099b132ed9957f3df28636f49 (diff)
downloadgcc-d0bd09f613cb8e84c6ee5319b58faa526014b4ef.zip
gcc-d0bd09f613cb8e84c6ee5319b58faa526014b4ef.tar.gz
gcc-d0bd09f613cb8e84c6ee5319b58faa526014b4ef.tar.bz2
re PR fortran/27457 (ICE in match_case_eos())
fortran/ PR fortran/27457 * match.c (match_case_eos): Error out on garbage following CASE(...). testsuite/ PR fortran/27457 * gfortran.dg/select_6.f90: New. From-SVN: r113602
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/match.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/select_6.f9010
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index cd09eda..e76b07e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-05-07 Tobias Schlter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR fortran/27457
+ * match.c (match_case_eos): Error out on garbage following
+ CASE(...).
+
2006-05-07 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24813
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 865781f..81bbb23 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -3024,6 +3024,11 @@ match_case_eos (void)
if (gfc_match_eos () == MATCH_YES)
return MATCH_YES;
+ /* If the case construct doesn't have a case-construct-name, we
+ should have matched the EOS. */
+ if (!gfc_current_block ())
+ return MATCH_ERROR;
+
gfc_gobble_whitespace ();
m = gfc_match_name (name);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7ddd103..5ac84b0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-07 Tobias Schlter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR fortran/27457
+ * gfortran.dg/select_6.f90: New.
+
2006-05-07 Richard Guenther <rguenther@suse.de>
PR tree-optimization/27136
diff --git a/gcc/testsuite/gfortran.dg/select_6.f90 b/gcc/testsuite/gfortran.dg/select_6.f90
new file mode 100644
index 0000000..2d995b0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/select_6.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! PR fortran/27457
+! This lead to a segfault previously.
+ implicit none
+ integer(kind=1) :: i
+ real :: r(3)
+ select case (i)
+ case (129) r(4) = 0 { dg-error "Unclassifiable" }
+ end select
+ end