https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105138
--- Comment #4 from kargl at gcc dot gnu.org --- (In reply to Vladimir Fuka from comment #2) > As mentioned, the correct function is called in case everything is REAL > Actually, the correct function isn't called. See the parse tree that I posted for log_gamma. For your floor example, the parse tree contains code: IF (> floor:z 0) ASSIGN floor:res __convert_i4_r4[[((__floor4_r4[[(((- floor:z 1.00000000e0)) ((arg not-present)))]]))]] ELSE ASSIGN floor:res 0 ENDIF Notice, the __floor4_r4 is the intrinsic routine not the user-defined floor.