re PR fortran/44360 (wrong-code: host-associated procedure wrongly favoured to use-associated one)

2010-06-02  Tobias Burnus  <burnus@net-b.de>

        PR fortran/44360
        * parse.c (gfc_fixup_sibling_symbols): Do not "fix"
        use-associated symbols.

2010-06-02  Tobias Burnus  <burnus@net-b.de>

        PR fortran/44360
        * gfortran.dg/use_13.f90: New test case.

From-SVN: r160140
This commit is contained in:
Tobias Burnus 2010-06-02 08:06:27 +02:00 committed by Tobias Burnus
parent 39883b559f
commit 59ed407a06
4 changed files with 57 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2010-06-02 Tobias Burnus <burnus@net-b.de>
PR fortran/44360
* parse.c (gfc_fixup_sibling_symbols): Do not "fix" use-associated
symbols.
2010-05-14 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/44135

View File

@ -3322,6 +3322,7 @@ gfc_fixup_sibling_symbols (gfc_symbol *sym, gfc_namespace *siblings)
|| (old_sym->ts.type != BT_UNKNOWN
&& !old_sym->attr.implicit_type)
|| old_sym->attr.flavor == FL_PARAMETER
|| old_sym->attr.use_assoc
|| old_sym->attr.in_common
|| old_sym->attr.in_equivalence
|| old_sym->attr.data

View File

@ -1,3 +1,8 @@
2010-06-02 Tobias Burnus <burnus@net-b.de>
PR fortran/44360
* gfortran.dg/use_13.f90: New test case.
2010-05-27 Jason Merrill <jason@redhat.com>
PR c++/43555

View File

@ -0,0 +1,45 @@
! { dg-do run }
!
! PR fortran/44360
!
! Test-case based on a contribution of Vittorio Zecca.
!
! The used subroutine was not the use-associated but the host associated one!
! The use-associated function/variable were already working properly.
!
module m
integer :: var = 43
contains
integer function fun()
fun = 42
end function fun
subroutine fun2()
var = 44
end subroutine fun2
end module m
module m2
integer :: var = -2
contains
subroutine test()
! All procedures/variables below refer to the ones in module "m"
! and not to the siblings in this module "m2".
use m
if (fun() /= 42) call abort()
if (var /= 43) call abort()
call fun2()
if (var /= 44) call abort()
end subroutine test
integer function fun()
call abort()
fun = -3
end function fun
subroutine fun2()
call abort()
end subroutine fun2
end module m2
use m2
call test()
end
! { dg-final { cleanup-modules "m m2" } }