diff options
author | Janus Weil <janus@gcc.gnu.org> | 2010-12-17 13:31:54 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2010-12-17 13:31:54 +0100 |
commit | 7ca17033382c71cbfe6cd24da017c2c333b114af (patch) | |
tree | 30a6e0f0a3a917b592de55c9931bebb93e7e552f | |
parent | eab89c86a2e7366d3437107f6568ff41d98b0453 (diff) | |
download | gcc-7ca17033382c71cbfe6cd24da017c2c333b114af.zip gcc-7ca17033382c71cbfe6cd24da017c2c333b114af.tar.gz gcc-7ca17033382c71cbfe6cd24da017c2c333b114af.tar.bz2 |
re PR fortran/46849 ([OOP] MODULE PROCEDURE resolution does not work in BLOCK or SELECT TYPE)
2010-12-17 Janus Weil <janus@gcc.gnu.org>
Tobias Burnus <burnus@gcc.gnu.org>
PR fortran/46849
* resolve.c (resolve_symbol): Remove symbols that wrongly ended up
in a local BLOCK namespace.
2010-12-17 Janus Weil <janus@gcc.gnu.org>
PR fortran/46849
* gfortran.dg/block_9.f08: New.
Co-Authored-By: Tobias Burnus <burnus@gcc.gnu.org>
From-SVN: r167978
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/block_9.f08 | 23 |
4 files changed, 38 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2c4de57..960a6e8 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2010-12-17 Janus Weil <janus@gcc.gnu.org> + Tobias Burnus <burnus@gcc.gnu.org> + + PR fortran/46849 + * resolve.c (resolve_symbol): Remove symbols that wrongly ended up + in a local BLOCK namespace. + 2010-12-15 Jakub Jelinek <jakub@redhat.com> PR fortran/46945 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index a27fe2d..7081146 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -11784,7 +11784,9 @@ resolve_symbol (gfc_symbol *sym) for (ns = gfc_current_ns->parent; ns; ns = ns->parent) { symtree = gfc_find_symtree (ns->sym_root, sym->name); - if (symtree && symtree->n.sym->generic) + if (symtree && (symtree->n.sym->generic || + (symtree->n.sym->attr.flavor == FL_PROCEDURE + && sym->ns->construct_entities))) { this_symtree = gfc_find_symtree (gfc_current_ns->sym_root, sym->name); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8cfa5c0..e32bf6e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-17 Janus Weil <janus@gcc.gnu.org> + + PR fortran/46849 + * gfortran.dg/block_9.f08: New. + 2010-12-17 Dodji Seketeli <dodji@redhat.com> * g++.dg/debug/dwarf2/self-ref-1.C: New test. diff --git a/gcc/testsuite/gfortran.dg/block_9.f08 b/gcc/testsuite/gfortran.dg/block_9.f08 new file mode 100644 index 0000000..277d1e2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/block_9.f08 @@ -0,0 +1,23 @@ +! { dg-do compile } +! +! PR 46849: [OOP] MODULE PROCEDURE resolution does not work in BLOCK or SELECT TYPE +! +! Contributed by Reinhold Bader <bader@lrz.de> + + implicit none + + block + call init(fun) + end block + +contains + + subroutine init(func) + real, external :: func + end subroutine + + real function fun() + fun = 1.1 + end function + +end |