[clang] [Clang][Hexagon] Use --cstdlib flag to choose Picolibc (PR #183257)

via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 2 04:12:49 PST 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results

The build failed before running any tests. Click on a failure below to see the details.

<details>
<summary>tools/clang/lib/Driver/CMakeFiles/obj.clangDriver.dir/ToolChains/Hexagon.cpp.o</summary>

```
FAILED: tools/clang/lib/Driver/CMakeFiles/obj.clangDriver.dir/ToolChains/Hexagon.cpp.o
sccache /opt/llvm/bin/clang++ -DCLANG_EXPORTS -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/clang/lib/Driver -I/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver -I/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include -I/home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/clang/include -I/home/gha/actions-runner/_work/llvm-project/llvm-project/build/include -I/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include -gmlt -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wno-pass-failed -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG -std=c++17 -UNDEBUG -fno-exceptions -funwind-tables -fno-rtti -MD -MT tools/clang/lib/Driver/CMakeFiles/obj.clangDriver.dir/ToolChains/Hexagon.cpp.o -MF tools/clang/lib/Driver/CMakeFiles/obj.clangDriver.dir/ToolChains/Hexagon.cpp.o.d -o tools/clang/lib/Driver/CMakeFiles/obj.clangDriver.dir/ToolChains/Hexagon.cpp.o -c /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:574:32: error: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Werror,-Wstring-compare]
574 |   if (HTC.GetCStdlibType(Args) == "picolibc")
|                                ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:574:32: error: comparison between pointer and integer ('CStdLibType' and 'const char *')
574 |   if (HTC.GetCStdlibType(Args) == "picolibc")
|       ~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:100:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
100 | constexpr bool operator==(const CustomizableOptional<T> &X,
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:140:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
140 | constexpr bool operator==(const CustomizableOptional<T> &X, std::nullopt_t) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:145:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
145 | constexpr bool operator==(std::nullopt_t, const CustomizableOptional<T> &X) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:200:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
200 | constexpr bool operator==(const CustomizableOptional<T> &X, const T &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:205:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
205 | constexpr bool operator==(const T &X, const CustomizableOptional<T> &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:663:28: error: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Werror,-Wstring-compare]
663 |   if (GetCStdlibType(Args) == "picolibc") {
|                            ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:663:28: error: comparison between pointer and integer ('CStdLibType' and 'const char *')
663 |   if (GetCStdlibType(Args) == "picolibc") {
|       ~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:100:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
100 | constexpr bool operator==(const CustomizableOptional<T> &X,
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:140:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
140 | constexpr bool operator==(const CustomizableOptional<T> &X, std::nullopt_t) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:145:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
145 | constexpr bool operator==(std::nullopt_t, const CustomizableOptional<T> &X) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:200:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
200 | constexpr bool operator==(const CustomizableOptional<T> &X, const T &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:205:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
205 | constexpr bool operator==(const T &X, const CustomizableOptional<T> &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:739:60: error: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Werror,-Wstring-compare]
739 |     if (UNW != ToolChain::UNW_None || GetCStdlibType(Args) == "picolibc")
|                                                            ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:739:60: error: comparison between pointer and integer ('CStdLibType' and 'const char *')
739 |     if (UNW != ToolChain::UNW_None || GetCStdlibType(Args) == "picolibc")
|                                       ~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:100:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
100 | constexpr bool operator==(const CustomizableOptional<T> &X,
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:140:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
140 | constexpr bool operator==(const CustomizableOptional<T> &X, std::nullopt_t) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:145:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
145 | constexpr bool operator==(std::nullopt_t, const CustomizableOptional<T> &X) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:200:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
200 | constexpr bool operator==(const CustomizableOptional<T> &X, const T &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:205:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
205 | constexpr bool operator==(const T &X, const CustomizableOptional<T> &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:814:34: error: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Werror,-Wstring-compare]
814 |   if (GetCStdlibType(DriverArgs) == "picolibc") {
|                                  ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:814:34: error: comparison between pointer and integer ('CStdLibType' and 'const char *')
814 |   if (GetCStdlibType(DriverArgs) == "picolibc") {
|       ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:100:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
100 | constexpr bool operator==(const CustomizableOptional<T> &X,
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:140:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
140 | constexpr bool operator==(const CustomizableOptional<T> &X, std::nullopt_t) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:145:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
145 | constexpr bool operator==(std::nullopt_t, const CustomizableOptional<T> &X) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:200:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
200 | constexpr bool operator==(const CustomizableOptional<T> &X, const T &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:205:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
205 | constexpr bool operator==(const T &X, const CustomizableOptional<T> &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:890:34: error: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Werror,-Wstring-compare]
890 |   if (GetCStdlibType(DriverArgs) == "picolibc" &&
|                                  ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:890:34: error: comparison between pointer and integer ('CStdLibType' and 'const char *')
890 |   if (GetCStdlibType(DriverArgs) == "picolibc" &&
|       ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:100:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
100 | constexpr bool operator==(const CustomizableOptional<T> &X,
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:140:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
140 | constexpr bool operator==(const CustomizableOptional<T> &X, std::nullopt_t) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:145:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
145 | constexpr bool operator==(std::nullopt_t, const CustomizableOptional<T> &X) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:200:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
200 | constexpr bool operator==(const CustomizableOptional<T> &X, const T &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:205:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
205 | constexpr bool operator==(const T &X, const CustomizableOptional<T> &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:914:54: error: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Werror,-Wstring-compare]
914 |     if (getTriple().isMusl() || GetCStdlibType(Args) == "picolibc")
|                                                      ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Driver/ToolChains/Hexagon.cpp:914:54: error: comparison between pointer and integer ('CStdLibType' and 'const char *')
914 |     if (getTriple().isMusl() || GetCStdlibType(Args) == "picolibc")
|                                 ~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:100:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
100 | constexpr bool operator==(const CustomizableOptional<T> &X,
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:140:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
140 | constexpr bool operator==(const CustomizableOptional<T> &X, std::nullopt_t) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:145:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
145 | constexpr bool operator==(std::nullopt_t, const CustomizableOptional<T> &X) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:200:16: note: candidate template ignored: could not match 'CustomizableOptional<T>' against 'CStdLibType'
200 | constexpr bool operator==(const CustomizableOptional<T> &X, const T &Y) {
|                ^
/home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Basic/CustomizableOptional.h:205:16: note: candidate template ignored: could not match 'const CustomizableOptional<T>' against 'const char[9]'
205 | constexpr bool operator==(const T &X, const CustomizableOptional<T> &Y) {
|                ^
12 errors generated.
```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/183257


More information about the cfe-commits mailing list