mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-27 21:15:20 +08:00
re PR fortran/55593 (Bogus error on passing DO LOOP variable)
2012-12-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/55593 * frontend-passes.c (doloop_code): Use resolved_sym instead of n.sym->formal for formal argument list to get the correct version for all generic subroutines. 2012-12-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/55593 * gfortran.dg/do_check_8.f90: New test. From-SVN: r194329
This commit is contained in:
parent
5f515aaecb
commit
da52ef4376
@ -1,3 +1,8 @@
|
||||
2012-12-09 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/55593
|
||||
* gfortran.dg/do_check_8.f90: New test.
|
||||
|
||||
2012-12-05 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* resolve.c (generate_component_assignments): Fix memleak.
|
||||
|
@ -1277,7 +1277,11 @@ doloop_code (gfc_code **c, int *walk_subtrees ATTRIBUTE_UNUSED,
|
||||
break;
|
||||
|
||||
case EXEC_CALL:
|
||||
f = co->symtree->n.sym->formal;
|
||||
|
||||
if (co->resolved_sym == NULL)
|
||||
break;
|
||||
|
||||
f = co->resolved_sym->formal;
|
||||
|
||||
/* Withot a formal arglist, there is only unknown INTENT,
|
||||
which we don't check for. */
|
||||
|
@ -1,3 +1,8 @@
|
||||
2012-12-09 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/55593
|
||||
* gfortran.dg/do_check_8.f90: New test.
|
||||
|
||||
2012-12-08 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/vect10.ad[sb]: New test.
|
||||
|
59
gcc/testsuite/gfortran.dg/do_check_8.f90
Normal file
59
gcc/testsuite/gfortran.dg/do_check_8.f90
Normal file
@ -0,0 +1,59 @@
|
||||
! { dg-do compile }
|
||||
! PR 55593 - bogus error with generic subroutines
|
||||
module foo
|
||||
implicit none
|
||||
interface sub
|
||||
subroutine sub2(i)
|
||||
integer, intent(in) :: i
|
||||
end subroutine sub2
|
||||
subroutine sub(i)
|
||||
integer, dimension(:), intent(out) :: i
|
||||
end subroutine sub
|
||||
end interface sub
|
||||
|
||||
interface tub2
|
||||
subroutine tub2(i)
|
||||
integer, intent(in) :: i
|
||||
end subroutine tub2
|
||||
subroutine tub(i)
|
||||
integer, dimension(:), intent(out) :: i
|
||||
end subroutine tub
|
||||
end interface tub2
|
||||
|
||||
interface func
|
||||
integer function ifunc(i)
|
||||
integer, intent(in) :: i
|
||||
end function ifunc
|
||||
integer function func(i)
|
||||
integer, intent(in) :: i(:)
|
||||
end function func
|
||||
end interface func
|
||||
|
||||
interface igunc
|
||||
integer function igunc(i)
|
||||
integer, intent(in) :: i
|
||||
end function igunc
|
||||
integer function gunc(i)
|
||||
integer, intent(in) :: i(:)
|
||||
end function gunc
|
||||
end interface igunc
|
||||
end module foo
|
||||
|
||||
program main
|
||||
use foo
|
||||
implicit none
|
||||
integer :: i
|
||||
do i=1,10
|
||||
call sub(i)
|
||||
call tub2(i)
|
||||
end do
|
||||
do i=1,10
|
||||
print *,func(i)
|
||||
print *,igunc(i)
|
||||
end do
|
||||
|
||||
do undeclared=1,10 ! { dg-error "has no IMPLICIT type" }
|
||||
call sub(undeclared)
|
||||
end do
|
||||
end program main
|
||||
! { dg-final { cleanup-modules "foo" } }
|
Loading…
Reference in New Issue
Block a user