From 3c2318c0b21e2f4473c2465a4d9481ccd21906dd Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 6 Mar 2024 19:48:55 +0100 Subject: [PATCH] make remaining FloatTy matches exhaustive --- src/tools/miri/src/helpers.rs | 21 +++++++++------------ src/tools/miri/src/shims/intrinsics/mod.rs | 15 ++++++++------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/tools/miri/src/helpers.rs b/src/tools/miri/src/helpers.rs index d69c6fe90128..ddefecca597b 100644 --- a/src/tools/miri/src/helpers.rs +++ b/src/tools/miri/src/helpers.rs @@ -1102,20 +1102,17 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> { } } - let (val, status) = match src.layout.ty.kind() { - // f32 - ty::Float(FloatTy::F32) => + let ty::Float(fty) = src.layout.ty.kind() else { + bug!("float_to_int_checked: non-float input type {}", src.layout.ty) + }; + + let (val, status) = match fty { + FloatTy::F16 => unimplemented!("f16_f128"), + FloatTy::F32 => float_to_int_inner::(this, src.to_scalar().to_f32()?, cast_to, round), - // f64 - ty::Float(FloatTy::F64) => + FloatTy::F64 => float_to_int_inner::(this, src.to_scalar().to_f64()?, cast_to, round), - // Nothing else - _ => - span_bug!( - this.cur_span(), - "attempted float-to-int conversion with non-float input type {}", - src.layout.ty, - ), + FloatTy::F128 => unimplemented!("f16_f128"), }; if status.intersects( diff --git a/src/tools/miri/src/shims/intrinsics/mod.rs b/src/tools/miri/src/shims/intrinsics/mod.rs index b67d588dbc9b..d4905c22a6af 100644 --- a/src/tools/miri/src/shims/intrinsics/mod.rs +++ b/src/tools/miri/src/shims/intrinsics/mod.rs @@ -274,13 +274,14 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> { _ => bug!(), }; let float_finite = |x: &ImmTy<'tcx, _>| -> InterpResult<'tcx, bool> { - Ok(match x.layout.ty.kind() { - ty::Float(FloatTy::F32) => x.to_scalar().to_f32()?.is_finite(), - ty::Float(FloatTy::F64) => x.to_scalar().to_f64()?.is_finite(), - _ => bug!( - "`{intrinsic_name}` called with non-float input type {ty:?}", - ty = x.layout.ty, - ), + let ty::Float(fty) = x.layout.ty.kind() else { + bug!("float_finite: non-float input type {}", x.layout.ty) + }; + Ok(match fty { + FloatTy::F16 => unimplemented!("f16_f128"), + FloatTy::F32 => x.to_scalar().to_f32()?.is_finite(), + FloatTy::F64 => x.to_scalar().to_f64()?.is_finite(), + FloatTy::F128 => unimplemented!("f16_f128"), }) }; match (float_finite(&a)?, float_finite(&b)?) {