@@ -334,19 +334,6 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
334334 {
335335 use rustc_type_ir:: TyKind :: * ;
336336
337- fn adjust_nan <
338- ' tcx ,
339- M : Machine < ' tcx > ,
340- F1 : rustc_apfloat:: Float + FloatConvert < F2 > ,
341- F2 : rustc_apfloat:: Float ,
342- > (
343- ecx : & InterpCx < ' tcx , M > ,
344- f1 : F1 ,
345- f2 : F2 ,
346- ) -> F2 {
347- if f2. is_nan ( ) { M :: generate_nan ( ecx, & [ f1] ) } else { f2 }
348- }
349-
350337 match * dest_ty. kind ( ) {
351338 // float -> uint
352339 Uint ( t) => {
@@ -367,11 +354,17 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
367354 }
368355 // float -> float
369356 Float ( fty) => match fty {
370- FloatTy :: F16 => Scalar :: from_f16 ( adjust_nan ( self , f, f. convert ( & mut false ) . value ) ) ,
371- FloatTy :: F32 => Scalar :: from_f32 ( adjust_nan ( self , f, f. convert ( & mut false ) . value ) ) ,
372- FloatTy :: F64 => Scalar :: from_f64 ( adjust_nan ( self , f, f. convert ( & mut false ) . value ) ) ,
357+ FloatTy :: F16 => {
358+ Scalar :: from_f16 ( self . adjust_nan ( f. convert ( & mut false ) . value , & [ f] ) )
359+ }
360+ FloatTy :: F32 => {
361+ Scalar :: from_f32 ( self . adjust_nan ( f. convert ( & mut false ) . value , & [ f] ) )
362+ }
363+ FloatTy :: F64 => {
364+ Scalar :: from_f64 ( self . adjust_nan ( f. convert ( & mut false ) . value , & [ f] ) )
365+ }
373366 FloatTy :: F128 => {
374- Scalar :: from_f128 ( adjust_nan ( self , f , f . convert ( & mut false ) . value ) )
367+ Scalar :: from_f128 ( self . adjust_nan ( f . convert ( & mut false ) . value , & [ f ] ) )
375368 }
376369 } ,
377370 // That's it.
0 commit comments