https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115161
--- Comment #19 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Alexander Monakov from comment #18) > No, allowing value-changing transformations under -ftrapping-math is really > not appropriate. Invoking the intrinsic on a large floating-point value is > not UB. If we guarantee that we never constant fold FIX/UNSIGNED_FIX with -ftrapping-math (we shouldn't, as the exceptions should be raised), then using FIX/UNSIGNED_FIX is ok in flag_trapping_math guarded patterns even if the intrinsics have some specific value they want in those cases, because they will never be folded. While for !flag_trapping_math, we should use UNSPEC because FIX/UNSIGNED_FIX can be folded and would be folded to whatever the generic code decides, which might disagree to what the intrinsics need.