aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2007-03-02 23:03:26 +0000
committerTobias Burnus <burnus@gcc.gnu.org>2007-03-03 00:03:26 +0100
commit5115f4aab159775eb45a293e01908d716b73eeea (patch)
tree66afbf9f5ee054453c17e995d558773b4a7bdea4
parent14b8969d485ac437d520adfda86d7ca4b5ff6e4f (diff)
downloadgcc-5115f4aab159775eb45a293e01908d716b73eeea.zip
gcc-5115f4aab159775eb45a293e01908d716b73eeea.tar.gz
gcc-5115f4aab159775eb45a293e01908d716b73eeea.tar.bz2
re PR fortran/30873 ([4.1 only] ENTRY without explict RESULT does not work for recursive functions)
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-02 Paul Thomas <pault@gcc.gnu.org> Tobias Burnus <burnus@net-b.de> PR fortran/30873 * gfortran.dg/entry_9.f90: New test. Co-Authored-By: Tobias Burnus <burnus@net-b.de> From-SVN: r122495
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/decl.c6
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/entry_9.f9031
4 files changed, 43 insertions, 6 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 9cd70d4..afd9d26 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index aaa1157..f6ffc1d 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -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)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cc6e940..e87707c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..1daf49c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/entry_9.f90
@@ -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" } }