2007-03-02 Paul Thomas <pault@gcc.gnu.org>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Mar 2007 23:03:26 +0000 (23:03 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Mar 2007 23:03:26 +0000 (23:03 +0000)
    Tobias Burnus  <burnus@net-b.de>

PR fortran/30873
* decl.c (gfc_match_entry): Remove erroneous entry result check.

2007-03-02  Paul Thomas  <pault@gcc.gnu.org>
    Tobias Burnus  <burnus@net-b.de>

PR fortran/30873
* gfortran.dg/entry_9.f90: New test.

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

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

index 9cd70d4..afd9d26 100644 (file)
@@ -1,3 +1,9 @@
+2007-03-02  Paul Thomas  <pault@gcc.gnu.org>
+           Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/30873
+       * decl.c (gfc_match_entry): Remove erroneous entry result check.
+
 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
 
        * Make-lang.in: Add install-pdf target as copied from
index aaa1157..f6ffc1d 100644 (file)
@@ -3030,12 +3030,6 @@ gfc_match_entry (void)
 
          entry->result = result;
        }
-
-      if (proc->attr.recursive && result == NULL)
-       {
-         gfc_error ("RESULT attribute required in ENTRY statement at %C");
-         return MATCH_ERROR;
-       }
     }
 
   if (gfc_match_eos () != MATCH_YES)
index cc6e940..e87707c 100644 (file)
@@ -1,3 +1,9 @@
+2007-03-02  Paul Thomas  <pault@gcc.gnu.org>
+           Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/30873
+       * gfortran.dg/entry_9.f90: New test.
+
 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
 
        PR c++/28253
diff --git a/gcc/testsuite/gfortran.dg/entry_9.f90 b/gcc/testsuite/gfortran.dg/entry_9.f90
new file mode 100644 (file)
index 0000000..1daf49c
--- /dev/null
@@ -0,0 +1,31 @@
+! { dg-do "run" }
+! Check whether RESULT of ENTRY defaults to entry-name.
+! PR fortran/30873
+!
+! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
+!
+MODULE M1
+  CONTAINS
+    FUNCTION F2(K)
+      INTEGER :: F2,K
+      F2=E1(K)
+    END FUNCTION F2
+
+    RECURSIVE FUNCTION F1(I)
+      INTEGER :: F1,I,E1
+      F1=F2(I)
+      RETURN
+     ENTRY E1(I)
+      E1=-I
+      RETURN
+    END FUNCTION F1
+END  MODULE M1
+
+program main
+  use m1
+  if (E1(5) /= -5) call abort()
+  if (F2(4) /= -4) call abort()
+  if (F1(1) /= -1) call abort()
+end program main
+
+! { dg-final { cleanup-modules "m1" } }