[libcxx-commits] [clang] [libcxx] [Clang] Add __builtin_common_reference (PR #121199)
Nico Weber via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Dec 2 08:36:26 PST 2025
nico wrote:
This breaks building the libc++ module in the chromium build for me:
```
../../../../llvm-project/out/gn/bin/clang++ -MD -MF clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std/module.pcm.d -D__ARM_NEON__=1 -DCR_XCODE_BUILD=17B100 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_INSTRUMENTED_WITH_ASAN=0 -DCR_LIBCXX_REVISION=91c45fc28459e814889633be985b698c5e8050b4 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -D_LIBCPP_BUILDING_LIBRARY -I../.. -Iclang_arm64_for_rust_host_build_tools/gen -fno-delete-null-pointer-checks -fno-strict-overflow -fno-ident -fno-math-errno -fno-strict-aliasing -fstack-protector -fcolor-diagnostics -fmerge-all-constants -fno-sized-deallocation -fcrash-diagnostics-dir=../clang-crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -split-threshold-for-reg-with-hint=0 -ffp-contract=off -fcomplete-member-pointers --target=arm64-apple-macos -mno-outline -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. -no-canonical-prefixes -Xclang -fmodule-file-home-is-cwd -Xclang -fmodules-cache-path=/not_exist_dummy_dir --warning-suppression-mappings=../../build/config/warning_suppression.txt -ftrivial-auto-var-init=pattern -O2 -fno-omit-frame-pointer -g0 -isysroot ../../../../../../../Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.1.sdk -mmacos-version-min=12.0 -fsanitize=array-bounds -fsanitize-trap=array-bounds -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -fstrict-aliasing -Wundef -fPIC -Wall -Wno-unused-variable -Wno-c++11-narrowing -Wno-unused-but-set-variable -Wunguarded-availability -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wno-cast-function-type -Wno-thread-safety-reference-return -Wno-nontrivial-memcall -Wno-uninitialized-const-pointer -Wexit-time-destructors -Werror -Wno-exit-time-destructors -std=c++20 -Wno-trigraphs -fno-exceptions -fno-rtti -nostdinc++ -isystemgen/third_party/libc++/src/include -isystem../../third_party/libc++abi/src/include -fvisibility-inlines-hidden -Wno-invalid-offsetof -Wenum-compare-conditional -Wno-nullability-completeness -fbuiltin-module-map -fmodule-map-file=gen/third_party/libc++/src/include/module.modulemap -fmodule-map-file=../../../../../../../Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.1.sdk/usr/include/DarwinBasic.modulemap -fmodule-map-file=../../../../../../../Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.1.sdk/usr/include/DarwinFoundation1.modulemap -fmodule-map-file=../../../../../../../Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.1.sdk/usr/include/DarwinFoundation2.modulemap -fmodule-map-file=../../../../../../../Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.1.sdk/usr/include/DarwinFoundation3.modulemap -fmodule-file=_AvailabilityInternal=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_AvailabilityInternal/DarwinFoundation1.pcm -fmodule-file=_Builtin_float=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_Builtin_float/module.pcm -fmodule-file=_Builtin_inttypes=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_Builtin_inttypes/module.pcm -fmodule-file=_Builtin_limits=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_Builtin_limits/module.pcm -fmodule-file=_Builtin_stdalign=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_Builtin_stdalign/module.pcm -fmodule-file=_Builtin_stdarg=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_Builtin_stdarg/module.pcm -fmodule-file=_Builtin_stddef=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_Builtin_stddef/module.pcm -fmodule-file=_Builtin_stdint=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_Builtin_stdint/module.pcm -fmodule-file=_DarwinFoundation1=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_DarwinFoundation1/DarwinFoundation1.pcm -fmodule-file=_DarwinFoundation2=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_DarwinFoundation2/DarwinFoundation2.pcm -fmodule-file=_DarwinFoundation3=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/_DarwinFoundation3/DarwinFoundation3.pcm -fmodule-file=std_core=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_core/module.pcm -fmodule-file=std_ctype_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_ctype_h/module.pcm -fmodule-file=std_errno_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_errno_h/module.pcm -fmodule-file=std_fenv_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_fenv_h/module.pcm -fmodule-file=std_float_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_float_h/module.pcm -fmodule-file=std_inttypes_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_inttypes_h/module.pcm -fmodule-file=std_math_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_math_h/module.pcm -fmodule-file=std_private_mbstate_t=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_private_mbstate_t/module.pcm -fmodule-file=std_string_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_string_h/module.pcm -fmodule-file=std_uchar_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_uchar_h/module.pcm -fmodule-file=std_wctype_h=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std_wctype_h/module.pcm -fmodule-file=xlocale=clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/xlocale/DarwinFoundation3.pcm -fmodule-name=std -c -x c++ -Xclang -emit-module gen/third_party/libc++/src/include/module.modulemap -o clang_arm64_for_rust_host_build_tools/obj/buildtools/third_party/libc++/std/module.pcm
In module 'std_core' imported from gen/third_party/libc++/src/include/__algorithm/comp.h:13:
gen/third_party/libc++/src/include/__type_traits/is_convertible.h:22:101: error: definition of '__nat' must be imported from module 'std_core.type_traits.nat' before it is required
22 | struct _LIBCPP_NO_SPECIALIZATIONS is_convertible : integral_constant<bool, __is_convertible(_T1, _T2)> {};
| ^
gen/third_party/libc++/src/include/__filesystem/path.h:150:37: note: in instantiation of template class 'std::is_convertible<std::__nat, std::input_iterator_tag>' requested here
150 | template <class _Iter, bool _IsIt = __has_input_iterator_category<_Iter>::value, class = void>
| ^
gen/third_party/libc++/src/include/__filesystem/path.h:171:48: note: in instantiation of default argument for '__is_pathable_iter<string_type>' required here
171 | bool _IsIterT = !_IsCharIterT && __is_pathable_iter<_Tp>::value>
| ^~~~~~~~~~~~~~~~~~~~~~~
gen/third_party/libc++/src/include/__filesystem/path.h:384:59: note: in instantiation of default argument for '__is_pathable<string_type, true, false>' required here
384 | using _EnableIfPathable _LIBCPP_NODEBUG = __enable_if_t<__is_pathable<_SourceOrIter>::value, _Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
gen/third_party/libc++/src/include/__filesystem/path.h:412:36: note: in instantiation of template type alias '_EnableIfPathable' requested here
412 | template <class _Source, class = _EnableIfPathable<_Source, void> >
| ^
gen/third_party/libc++/src/include/__filesystem/path.h:413:25: note: in instantiation of default argument for 'path<string_type>' required here
413 | _LIBCPP_HIDE_FROM_ABI path(const _Source& __src, format = format::auto_format) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
414 | _SourceCVT<_Source>::__append_source(__pn_, __src);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
415 | }
| ~
gen/third_party/libc++/src/include/__filesystem/path.h:799:57: note: while substituting deduced template arguments into function template 'path' [with _Source = string_type, $1 = (no value)]
799 | _LIBCPP_HIDE_FROM_ABI path root_name() const { return string_type(__root_name()); }
| ^
gen/third_party/libc++/src/include/__type_traits/nat.h:20:8: note: definition here is not reachable
20 | struct __nat {
| ^
1 error generated.
```
The diag is a bit poor in that it leaves out the
```
template <class _Tp, class _Up>
using __has_iterator_category_convertible_to _LIBCPP_NODEBUG =
is_convertible<__detected_or_t<__nat, __iterator_category, iterator_traits<_Tp> >, _Up>;
```
bit which links the path.h note to `__nat`.
path.h does include __iterator/iterator_traits.h which does include __type_traits/nat.h. So this might be a bug in the impl?
https://github.com/llvm/llvm-project/pull/121199
More information about the libcxx-commits
mailing list