Aleksandar Markovic <aleksandar.qemu.de...@gmail.com> writes:
> 11:53 Pet, 27.03.2020. Alex Bennée <alex.ben...@linaro.org> је написао/ла: >> >> The undefined behaviour checker > > Alex, what exactly is "undefined behaviour checker"? If this is a test, can > you give us a link? It's enabled by our sanitizers build: ../../configure --cc=clang-8 --cxx=clang++-8 --enable-sanitizers > > Sincerely, > Aleksandar > >> 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 >> >> -- Alex Bennée