OSDN Git Service

* primary.c (gfc_match_rvalue): Handle ENTRY the same way
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 8 Jul 2005 10:06:57 +0000 (10:06 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 8 Jul 2005 10:06:57 +0000 (10:06 +0000)
as FUNCTION.

* gfortran.fortran-torture/execute/entry_10.f90: New test.

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

gcc/fortran/ChangeLog
gcc/fortran/primary.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/execute/entry_10.f90 [new file with mode: 0644]

index 5de8b3c..b09cb7e 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-08  Jakub Jelinek  <jakub@redhat.com>
+
+       * primary.c (gfc_match_rvalue): Handle ENTRY the same way
+       as FUNCTION.
+
 2005-07-07  Jakub Jelinek  <jakub@redhat.com>
 
        * scanner.c (load_line): Add pbuflen argument, don't make
index f6807d5..36e5eb9 100644 (file)
@@ -1846,11 +1846,24 @@ gfc_match_rvalue (gfc_expr ** result)
 
   gfc_set_sym_referenced (sym);
 
-  if (sym->attr.function && sym->result == sym
-      && (gfc_current_ns->proc_name == sym
+  if (sym->attr.function && sym->result == sym)
+    {
+      if (gfc_current_ns->proc_name == sym
          || (gfc_current_ns->parent != NULL
-             && gfc_current_ns->parent->proc_name == sym)))
-    goto variable;
+             && gfc_current_ns->parent->proc_name == sym))
+       goto variable;
+
+      if (sym->attr.entry
+         && (sym->ns == gfc_current_ns
+             || sym->ns == gfc_current_ns->parent))
+       {
+         gfc_entry_list *el = NULL;
+         
+         for (el = sym->ns->entries; el; el = el->next)
+           if (sym == el->sym)
+             goto variable;
+       }
+    }
 
   if (sym->attr.function || sym->attr.external || sym->attr.intrinsic)
     goto function0;
index 67c70d4..2a06854 100644 (file)
@@ -1,3 +1,7 @@
+2005-07-08  Jakub Jelinek  <jakub@redhat.com>
+
+       * gfortran.fortran-torture/execute/entry_10.f90: New test.
+
 2005-07-07  Geoffrey Keating  <geoffk@apple.com>
 
        * gcc.dg/darwin-version-1.c: New.
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/entry_10.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/entry_10.f90
new file mode 100644 (file)
index 0000000..0c21d76
--- /dev/null
@@ -0,0 +1,13 @@
+       function foo ()
+       foo = 4
+       foo = foo / 2
+       return
+       entry bar ()
+       bar = 9
+       bar = bar / 3
+       end
+
+       program entrytest
+       if (foo () .ne. 2) call abort ()
+       if (bar () .ne. 3) call abort ()
+       end