craig.topper created this revision. craig.topper added reviewers: spatel, nikic. craig.topper requested review of this revision. Herald added a project: clang.
Previously this was documented as having the behavior of the "target's native float-to-int conversion". After D115804 <https://reviews.llvm.org/D115804>, clang uses saturating FP cast intrinsics which have the same behavior on all targets. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D116856 Files: clang/docs/ReleaseNotes.rst clang/docs/UsersManual.rst Index: clang/docs/UsersManual.rst =================================================================== --- clang/docs/UsersManual.rst +++ clang/docs/UsersManual.rst @@ -1380,8 +1380,8 @@ When a floating-point value is not representable in a destination integer type, the code has undefined behavior according to the language standard. By default, Clang will not guarantee any particular result in that case. - With the 'no-strict' option, Clang attempts to match the overflowing behavior - of the target's native float-to-int conversion instructions. + With the 'no-strict' option, Clang will saturate towards the smallest and + largest representable integer values instead. NaNs will be converted to zero. .. _opt_fmath-errno: Index: clang/docs/ReleaseNotes.rst =================================================================== --- clang/docs/ReleaseNotes.rst +++ clang/docs/ReleaseNotes.rst @@ -243,6 +243,9 @@ -ffp-contract=fast, whereas the (now corrected) default behavior is -ffp-contract=on. -ffp-model=precise is now exactly the default mode of the compiler. +- -fstrict-float-cast-overflow no longer has target specific behavior. Clang + will saturate towards the smallest and largest representable integer values. + NaNs will be converted to zero. Internal API Changes --------------------
Index: clang/docs/UsersManual.rst =================================================================== --- clang/docs/UsersManual.rst +++ clang/docs/UsersManual.rst @@ -1380,8 +1380,8 @@ When a floating-point value is not representable in a destination integer type, the code has undefined behavior according to the language standard. By default, Clang will not guarantee any particular result in that case. - With the 'no-strict' option, Clang attempts to match the overflowing behavior - of the target's native float-to-int conversion instructions. + With the 'no-strict' option, Clang will saturate towards the smallest and + largest representable integer values instead. NaNs will be converted to zero. .. _opt_fmath-errno: Index: clang/docs/ReleaseNotes.rst =================================================================== --- clang/docs/ReleaseNotes.rst +++ clang/docs/ReleaseNotes.rst @@ -243,6 +243,9 @@ -ffp-contract=fast, whereas the (now corrected) default behavior is -ffp-contract=on. -ffp-model=precise is now exactly the default mode of the compiler. +- -fstrict-float-cast-overflow no longer has target specific behavior. Clang + will saturate towards the smallest and largest representable integer values. + NaNs will be converted to zero. Internal API Changes --------------------
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits