view gcc/testsuite/gfortran.dg/external_procedures_1.f90 @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 04ced10e8804
children
line wrap: on
line source

! { dg-do compile }
! { dg-options "-std=f95" }
!
! This tests the patch for PR25024.

! PR25024 - The external attribute for subroutine a would cause an ICE.
  subroutine A ()
    EXTERNAL A  ! { dg-error "EXTERNAL attribute conflicts with SUBROUTINE" }
  END

function ext (y)  ! { dg-error "EXTERNAL attribute conflicts with FUNCTION" }
  real ext, y
  external ext
  !ext = y * y
end function ext

function ext1 (y)
  real ext1, y
  external z        ! OK no conflict
  ext1 = y * y
end function ext1

program main
  real ext, inval
  external ext       ! OK, valid external reference.
  external main      ! { dg-error "PROGRAM attribute conflicts with EXTERNAL" }
  interface
    function ext1 (y)
      real ext1, y
      external ext1
    end function ext1  ! { dg-error "Duplicate EXTERNAL attribute" }
  end interface
  inval = 1.0
  print *, ext(inval)
  print *, ext1(inval)
  print *, inv(inval)
contains
  function inv (y)  ! { dg-error "EXTERNAL attribute conflicts with FUNCTION" }
    real inv, y
    external inv
    !inv = y * y * y
  end function inv
end program main