https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101632
--- Comment #1 from kargl at gcc dot gnu.org --- F2018 introduced the NON_RECURSIVE prefix for procedures and also made procedures recursive by default. This code is conforming to F2018. module bah contains ! ! non_recursive is F2018. ! non_recursive function foo(i) result(k) integer k integer, intent(in) :: i k = i end function foo ! ! Recursive has been around for awhile, and still in F2018 ! recursive function fib1(i) result(k) integer k integer, intent(in) :: i if (i <= 1) then k = i else k = fib1(i-1) + fib1(i - 2) end if end function fib1 ! ! This is recursive by default. ! function fib2(i) result(k) integer k integer, intent(in) :: i if (i <= 1) then k = i else k = fib2(i-1) + fib2(i - 2) end if end function fib2 end module bah program bar use bah integer i i = 9 print *, fib1(i), fib2(i) end program bar