OSDN Git Service

gcc/fortran:
authordfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 14 Jul 2007 13:33:51 +0000 (13:33 +0000)
committerdfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 14 Jul 2007 13:33:51 +0000 (13:33 +0000)
2007-07-14  Paul Thomas  <pault@gcc.gnu.org>

        PR fortran/32724
        * parse.c (parse_spec): Emit error on unexpected statement
        function.

gcc/testsuite:
2007-07-14  Daniel Franke  <franke.daniel@gmail.com>

        PR fortran/32724
        * gfortran.dg/stfunc_5.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126638 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 9b0a0a4..3c72673 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-14  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/32724
+       * parse.c (parse_spec): Emit error on unexpected statement
+       function.
+
 2007-07-13  Daniel Franke  <franke.daniel@gmail.com>
 
        * invoke.texi: Unified upper- and lower-case in menus.
index f1f9028..df31bcd 100644 (file)
@@ -1902,6 +1902,13 @@ loop:
 
          break;
 
+       case ST_STATEMENT_FUNCTION:
+         if (gfc_current_state () == COMP_MODULE)
+           {
+             unexpected_statement (st);
+             break;
+           }
+
        default:
          break;
        }
index f84bffc..e858484 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-14  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/32724
+       * gfortran.dg/stfunc_5.f90: New test.
+
 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
 
        * lib/target-supports.exp (check_effective_target_vect_aligned_arrays):
diff --git a/gcc/testsuite/gfortran.dg/stfunc_5.f90 b/gcc/testsuite/gfortran.dg/stfunc_5.f90
new file mode 100644 (file)
index 0000000..09b6da3
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+!
+! PR fortran/32724
+! ICE on statement function in specification part of module
+
+MODULE stmt
+f(x) = x**2      ! { dg-error "Unexpected STATEMENT FUNCTION" }
+END MODULE
+
+! { dg-final { cleanup-modules "stmt" } }
+