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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to