-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Update LLVM #2976
Update LLVM #2976
Conversation
by passing non-`const` lvalues to the user's operation as specified. Drive-by: avoid sign/conversion warnings in the debug checks, and explicitly convert the op result to `size_type` in the call to `_Eos`.
don't define `_SILENCE_ALL_CXX23_DEPRECATION_WARNINGS` and `_SILENCE_NONFLOATING_COMPLEX_DEPRECATION_WARNING`
(I removed duplicates from the files)
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.
I've investigated a few count of failed cases.
It seems that some case should have passed according to godbolt. I don't know what's going wrong.
What do we do when libc++ tests fail/pass on ARM but pass/fail on AMD64? Do we mark them And yes, I have read |
Yeah - currently we don't have a way to do per-architecture FAILs. |
This test fails for 32-bit platforms because of truncation from
This test seemly fails for ARM/ARM64 platforms because MSVC STL considers
Currently we may have to skip tests with difference results on difference architectures. |
I created https://reviews.llvm.org/D130963 |
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.
I made a non-exhaustive analysis.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
1 similar comment
This comment was marked as outdated.
This comment was marked as outdated.
…amp/rand.dist.samp.discrete/eval.pass.cpp frederick-vs-ja noticed that microsoft/STL#2976 (comment) while we are working on updating LLVM submodule for MS STL: [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(33): error C2220: the following warning is treated as an error [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(287): note: see reference to function template instantiation 'void tests<__int64>(void)' being compiled [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(33): warning C4244: 'argument': conversion from '__int64' to 'const unsigned int', possible loss of data Differential Revision: https://reviews.llvm.org/D130963 (cherry picked from commit db0ac307c9df26d26a629552aec0a78f1b492dfd)
…mory>` in tests Found by @cpplearner (microsoft/STL#2976 (comment)) Differential Revision: https://reviews.llvm.org/D130997 (cherry picked from commit 495519e5f8232d144ed26e9c18dbcbac6a5f25eb)
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.
This all looks very reasonable
@@ -32,7 +32,7 @@ PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" | |||
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" | |||
PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" | |||
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" | |||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MD /std:c++20 /permissive-" | |||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MD /std:c++latest /permissive-" |
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.
does c++latest
not imply /permissive-
for 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.
AFAIK /permissive-
is meaningless for clang and cl /BE
. I'm only touching this file to sync it back up with usual_17_matrix
like the comment says, I don't intend to make any other changes.
That said, we need to make a pass over the env lists one of these days to remove /permissive
and /permissive-
where they are the defaults and/or meaningless.
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.
clang understands /permissive
and /permissive-
since clang 13: llvm/llvm-project@c70b0e8
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.
I'm not sure what if anything /Zc:twoPhase-
means to clang-cl, since it doesn't accept my test case:
namespace N {
struct S {};
}
template <class T>
constexpr bool f(T) {
return true;
}
template <class T>
constexpr bool g(T x) {
return f(x);
}
constexpr bool f(N::S) {
return false;
}
static_assert(!g(N::S{}), "");
I'm unable to determine if /std:c++20
and /std:c++latest
imply /permissive-
.
@CaseyCarter should this now be ready to merge, given that tests pass? |
No, I'm still doing internal testing. (There are a couple classes of test cases that the GitHub test runner knows how to handle which the internal libcxx test runner does not. They need to be SKIPPED manually and aren't always easily detectible.) I'll move this to Final Review when it's green internally and externally. |
* `.compile.pass.cpp` tests with no `main` * `.sh.cpp` tests * `.verify.cpp` tests all of which break only in the internal test runner.
Thanks so much for picking this up and finishing it off after I got busy, @fsb4000! Also thanks to everyone who helped analyze failures and classify issues. |
Updates the reference for the STL's llvm-project submodule. Doing so necessitates changes to:
basic_string::resize_and_overwrite
to enable a libc++ test to passpointer_traits::pointer_to
so "fancy pointers" work withconstexpr basic_string
(LWG-3454)expected_results.txt
andskipped_tests.txt
files that control the external and internal libc++ test runnersP0088R3_variant
,P0220R1_any
, andP220R1_optional
tests with their upstream libc++ sourcesDrive-by:
tests/std/tests/P0088R3_variant/env.lst
withusual_17_matrix.lst
Dual of MSVC-PR-428240.