[libc-commits] [libc] [libc][test] make `str_to_float_comparison_test` independent of C++ headers. (PR #133978)
Mikhail R. Gadelha via libc-commits
libc-commits at lists.llvm.org
Tue Apr 8 14:35:46 PDT 2025
================
@@ -54,120 +69,169 @@ static inline uint64_t fastHexToU64(const char *inStr) {
return result;
}
-int checkFile(char *inputFileName, int *totalFails, int *totalBitDiffs,
- int *detailedBitDiffs, int *total) {
- int32_t curFails = 0; // Only counts actual failures, not bitdiffs.
- int32_t curBitDiffs = 0; // A bitdiff is when the expected result and actual
- // result are off by +/- 1 bit.
- std::string line;
- std::string num;
-
- std::ifstream fileStream(inputFileName, std::ifstream::in);
+static void parseLine(char *line, ParseResult &parseResult, int32_t &curFails,
+ int32_t &curBitDiffs) {
- if (!fileStream.is_open()) {
- std::cout << "file '" << inputFileName << "' failed to open. Exiting.\n";
- return 1;
+ if (line[0] == '#') {
+ return;
}
- while (getline(fileStream, line)) {
- if (line[0] == '#') {
- continue;
- }
- *total = *total + 1;
- uint32_t expectedFloatRaw;
- uint64_t expectedDoubleRaw;
+ parseResult.total += 1;
+ uint32_t expectedFloatRaw;
+ uint64_t expectedDoubleRaw;
- expectedFloatRaw = fastHexToU32(line.c_str() + 5);
- expectedDoubleRaw = fastHexToU64(line.c_str() + 14);
- num = line.substr(31);
+ expectedFloatRaw = fastHexToU32(line + 5);
+ expectedDoubleRaw = fastHexToU64(line + 14);
- float floatResult = strtof(num.c_str(), nullptr);
+ char *num = line + 31;
----------------
mikhailramalho wrote:
```suggestion
const char *num = line + 31;
```
https://github.com/llvm/llvm-project/pull/133978
More information about the libc-commits
mailing list