https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105138

--- Comment #2 from Vladimir Fuka <vladimir.fuka at gmail dot com> ---
As mentioned, the correct function is called in case everything is REAL



a = floor(5.0)
print *, a

contains

RECURSIVE FUNCTION FLOOR(Z) RESULT(RES)
  REAL,INTENT(IN) :: Z
  REAL  :: RES
  if (z>0) then    
    RES = FLOOR(Z - 1)
  else
    RES = 0
  end if
END FUNCTION FLOOR
end


> gfortran-12 shadow.f90 
> ./a.out 
   0.00000000

Reply via email to