mirror of
https://github.com/autc04/Retro68.git
synced 2024-09-28 18:56:06 +00:00
85 lines
1.3 KiB
Fortran
85 lines
1.3 KiB
Fortran
! { dg-do run }
|
|
! { dg-options "-ff2c" }
|
|
! Verifies that complex pointer results work with -ff2c
|
|
! try all permutations of result clause in function yes/no
|
|
! and result clause in interface yes/no
|
|
! this is not possible in Fortran 77, but this exercises a previously
|
|
! buggy codepath
|
|
function c() result (r)
|
|
common // z
|
|
complex, pointer :: r
|
|
complex, target :: z
|
|
|
|
r=>z
|
|
end function c
|
|
|
|
function d()
|
|
common // z
|
|
complex, pointer :: d
|
|
complex, target :: z
|
|
|
|
d=>z
|
|
end function d
|
|
|
|
function e()
|
|
common // z
|
|
complex, pointer :: e
|
|
complex, target :: z
|
|
|
|
e=>z
|
|
end function e
|
|
|
|
function f() result(r)
|
|
common // z
|
|
complex, pointer :: r
|
|
complex, target :: z
|
|
|
|
r=>z
|
|
end function f
|
|
|
|
interface
|
|
function c ()
|
|
complex, pointer :: c
|
|
end function c
|
|
end interface
|
|
interface
|
|
function d()
|
|
complex, pointer :: d
|
|
end function d
|
|
end interface
|
|
interface
|
|
function e () result(r)
|
|
complex, pointer :: r
|
|
end function e
|
|
end interface
|
|
interface
|
|
function f () result(r)
|
|
complex, pointer :: r
|
|
end function f
|
|
end interface
|
|
|
|
common // z
|
|
complex, target :: z
|
|
complex, pointer :: p
|
|
|
|
z = (1.,0.)
|
|
p => c()
|
|
z = (2.,0.)
|
|
if (p /= z) STOP 1
|
|
|
|
NULLIFY(p)
|
|
p => d()
|
|
z = (3.,0.)
|
|
if (p /= z) STOP 2
|
|
|
|
NULLIFY(p)
|
|
p => e()
|
|
z = (4.,0.)
|
|
if (p /= z) STOP 3
|
|
|
|
NULLIFY(p)
|
|
p => f()
|
|
z = (5.,0.)
|
|
if (p /= z) STOP 4
|
|
end
|