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: r160138
This commit is contained in:
parent
a76135dc57
commit
aac18c0250
4 changed files with 57 additions and 0 deletions
|
@ -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-06-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR fortran/44371
|
||||
|
|
|
@ -3667,6 +3667,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
|
||||
|
|
|
@ -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-06-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR fortran/44371
|
||||
|
|
45
gcc/testsuite/gfortran.dg/use_13.f90
Normal file
45
gcc/testsuite/gfortran.dg/use_13.f90
Normal 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" } }
|
Loading…
Add table
Reference in a new issue