<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/101846>101846</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc] buildbot is unhappy with `strfroml` with negative NAN on aarch64
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          SchrodingerZhu
      </td>
    </tr>
</table>

<pre>
    The issue is not reproducible on my machine using `clang 18.1.x`.

LLVM Buildbot has detected a new failure on builder `libc-aarch64-ubuntu-fullbuild-dbg` running on `libc-aarch64-ubuntu` while building `libc` at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/71/builds/3666

Here is the relevant piece of the build log for the reference:
```
Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py ...' (failure)
...
[2651/3600] Running unit test libc.test.src.math.smoke.roundevenf16_test.__unit__
[==========] Running 3 tests from 1 test suite.
[ RUN      ] LlvmLibcRoundEvenTest.SpecialNumbers
[       OK ] LlvmLibcRoundEvenTest.SpecialNumbers (4 us)
[ RUN      ] LlvmLibcRoundEvenTest.RoundedNubmers
[       OK ] LlvmLibcRoundEvenTest.RoundedNubmers (1 us)
[ RUN      ] LlvmLibcRoundEvenTest.Fractions
[       OK ] LlvmLibcRoundEvenTest.Fractions (3 us)
Ran 3 tests.  PASS: 3  FAIL: 0
[2652/3600] Running unit test libc.test.src.stdlib.strfroml_test.__unit__
FAILED: projects/libc/test/src/stdlib/CMakeFiles/libc.test.src.stdlib.strfroml_test.__unit__ 
cd /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/build/projects/libc/test/src/stdlib && /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/build/projects/libc/test/src/stdlib/libc.test.src.stdlib.strfroml_test.__unit__.__build__
[==========] Running 7 tests from 1 test suite.
[ RUN      ] LlvmLibcStrfromlTest.FloatDecimalFormat
[       OK ] LlvmLibcStrfromlTest.FloatDecimalFormat (112 us)
[ RUN      ] LlvmLibcStrfromlTest.FloatHexExpFormat
[       OK ] LlvmLibcStrfromlTest.FloatHexExpFormat (9 us)
[ RUN      ] LlvmLibcStrfromlTest.FloatDecimalAutoFormat
[       OK ] LlvmLibcStrfromlTest.FloatDecimalAutoFormat (1 us)
[ RUN      ] LlvmLibcStrfromlTest.FloatDecimalExpFormat
[       OK ] LlvmLibcStrfromlTest.FloatDecimalExpFormat (1 us)
[ RUN      ] LlvmLibcStrfromlTest.ImproperFormatString
[       OK ] LlvmLibcStrfromlTest.ImproperFormatString (5 us)
[ RUN      ] LlvmLibcStrfromlTest.InsufficientBufferSize
[       OK ] LlvmLibcStrfromlTest.InsufficientBufferSize (188 us)
[ RUN      ] LlvmLibcStrfromlTest.InfAndNanValues
/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/test/src/stdlib/StrfromTest.h:478: FAILURE
      Expected: written
      Which is: 3
To be equal to: static_cast<int>(sizeof("-NAN") - 1)
      Which is: 4
/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/test/src/stdlib/StrfromTest.h:478: FAILURE
      Expected: buff
      Which is: NAN
To be equal to: "-NAN"
      Which is: -NAN
[  FAILED  ] LlvmLibcStrfromlTest.InfAndNanValues
Ran 7 tests.  PASS: 6  FAIL: 1
[2653/3600] Running unit test libc.test.src.math.smoke.ceilf_test.__unit__.__NO_ROUND_OPT
[==========] Running 3 tests from 1 test suite.
[ RUN      ] LlvmLibcCeilTest.SpecialNumbers
[       OK ] LlvmLibcCeilTest.SpecialNumbers (3 us)
[ RUN      ] LlvmLibcCeilTest.RoundedNubmers
[       OK ] LlvmLibcCeilTest.RoundedNubmers (2 us)
[ RUN      ] LlvmLibcCeilTest.Fractions
[       OK ] LlvmLibcCeilTest.Fractions (3 us)
Ran 3 tests.  PASS: 3  FAIL: 0
[2654/3600] Running unit test libc.test.src.math.smoke.getpayloadf_test.__unit__
[==========] Running 2 tests from 1 test suite.
Step 8 (libc-unit-tests) failure: libc-unit-tests (failure)
...
[2651/3600] Running unit test libc.test.src.math.smoke.roundevenf16_test.__unit__
[==========] Running 3 tests from 1 test suite.
[ RUN      ] LlvmLibcRoundEvenTest.SpecialNumbers
[       OK ] LlvmLibcRoundEvenTest.SpecialNumbers (4 us)
[ RUN      ] LlvmLibcRoundEvenTest.RoundedNubmers
[       OK ] LlvmLibcRoundEvenTest.RoundedNubmers (1 us)
[ RUN      ] LlvmLibcRoundEvenTest.Fractions
[       OK ] LlvmLibcRoundEvenTest.Fractions (3 us)
Ran 3 tests.  PASS: 3  FAIL: 0
[2652/3600] Running unit test libc.test.src.stdlib.strfroml_test.__unit__
FAILED: projects/libc/test/src/stdlib/CMakeFiles/libc.test.src.stdlib.strfroml_test.__unit__ 
cd /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/build/projects/libc/test/src/stdlib && /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/build/projects/libc/test/src/stdlib/libc.test.src.stdlib.strfroml_test.__unit__.__build__
[==========] Running 7 tests from 1 test suite.
[ RUN      ] LlvmLibcStrfromlTest.FloatDecimalFormat
[       OK ] LlvmLibcStrfromlTest.FloatDecimalFormat (112 us)
[ RUN      ] LlvmLibcStrfromlTest.FloatHexExpFormat
[       OK ] LlvmLibcStrfromlTest.FloatHexExpFormat (9 us)
[ RUN      ] LlvmLibcStrfromlTest.FloatDecimalAutoFormat
[       OK ] LlvmLibcStrfromlTest.FloatDecimalAutoFormat (1 us)
[ RUN      ] LlvmLibcStrfromlTest.FloatDecimalExpFormat
[       OK ] LlvmLibcStrfromlTest.FloatDecimalExpFormat (1 us)
[ RUN      ] LlvmLibcStrfromlTest.ImproperFormatString
[       OK ] LlvmLibcStrfromlTest.ImproperFormatString (5 us)
[ RUN      ] LlvmLibcStrfromlTest.InsufficientBufferSize
[       OK ] LlvmLibcStrfromlTest.InsufficientBufferSize (188 us)
[ RUN      ] LlvmLibcStrfromlTest.InfAndNanValues
/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/test/src/stdlib/StrfromTest.h:478: FAILURE
      Expected: written
      Which is: 3
To be equal to: static_cast<int>(sizeof("-NAN") - 1)
      Which is: 4
/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/test/src/stdlib/StrfromTest.h:478: FAILURE
      Expected: buff
      Which is: NAN
To be equal to: "-NAN"
      Which is: -NAN
[  FAILED  ] LlvmLibcStrfromlTest.InfAndNanValues
Ran 7 tests.  PASS: 6  FAIL: 1
[2653/3600] Running unit test libc.test.src.math.smoke.ceilf_test.__unit__.__NO_ROUND_OPT
[==========] Running 3 tests from 1 test suite.
[ RUN      ] LlvmLibcCeilTest.SpecialNumbers
[       OK ] LlvmLibcCeilTest.SpecialNumbers (3 us)
[ RUN      ] LlvmLibcCeilTest.RoundedNubmers
[       OK ] LlvmLibcCeilTest.RoundedNubmers (2 us)
[ RUN      ] LlvmLibcCeilTest.Fractions
[       OK ] LlvmLibcCeilTest.Fractions (3 us)
Ran 3 tests.  PASS: 3  FAIL: 0
[2654/3600] Running unit test libc.test.src.math.smoke.getpayloadf_test.__unit__
[==========] Running 2 tests from 1 test suite.

```

