https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87127
Bug ID: 87127
Summary: External function not recognised from within an
associate block
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: pault at gcc dot gnu.org
Target Milestone: ---
Posted on:
https://groups.google.com/forum/#!topic/comp.lang.fortran/Jc_3vZeATdU
function exfunc(i)
implicit none
integer :: exfunc,i
exfunc = 2*i
end function
! contents of test.f90
program test
implicit none
integer :: exfunc,i
integer,parameter :: array(2)=[6,7]
associate(i=>array(1))
write(*,*) exfunc(i)
end associate
end program
produces
write(*,*) exfunc(i)
1
Error: ‘exfunc’ at (1) is not a function
Removing the associate block, invoking 'exfunc' outside it or declaring it
explicitly to be a function all remove the error.
Other brands compile the testcase without error.
At first glance, it seems that resolution of symbols in the main program is
occurring without taking the associate block into account and that this is
resolved afterwards.