The undefined behaviour checker pointed out that a shift of 64 would lead to undefined behaviour.
Signed-off-by: Alex Bennée <alex.ben...@linaro.org> --- fpu/softfloat.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 301ce3b537b..444d35920dd 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -3834,9 +3834,14 @@ void normalizeFloatx80Subnormal(uint64_t aSig, int32_t *zExpPtr, { int8_t shiftCount; - shiftCount = clz64(aSig); - *zSigPtr = aSig<<shiftCount; - *zExpPtr = 1 - shiftCount; + if (aSig) { + shiftCount = clz64(aSig); + *zSigPtr = aSig << shiftCount; + *zExpPtr = 1 - shiftCount; + } else { + *zSigPtr = 0; + *zExpPtr = 1 - 64; + } } /*---------------------------------------------------------------------------- -- 2.20.1