_Originally posted by @llvm-ci in https://github.com/llvm/llvm-project/issues/101797#issuecomment-2267111335_
 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWdFv4jgT_2vMy4gocUiABx7oUrSrr0tXpbuf9L0gJ5kQf-vYOcehpX_9yQ5QtrRXoLo73QmEEIn9m_nNeDyekVld86VEHJHoikSTDmtMofRonhZaZVwuUf-vaDqJytaj-wKB13Vjf0EqAxorrbIm5YlAUBLKNZQsLbhEaGoul0BiPxVMLiEYeIH3SGLfI_6E-OP29-bmx1e4arjIEmWgYDVkaDA1mAEDiQ-QMy4a7WQndhpqK1LwJO0yptMi7nWbpJGm6eaNEG5KN0uWJPZBN1JaCkq-AbGTHgousBW9oWsn2hFmoDZYQQ8IpUxKZZhBQukv_KeNEJYy46IGphHYinHBrDeYIeEYCmOqmoRjQqeETgVLPCFWpaf0ktBpsjHcDYbbF6hrQqf9YPtsn8I4jvf1fkbt1sAUCBoFrpg0UHFMEVTu3jooCLWEXOnNvBw1yhQtnVZW7G--7nG-NXfwbO5wuwLWGEL71doUSoLnWWvEquw-taY8HVi0Z8tWXGZBdh0El82jV63Bs4L6VuVWDR22ZOxISzK6onEUOCf4PokmcLdZ2EZyAwZrA1aoZ_95tU69kpnCq0v1Ez2tGpnhCmUexAs3YbGwsMViJ5yEkz_67ukLnbIacq1KCFrNdcMNPjOFu-8zcB8LvBGr8oYn6Z1lcb1CeW8ZzCtMOROzpkyse3bQ9nP7n6Oh1m09aOqdz44k4J4wmzVJeSqBX6GWQHAGgalmqeFKnqZ7h7Jqw321d0xuF8cD-Daez220hgDT8Zcb-9ffDyV6QijVJhM88Wqj7aKL10LI6rieWC2VVv_H1NSbKCd0aqcTOq21fWhlETr99JX9xCkXuJ15pD5oFaYZEDotVInb7bS3615Lc6--fZEvN_uV0OlRVgChMaHx30_kNA96i4WTftb275-7_ecbLm0UC8XMBFNeMjFVumTmnU3wDtrtwYAetQsPRX3Gx-vH6kwe-2BLY3gmiY0948aoj3nkWcLxmelNYef75aWAM8l8KSutKtStkLnRXC5P4fIa3lKJzqAi6ybPecpRmqsmz1HP-ROeROZVCc4zg8E5hPKxzGZM_mCiwe058ickI1fjbDLRe4low9ARLEg47vUH9liwB8T3u-uWY2vX9WPlilw7_KC5MSj3h_9b8LQAXrtTrB24V5Ag4G8NE2CUHagNMzxdpKw2JPzEpSHhNaGDmj-hygkdEEq7s_GMUGqruC4EOxcfKun9kx2YNHn-lmHWAW_4b88_b4C7O7SL8fagPzUobW3SP6hN4ufaJNivTcLzytwUucgPjrrZ7eLu9vtssrj9dv9XlrufkIvTK903UAfF3vtqT6pv30BZtccdqjsBx1a1h4APFrS984JmiaZia6FYln-4NaLvxIprLQfWTpczrJ6uQ7zoMF-MXhrDS2N4aQwvjeGlMbw0hpfG8NIYXhrDS2N4aQwvjeGlMfy3NIavXkS2v4tbzZdcMiHWUKnaYAbJGkjPd5kj5cDli-vVJTdFk3ipKjf55TDNuNtrWzkGftAf9gkN3ZtUlSVK06U07gdBEIbRxljoZKMwG4ZD1sFR0Ke0H_TCIOoUo2QYxTQOen0f82AwyALMozzoDf0BQ-rHeYePqE97_sAPg2EvCiIvz6Is7tEoHeRhlqQ-6flYMi52V8Idx2UU-MGgF3cES1DU7lae0jY9UhJNOnrkbEqaZW2dwW0s7CQYboS7yXeAaALbXA28hkYWrKrW8MBNAST2t7Wwuwi37yQumeErtOkRlIRNCu80Wow-5Gprz2pEfw8AAP__oHYc5A">