diff --git a/libc/utils/FPUtil/x86_64/FEnv.h b/libc/utils/FPUtil/x86_64/FEnv.h --- a/libc/utils/FPUtil/x86_64/FEnv.h +++ b/libc/utils/FPUtil/x86_64/FEnv.h @@ -290,11 +290,13 @@ return 1; // To indicate failure } - uint16_t x87Value = bitValue << internal::X87RoundingControlBitPosition; + uint16_t x87Value = static_cast( + bitValue << internal::X87RoundingControlBitPosition); uint16_t x87Control = internal::getX87ControlWord(); - x87Control = - (x87Control & ~(0x3 << internal::X87RoundingControlBitPosition)) | - x87Value; + x87Control = static_cast( + (x87Control & + ~(uint16_t(0x3) << internal::X87RoundingControlBitPosition)) | + x87Value); internal::writeX87ControlWord(x87Control); uint32_t mxcsrValue = bitValue << internal::MXCSRRoundingControlBitPosition;