Skip to content

clang-cl no longer able to interpret (slightly outdated) microsoft headers #121881

Closed
@memory-thrasher

Description

@memory-thrasher
#include <filesystem>

int main(int argc, char** argv) {
  return argc;
}
$ clang-cl -DWIN32 --target=x86_64-pc-windows-msvc -fuse-ld=lld /winsdkdir /home/sid/clones/xwin/splat/sdk /vctoolsdir /home/sid/clones/xwin/splat/crt -I/home/sid/clones/xwin/external/include /MT /O2 /std:c++20 -Diswindows -c selfdep.cpp -o selfdep.o -fms-compatibility
In file included from selfdep.cpp:1:
In file included from /home/sid/clones/xwin/splat/crt/include/filesystem:15:
/home/sid/clones/xwin/splat/crt/include/chrono(1998,18): error: satisfaction of constraint 'three_way_comparable_with<sys_seconds, sys_time<_Duration> >' depends on itself
 1998 |         requires three_way_comparable_with<sys_seconds, sys_time<_Duration>>
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/sid/clones/xwin/splat/crt/include/chrono(1998,18): note: while substituting template arguments into constraint expression here
 1998 |         requires three_way_comparable_with<sys_seconds, sys_time<_Duration>>
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/sid/clones/xwin/splat/crt/include/concepts(223,11): note: while checking constraint satisfaction for template 'operator<=><std::chrono::duration<long long>>' required here
  223 |     { __t <  __u } -> _Boolean_testable;
      |           ^
/home/sid/clones/xwin/splat/crt/include/concepts(223,11): note: while substituting deduced template arguments into function template 'operator<=>' [with _Duration = std::chrono::duration<long long>]
/home/sid/clones/xwin/splat/crt/include/concepts(223,7): note: in instantiation of requirement here
  223 |     { __t <  __u } -> _Boolean_testable;
      |       ^~~~~~~~~~
/home/sid/clones/xwin/splat/crt/include/concepts(222,25): note: while substituting template arguments into constraint expression here
  222 | concept _Half_ordered = requires(const remove_reference_t<_Ty1>& __t, const remove_reference_t<_Ty2>& __u) {
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  223 |     { __t <  __u } -> _Boolean_testable;
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  224 |     { __t >  __u } -> _Boolean_testable;
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  225 |     { __t <= __u } -> _Boolean_testable;
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  226 |     { __t >= __u } -> _Boolean_testable;
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  227 | };
      | ~
/home/sid/clones/xwin/splat/crt/include/compare(298,71): note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
  298 | concept three_way_comparable = _Half_equality_comparable<_Ty, _Ty> && _Half_ordered<_Ty, _Ty>
      |                                                                       ^
/home/sid/clones/xwin/splat/crt/include/compare(305,5): note: while substituting template arguments into constraint expression here
  305 |     three_way_comparable<_Ty1, _Cat> && three_way_comparable<_Ty2, _Cat>
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/sid/clones/xwin/splat/crt/include/chrono(1998,18): note: while checking the satisfaction of concept 'three_way_comparable_with<std::chrono::time_point<std::chrono::system_clock, std::chrono::duration<long long>>, std::chrono::time_point<std::chrono::system_clock, std::chrono::duration<long long>>, std::partial_ordering>' requested here
 1998 |         requires three_way_comparable_with<sys_seconds, sys_time<_Duration>>
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/sid/clones/xwin/splat/crt/include/chrono(1998,18): note: while substituting template arguments into constraint expression here
 1998 |         requires three_way_comparable_with<sys_seconds, sys_time<_Duration>>
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/sid/clones/xwin/splat/crt/include/chrono(2004,29): note: while checking constraint satisfaction for template 'operator<=><std::chrono::duration<long long>>' required here
 2004 |         return _Left.date() <=> _Right.date();
      |                             ^~~
/home/sid/clones/xwin/splat/crt/include/chrono(2004,29): note: while substituting deduced template arguments into function template 'operator<=>' [with _Duration = std::chrono::duration<long long>]
[trimmed, only showing first error but there are plenty more like that one]

Cross-compiling from linux x64 to windows x64 using xwin splat.
Compiled locally from main, commit a8f3eba (current). Works when using commit 74fcb6a (July 2024). I'm running a bisect but that will take a while (compiling llvm takes 1+ hours on my box).

Metadata

Metadata

Assignees

No one assigned

    Labels

    clang-cl`clang-cl` driver. Don't use for other compiler parts

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions