! { 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
