summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/external_procedures_1.f90
blob: de273d52ea0aae02281f1ab8aa8ef3504da99630 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
! { 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