-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Toolset update: VS 2022 17.14 Preview 2, Clang 19.1.5 #5335
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
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I added this workaround in GH 772, merged 2020-05-01. We began using `if constexpr` unconditionally (requiring CUDA 10.1 Update 2) in GH 1544, merged 2021-01-05. This workaround could have been removed then. At least I noticed this 4 years later! I'm going back to always calling `_Integral_to_string()`, now enhanced with `if constexpr`.
…ng a constexpr 'hidden friend'". This was fixed for VS by EDG 5.0 on 2018-12-15. In GH 759 merged on 2020-04-30, I had to preserve the workaround because it was still needed for CUDA 9.2 (released 2018-05). Fortunately I commented it, although very poorly. It's been 5 years and we now require CUDA 12.4 (released 2024-03), so we can remove this workaround.
…xpr defaulted SMF calls non-trivial SMF in base class".
… to a temporary emits Assertion failed: Nerrors > 0".
…rhs.is_lvalue() in constexpr.cpp".
…Symbol before it should find something this time, too' affecting STL atomic_ref test".
…staller hangs for VS 2022 17.13 and later). Need to verify that GH_000639_nvcc_include_all is passing instead of being skipped.
…access. Verified that this takes effect.
This is the most preferred method for explicit outbound connectivity.
…ompilation fails with std::format and VS2022". And add test coverage, verified in a VM.
This was added by GH 772, merged 2020-05-01, for CUDA 9.2 (released May 2018). I don't observe this warning with CUDA 12.4 (released March 2024).
These were added by GH 1342, merged 2021-05-20, for VSO-1329304 "EDG doesn't understand Standard _Pragma". We immediately fixed that locally and reported it upstream to EDG. In that release, VS 2019 16.10, we had just begun requiring CUDA 10.1 Update 2 (released Aug 2019). We now require CUDA 12.4 (released March 2024), and I observe that it understands Standard `_Pragma` just fine. As for Intel, they deprecated and removed their old compiler (icc), which we no longer attempt to avoid breaking in any way. (See DevCom-10200300.) For their new LLVM-based compiler (icx), I've verified that they accept Standard `_Pragma` on Windows.
Intel deprecated and removed their old compiler (icc), which we no longer attempt to avoid breaking in any way. (See DevCom-10200300.) Their new compiler (icx) is LLVM-based and doesn't define `__INTEL_COMPILER` anymore, so all of our accumulated workarounds don't affect it and can be removed. Instead, icx uses `__INTEL_LLVM_COMPILER` to specifically distinguish itself. It also identifies itself as a `__clang__`, activating all of our Clang codepaths. For example, it accepts Clang-style diagnostic pragmas. C:\Temp>type meow.cpp #include <cstdio> #include <vector> [[deprecated]] int square(int x) { return x * x; } int main() { #ifdef __INTEL_COMPILER std::puts("__INTEL_COMPILER is defined."); #else std::puts("__INTEL_COMPILER is NOT defined!"); #endif #ifdef __INTEL_LLVM_COMPILER std::puts("__INTEL_LLVM_COMPILER is defined."); #endif #ifdef __clang__ std::puts("__clang__ is defined."); #endif #ifdef SILENCE_DEPRECATED_WARNING _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") return square(0); _Pragma("clang diagnostic pop") #else return square(0); #endif } C:\Temp>icx --version Intel(R) oneAPI DPC++/C++ Compiler for applications running on Intel(R) 64, Version 2025.0.4 Build 20241205 Copyright (C) 1985-2024 Intel Corporation. All rights reserved. Intel(R) oneAPI DPC++/C++ Compiler 2025.0.4 (2025.0.4.20241205) Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: C:\Program Files (x86)\Intel\oneAPI\compiler\2025.0\bin\compiler Configuration file: C:\Program Files (x86)\Intel\oneAPI\compiler\2025.0\bin\compiler\..\icx.cfg C:\Temp>icx /EHsc /nologo /W4 /DSILENCE_DEPRECATED_WARNING meow.cpp && meow __INTEL_COMPILER is NOT defined! __INTEL_LLVM_COMPILER is defined. __clang__ is defined. C:\Temp>icx /EHsc /nologo /W4 meow.cpp C:\Temp\meow.cpp(27,12): warning: 'square' is deprecated [-Wdeprecated-declarations] 27 | return square(0); | ^ C:\Temp\meow.cpp(4,3): note: 'square' has been explicitly marked deprecated here 4 | [[deprecated]] int square(int x) { return x * x; } | ^ 1 warning generated.
Added by GH 4974.
See: https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/steps-checkout?view=azure-pipelines This matches what we do in checkout-submodule.yml. Retrying *tests* is an abomination. However, it's fine to retry checkouts, to be resilient to network gremlins.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
I'm speculatively mirroring this to the MSVC-internal repo - please notify me if any further changes are pushed. |
davidmrdavid
approved these changes
Mar 13, 2025
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.
Thanks ⭐!
No blockers, just two questions:
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #5074. Resolves #5282. Resolves DevCom-10863472 VSO-2411436.
📜 Changelog
<format>
in a CUDA project, by adding a compiler bug workaround.⚙️ Commits
if constexpr
.if constexpr
unconditionally (requiring CUDA 10.1 Update 2) in Always useif constexpr
, require CUDA 10.1 Update 2 #1544, merged 2021-01-05. This workaround could have been removed then. At least I noticed this 4 years later! I'm going back to always calling_Integral_to_string()
, now enhanced withif constexpr
.Dev11_0535636_functional_overhaul
.P0466R5_layout_compatibility_and_pointer_interconvertibility_traits
.GH_000639_nvcc_include_all
are passing instead of being skipped.thread.thread.destr/dtor.pass.cpp
#5074!float
by the result ofto_underlying()
.) As a compiler fix hasn't arrived in a timely manner, temporarily removing our "MSVC intrinsic" annotation is easy.__has_cpp_attribute(msvc::x)
._Pragma
._Pragma
just fine._Pragma
on Windows, see below.__INTEL_COMPILER
workarounds.__INTEL_COMPILER
anymore, so all of our accumulated workarounds don't affect it and can be removed. Instead, icx uses__INTEL_LLVM_COMPILER
to specifically distinguish itself. It also identifies itself as a__clang__
, activating all of our Clang codepaths. For example, it accepts Clang-style diagnostic pragmas. See icx usage example below.retryCountOnTaskFailure: 4
to checkout-self.yml.STL/azure-devops/checkout-submodule.yml
Lines 12 to 15 in 0d8f517
✅ STL-ASan-CI passed.
💻 icx Usage Example