https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121853
--- Comment #2 from Arne Juul <arnej at pvv dot ntnu.no> --- emitting a "call __extendbfsf2" is bad no matter how efficient it's implemented. Looking at the gcc sources it's clear to me that the problem is in gcc/expr.cc where the following code: if (to_mode == SFmode && !HONOR_NANS (from_mode) && !HONOR_NANS (to_mode) && optimize_insn_for_speed_p ()) { /* If we don't expect sNaNs, for BFmode -> SFmode we can just shift the bits up. */ should use HONOR_SNANS instead, the comment even explains why.