[libc-commits] [PATCH] D113036: [libc] refactor atof string parsing

Siva Chandra via Phabricator via libc-commits libc-commits at lists.llvm.org
Thu Nov 4 23:58:51 PDT 2021

sivachandra added inline comments.

Comment at: libc/src/__support/str_to_float.h:459
+static inline void
+binaryExpToFloat(typename fputil::FPBits<T>::UIntType mantissa, int32_t exp2,
+                 typename fputil::FPBits<T>::UIntType *outputMantissa,
This function is mostly `NormalFloat::operator T`. It would be nice if we can extend it as required and avoid the mostly duplicated logic. AFAICT, setting of  `errno` is the difference? Input exponent needs to be corrected of course like on line 480, which can be done as a preprocessing step. You can do it as a cleanup later if it can be done.

Comment at: libc/src/__support/str_to_float.h:500
+    }
+    mantissa = shiftRightAndRound(mantissa, amountToShift);
+    if (mantissa == 0) {
Can the shift and round operation here lead to an overflow? See this for why it can happen: https://github.com/llvm/llvm-project/blob/main/libc/src/__support/FPUtil/NormalFloat.h#L124

  rG LLVM Github Monorepo



More information about the libc-commits mailing list