re PR fortran/24549 ([4.1 only] ICE with invalid pseudo-declaration statement)
authorFrancois-Xavier Coudert <coudert@clipper.ens.fr>
Wed, 10 May 2006 14:51:26 +0000 (16:51 +0200)
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Wed, 10 May 2006 14:51:26 +0000 (14:51 +0000)
PR fortran/24549
* parse.c (reject_statement): Clear gfc_new_block.
* gfortran.dg/error_recovery_1.f90: New test.

From-SVN: r113671

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

index 1b456cdde422af52e7833de8f63d5171025b0bad..05b55314f84554a3eb16939742b7735cf457a86a 100644 (file)
@@ -1,3 +1,8 @@
+2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
+
+       PR fortran/24549
+       * parse.c (reject_statement): Clear gfc_new_block.
+
 2006-05-09  Steven G. Kargl  <kargls@comcast.net>
 
        * invoke.texi: Missed file in previous commit.  Update
index 2b04904a77c4452d0b24e795e54b2f92db492a90..2f358e881be00ce5d4c5ed816642c779b44b2ed0 100644 (file)
@@ -1292,7 +1292,7 @@ accept_statement (gfc_statement st)
 static void
 reject_statement (void)
 {
-
+  gfc_new_block = NULL;
   gfc_undo_symbols ();
   gfc_clear_warning ();
   undo_new_statement ();
index 7e7c9982e7598a6848b25f5759a60de3298533f6..6bcb53e1062ccb3c25a010194cc17e22c156e1dc 100644 (file)
@@ -1,3 +1,8 @@
+2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
+
+       PR fortran/24549
+       * gfortran.dg/error_recovery_1.f90: New test.
+
 2006-05-10  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/27302
diff --git a/gcc/testsuite/gfortran.dg/error_recovery_1.f90 b/gcc/testsuite/gfortran.dg/error_recovery_1.f90
new file mode 100644 (file)
index 0000000..8d4f65b
--- /dev/null
@@ -0,0 +1,15 @@
+! { dg-do compile }
+! PR fortran/24549 (and duplicate PR fortran/27487)
+module gfcbug29_import
+  interface
+     subroutine foo (x)
+       something :: dp ! { dg-error "Unclassifiable statement" }
+       real (kind=dp) :: x ! { dg-error "has not been declared or is a variable, which does not reduce to a constant expression" }
+     end subroutine foo
+  end interface
+end module gfcbug29_import
+
+subroutine FOO
+    X :: I ! { dg-error "Unclassifiable statement" }
+    equivalence (I,I)
+end