* Fix undue overflow and underflow in complex sqrt
Modifies the scale factors in `_Fabs` (used by `sqrt`) such that:
- `_Fabs` doesn't underflow when the input is tiny.
- `sqrt` doesn't overflow when the input is huge.
* Improve accuracy of `log` when |z| is close to 1
When |z| is close to 1, compute log(|z|) as log1p(norm_minus_1(z)) / 2,
where norm_minus_1(z) = real(z) ^ 2 + imag(z) ^ 2 - 1 computed with
double width arithmetic to avoid catastrophic cancellation.
* Fix log(complex{1, tiny}) incorrectly returning -0 under FE_DOWNWARD
Co-authored-by: Curtis J Bezault <curtbezault@gmail.com>
Co-authored-by: Stephan T. Lavavej <stl@microsoft.com>
Fix Clang warnings in STL headers (when they aren't being suppressed for "system headers").
Change the test infrastructure to no longer treat STL headers as "system headers", so we'll remain clean with respect to Clang warnings in the future.
Fix Microsoft-internal VSO-609129 "`<cvt/sjis_0208>` appears to have impossible condition" which was also emitting a Clang warning.
* Updates for MSVC implementation of P1152R4 "deprecating volatile"
* Enable volatile deprecation warnings in STL's std and libcxx test suites
* `<any>`: `any_cast<T>` now returns `remove_cv_t<T>` because it's silly to have a cv-qualified return type (LWG issue submitted)
* `<optional>`: `optional<T>::value_or` now returns `remove_cv_t<T>` because it's silly to have a cv-qualified return type (LWG issue submitted).
* `<type_traits>`: suppress deprecation warnings around `_Implicitly_convert_to` so `_Implicitly_convert_to<volatile meow>(woof)` doesn't warn
* `<variant>`: Suppress deprecation warnings when forming the "imaginary" overload set `FUN` for the `variant(T&&)` constructor.
* Add the new warning C5215 "'%s' a function parameter with volatile qualified type is deprecated in C++20" to libc++'s "suppress deprecation warnings" macro and update llvm submodule reference.
* Skip libc++ test `containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp` after seeing one timeout too many in Contest logs.
* Suppress C5215 in `tr1/include/tfuns.h` which uses volatile function parameters, and in `tr1/functional4` altogether.
* Update skips for two libc++ tests that changed suffixes from `.sh.cpp` to `.pass.cpp`.
* Add a throwaway `addCompileFlags` function to `LibcxxTestFormat` to enable libc++ to continue working after upstream changes to pass configuration to the filesystem tests which we do not run.