From 04ba12ef8d883480ed9a178cef4e1e36be919c54 Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Mon, 6 Jan 2014 12:31:34 +0100 Subject: re PR fortran/59023 (ICE in gfc_search_interface with BIND(C)) 2014-01-06 Janus Weil PR fortran/59023 PR fortran/59662 * resolve.c (resolve_global_procedure): Don't apply to c-binding procedures. (gfc_verify_binding_labels): Remove duplicate line. 2014-01-06 Janus Weil PR fortran/59023 * gfortran.dg/bind_c_procs_2.f90: New. From-SVN: r206355 --- gcc/fortran/ChangeLog | 8 ++++++++ gcc/fortran/resolve.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/bind_c_procs_2.f90 | 22 ++++++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/bind_c_procs_2.f90 (limited to 'gcc') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 40a26db..5f24087d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2014-01-06 Janus Weil + + PR fortran/59023 + PR fortran/59662 + * resolve.c (resolve_global_procedure): Don't apply to c-binding + procedures. + (gfc_verify_binding_labels): Remove duplicate line. + 2014-01-04 Janus Weil PR fortran/59547 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 0e80f49..e78788b 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -2351,6 +2351,7 @@ resolve_global_procedure (gfc_symbol *sym, locus *where, if ((sym->attr.if_source == IFSRC_UNKNOWN || sym->attr.if_source == IFSRC_IFBODY) && gsym->type != GSYM_UNKNOWN + && !gsym->binding_label && gsym->ns && gsym->ns->resolved != -1 && gsym->ns->proc_name @@ -10163,7 +10164,6 @@ gfc_verify_binding_labels (gfc_symbol *sym) gsym->where = sym->declared_at; gsym->sym_name = sym->name; gsym->binding_label = sym->binding_label; - gsym->binding_label = sym->binding_label; gsym->ns = sym->ns; gsym->mod_name = module; if (sym->attr.function) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bf4b0f3..c46c8df 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-06 Janus Weil + + PR fortran/59023 + * gfortran.dg/bind_c_procs_2.f90: New. + 2014-01-05 John David Anglin * gcc.dg/tree-ssa/reassoc-33.c: Don't run on hppa*-*-*. diff --git a/gcc/testsuite/gfortran.dg/bind_c_procs_2.f90 b/gcc/testsuite/gfortran.dg/bind_c_procs_2.f90 new file mode 100644 index 0000000..d3e751c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/bind_c_procs_2.f90 @@ -0,0 +1,22 @@ +! { dg-do compile } +! +! PR 59023: [4.9 regression] ICE in gfc_search_interface with BIND(C) +! +! Contributed by Francois-Xavier Coudert + + type t + integer hidden + end type + +contains + + subroutine bar + type(t) :: toto + interface + integer function helper() bind(c) + end function + end interface + toto = t(helper()) + end subroutine + +end -- cgit v1.1