diff options
author | Janus Weil <janus@gcc.gnu.org> | 2014-01-06 12:31:34 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2014-01-06 12:31:34 +0100 |
commit | 04ba12ef8d883480ed9a178cef4e1e36be919c54 (patch) | |
tree | 7617bdd6da75d1dadd31463961b9183362654ba1 /gcc | |
parent | c7d19c0b588cc00957d7e40d75d336c41e73fbb3 (diff) | |
download | gcc-04ba12ef8d883480ed9a178cef4e1e36be919c54.zip gcc-04ba12ef8d883480ed9a178cef4e1e36be919c54.tar.gz gcc-04ba12ef8d883480ed9a178cef4e1e36be919c54.tar.bz2 |
re PR fortran/59023 (ICE in gfc_search_interface with BIND(C))
2014-01-06 Janus Weil <janus@gcc.gnu.org>
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 <janus@gcc.gnu.org>
PR fortran/59023
* gfortran.dg/bind_c_procs_2.f90: New.
From-SVN: r206355
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/bind_c_procs_2.f90 | 22 |
4 files changed, 36 insertions, 1 deletions
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 <janus@gcc.gnu.org> + + 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 <janus@gcc.gnu.org> 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 <janus@gcc.gnu.org> + + PR fortran/59023 + * gfortran.dg/bind_c_procs_2.f90: New. + 2014-01-05 John David Anglin <danglin@gcc.gnu.org> * 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 <fxcoudert@gcc.gnu.org> + + 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 |