about summary refs log tree commit diff
path: root/src/librustc_codegen_ssa
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2020-05-06 16:58:50 +0200
committerGitHub <noreply@github.com>2020-05-06 16:58:50 +0200
commit14d608f1d8a0b84da5f3bccecb3efb3d35f980dc (patch)
treebb359957d2ab7197b0179d8f59310da9c1108520 /src/librustc_codegen_ssa
parent339f574809bf8e4166b8de3cdbe7df181d37af3d (diff)
parentf63b8bffefb0f652dc164859f4c8a10329c9117a (diff)
downloadrust-14d608f1d8a0b84da5f3bccecb3efb3d35f980dc.tar.gz
rust-14d608f1d8a0b84da5f3bccecb3efb3d35f980dc.zip
Rollup merge of #71269 - Mark-Simulacrum:sat-float-casts, r=nikic
Define UB in float-to-int casts to saturate

This closes #10184 by defining the behavior there to saturate infinities and values exceeding the integral range (on the lower or upper end). `NaN` is sent to zero.
Diffstat (limited to 'src/librustc_codegen_ssa')
-rw-r--r--src/librustc_codegen_ssa/mir/rvalue.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/librustc_codegen_ssa/mir/rvalue.rs b/src/librustc_codegen_ssa/mir/rvalue.rs
index 19a0138d9cb..bb532abd84b 100644
--- a/src/librustc_codegen_ssa/mir/rvalue.rs
+++ b/src/librustc_codegen_ssa/mir/rvalue.rs
@@ -768,7 +768,7 @@ fn cast_float_to_int<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
 ) -> Bx::Value {
     let fptosui_result = if signed { bx.fptosi(x, int_ty) } else { bx.fptoui(x, int_ty) };
 
-    if !bx.cx().sess().opts.debugging_opts.saturating_float_casts {
+    if let Some(false) = bx.cx().sess().opts.debugging_opts.saturating_float_casts {
         return fptosui_result;
     }