101 lines
3.2 KiB
Fortran
101 lines
3.2 KiB
Fortran
! { dg-do compile }
|
|
! This program tests the patch for PRs 20881, 23308, 25538 & 25710
|
|
! Assembled from PRs by Paul Thomas <pault@gcc.gnu.org>
|
|
module m
|
|
contains
|
|
subroutine g(x) ! Local entity
|
|
REAL :: x
|
|
x = 1.0
|
|
end subroutine g
|
|
end module m
|
|
! Error only appears once but testsuite associates with both lines.
|
|
function f(x) ! { dg-error "is already being used as a FUNCTION" }
|
|
REAL :: f, x
|
|
f = x
|
|
end function f
|
|
|
|
function g(x) ! Global entity
|
|
REAL :: g, x
|
|
g = x
|
|
|
|
! PR25710==========================================================
|
|
! Lahey -2607-S: "SOURCE.F90", line 26:
|
|
! Function 'f' cannot be referenced as a subroutine. The previous
|
|
! definition is in 'line 12'.
|
|
|
|
call f(g) ! { dg-error "is already being used as a FUNCTION" }
|
|
end function g
|
|
! Error only appears once but testsuite associates with both lines.
|
|
function h(x) ! { dg-error "is already being used as a FUNCTION" }
|
|
REAL :: h, x
|
|
h = x
|
|
end function h
|
|
|
|
SUBROUTINE TT()
|
|
CHARACTER(LEN=10), EXTERNAL :: j
|
|
CHARACTER(LEN=10) :: T
|
|
! PR20881===========================================================
|
|
! Error only appears once but testsuite associates with both lines.
|
|
T = j () ! { dg-error "is already being used as a FUNCTION" }
|
|
print *, T
|
|
END SUBROUTINE TT
|
|
|
|
use m ! Main program
|
|
real x
|
|
integer a(10)
|
|
|
|
! PR23308===========================================================
|
|
! Lahey - 2604-S: "SOURCE.F90", line 52:
|
|
! The name 'foo' cannot be specified as both external procedure name
|
|
! and common block name. The previous appearance is in 'line 68'.
|
|
! Error only appears once but testsuite associates with both lines.
|
|
common /foo/ a ! { dg-error "is already being used as a COMMON" }
|
|
|
|
call f (x) ! OK - reference to local entity
|
|
call g (x) ! -ditto-
|
|
|
|
! PR25710===========================================================
|
|
! Lahey - 2607-S: "SOURCE.F90", line 62:
|
|
! Function 'h' cannot be referenced as a subroutine. The previous
|
|
! definition is in 'line 29'.
|
|
|
|
call h (x) ! { dg-error "is already being used as a FUNCTION" }
|
|
|
|
! PR23308===========================================================
|
|
! Lahey - 2521-S: "SOURCE.F90", line 68: Intrinsic procedure name or
|
|
! external procedure name same as common block name 'foo'.
|
|
|
|
call foo () ! { dg-error "is already being used as a COMMON" }
|
|
|
|
contains
|
|
SUBROUTINE f (x) ! Local entity
|
|
real x
|
|
x = 2
|
|
end SUBROUTINE f
|
|
end
|
|
|
|
! PR20881===========================================================
|
|
! Lahey - 2636-S: "SOURCE.F90", line 81:
|
|
! Subroutine 'j' is previously referenced as a function in 'line 39'.
|
|
|
|
SUBROUTINE j (x) ! { dg-error "is already being used as a FUNCTION" }
|
|
integer a(10)
|
|
common /bar/ a ! Global entity foo
|
|
real x
|
|
x = bar(1.0) ! OK for local procedure to have common block name
|
|
contains
|
|
function bar (x)
|
|
real bar, x
|
|
bar = 2.0*x
|
|
end function bar
|
|
END SUBROUTINE j
|
|
|
|
! PR25538===========================================================
|
|
! would ICE with entry and procedure having same names.
|
|
subroutine link2 (namef) ! { dg-error "is already being used as a SUBROUTINE" }
|
|
entry link2 (nameg) ! { dg-error "is already being used as a SUBROUTINE" }
|
|
return
|
|
end
|
|
|
|
! { dg-final { cleanup-modules "m" } }
|