-
Notifications
You must be signed in to change notification settings - Fork 247
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add CI test with LLVM 15 clang-cl #1203
Conversation
This seems to be blocked on llvm/llvm-project#57094 ( |
More failures:
|
C++/WinRT pushes C++ pretty hard in some areas and Clang may not be up to it in all cases. We may need to disable certain tests under Clang... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. The async test segmentation violations would need a debugger to investigate.
We might also want to report bugs to clang (resume_after, GetMany and weak). Ideally the whole suite would compile and run on both. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay, if you agree that disabling specific tests is fine for now then I'll go ahead and do that.
For test_win7 (async_auto_cancel), this is what I got locally:
For test_old (async, Throw_IAsyncAction):
(Couldn't dig any deeper) |
@kennykerr Can you also allow the action |
@alvinhochun done! |
This works on MSVC but not on Clang, not sure if it is a bug. See also: https://devblogs.microsoft.com/oldnewthing/20191219-00/?p=103230
Catch2's assertions rely on exceptions and this exception being thrown inside the custom winrt_throw_hresult_handler causes an abort.
This is also an issue related to the co_await overload resolution.
lld-link doesn't build the test\old_tests\Composable project because it errors out on the /WINMD:NO option. This reverts commit 6b61e42.
Helps figure out which tests crashes.
86c7a05
to
aa6467d
Compare
I have excluded all code that fails to build with Clang and I believe I have marked every flaky/crashing tests for the Clang build. When building with Clang, all these tests have the |
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
<Manifest> | ||
<AdditionalManifestFiles>app.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles> | ||
</Manifest> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why did this get dropped? This was to enable long path support.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The manifest is already included in the project as a "Manifest file" type (
cppwinrt/cppwinrt/cppwinrt.vcxproj
Line 118 in aa6467d
<Manifest Include="app.manifest" /> |
/manifestinput:app.manifest
flag passed to link.exe
.
This extra AdditionalManifestFiles
attribute is in a conditional "Debug|x64" block so it doesn't apply to other configurations anyway. It also makes lld-link produce a broken binary (filed llvm/llvm-project#58444), which is the main reason for removing this. (Though I ended up not switching to lld-link anyway due to llvm/llvm-project#58445. I guess this may be fixable in the project file but there's no rush to enable this.)
I really appreciate the way you've staged the changes in a series of manageable PRs. 👍 |
Some fixes and workarounds are needed to get Clang to build some of the tests. There are still some outstanding issues:
test\test\GetMany.cpp
andtest\test_win7\GetMany.cpp
, we get a recursive template instantiation:test\old_tests\UnitTests\weak.cpp
, there is an incomplete type error:I will probably need some help figuring these out.