Commit 2050626a by Steven G. Kargl

re PR fortran/68318 (ICE on duplicate entry declarations)

2015-11-12  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/68318
	* decl.c (get_proc_name): Increment reference count for ENTRY.
	While here, fix comment and use postfix ++ for consistency.

2015-11-12  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/68318
	* gfortran.dg/pr68318_1.f90: New test.
	* gfortran.dg/pr68318_2.f90: Ditto.

From-SVN: r230278
parent be561c63
2015-11-12 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68318
* decl.c (get_proc_name): Increment reference count for ENTRY.
While here, fix comment and use postfix ++ for consistency.
2015-11-11 Andrew MacLeod <amacleod@redhat.com> 2015-11-11 Andrew MacLeod <amacleod@redhat.com>
* array.c: Remove unused header files. * array.c: Remove unused header files.
......
...@@ -925,6 +925,7 @@ get_proc_name (const char *name, gfc_symbol **result, bool module_fcn_entry) ...@@ -925,6 +925,7 @@ get_proc_name (const char *name, gfc_symbol **result, bool module_fcn_entry)
gfc_find_sym_tree (name, gfc_current_ns, 0, &st); gfc_find_sym_tree (name, gfc_current_ns, 0, &st);
st->n.sym = *result; st->n.sym = *result;
st = gfc_get_unique_symtree (gfc_current_ns); st = gfc_get_unique_symtree (gfc_current_ns);
sym->refs++;
st->n.sym = sym; st->n.sym = sym;
} }
} }
...@@ -971,7 +972,7 @@ get_proc_name (const char *name, gfc_symbol **result, bool module_fcn_entry) ...@@ -971,7 +972,7 @@ get_proc_name (const char *name, gfc_symbol **result, bool module_fcn_entry)
/* Trap another encompassed procedure with the same name. All /* Trap another encompassed procedure with the same name. All
these conditions are necessary to avoid picking up an entry these conditions are necessary to avoid picking up an entry
whose name clashes with that of the encompassing procedure; whose name clashes with that of the encompassing procedure;
this is handled using gsymbols to register unique,globally this is handled using gsymbols to register unique, globally
accessible names. */ accessible names. */
if (sym->attr.flavor != 0 if (sym->attr.flavor != 0
&& sym->attr.proc != 0 && sym->attr.proc != 0
...@@ -9051,7 +9052,7 @@ gfc_match_final_decl (void) ...@@ -9051,7 +9052,7 @@ gfc_match_final_decl (void)
/* Add this symbol to the list of finalizers. */ /* Add this symbol to the list of finalizers. */
gcc_assert (block->f2k_derived); gcc_assert (block->f2k_derived);
++sym->refs; sym->refs++;
f = XCNEW (gfc_finalizer); f = XCNEW (gfc_finalizer);
f->proc_sym = sym; f->proc_sym = sym;
f->proc_tree = NULL; f->proc_tree = NULL;
......
2015-11-12 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68318
* gfortran.dg/pr68318_1.f90: New test.
* gfortran.dg/pr68318_2.f90: Ditto.
2015-11-12 James Norris <jnorris@codesourcery.com> 2015-11-12 James Norris <jnorris@codesourcery.com>
Joseph Myers <joseph@codesourcery.com> Joseph Myers <joseph@codesourcery.com>
......
! { dg-do compile }
! { dg-options "-O0"
! PR fortran/68318
! Original code submitted by Gerhard Steinmetz
! <gerhard dot steinmetz dot fortran at t-online dot de>
!
module m
implicit none
contains
subroutine s1
entry e ! { dg-error "(2)" }
end
subroutine s2
entry e ! { dg-error "is already defined" }
end
end module
! { dg-prune-output "Duplicate ENTRY attribute specified" }
! { dg-do compile }
! PR fortran/68318
! Original code submitted by Gerhard Steinmetz
! <gerhard dot steinmetz dot fortran at t-online dot de>
!
module m1
implicit none
contains
subroutine s1
entry e
end
end module
module m2
use m1 ! { dg-error "(2)" }
implicit none
contains
subroutine s2
entry e ! { dg-error "is already defined" }
end
end module
! { dg-prune-output "Cannot change attribute" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment