* Teach the test runner to parse runpl tags. Also teach our compiler option parser about `-fsanitize=address,undefined`.
* Add ASAN configs to test matrices, tell the validator that `.lst` files may be tabby now.
* Update libc++ expected results. The clang config is now `:2`, `:1` is cl with ASAN enabled.
* Skip libc++ `operator new` tests that ASan doesn't like, and `basic_string::max_size` test that ASan doesn't like.
* Avoid VSO-1875597 in `std/strings/string.conversions/stol.pass.cpp`
* Tell `P0881R7_stacktrace` that we `HAS_DEBUG_INFO` when building with ASan enabled.
* Create `fast_no_asan_matrix` to avoid VSO-1886547
* In `Dev11_1158803_regex_thread_safety` and `Dev10_814245_regex_character_class_crash`, `regex_match` seems to leak memory with ASAN enabled; OOMs on x86 only.
* Add new `asan-pipeline.yml` entry point for Azure pipelines and properly plumb `benchmarkBuildOutputLocationVar` through `native-build-test.yml`
This test constructs a `regex_iterator` and a `regex_token_iterator` with invalid character ranges. The first occurrence is benign - the test never directs the library to examine the bogus part of the range - but the second case ventures into the land of pure undefined behavior. Caught by ASan.
Fixes VSO-1854241
* Deprecate the contents in `<cvt/meow>` headers
Also make the deprecation of Microsoft extensions controlled by
`_SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS`.
* Centralize suppression in `tests/tr1/tests/cvt/env.lst`.
* Improve message grammar.
---------
Co-authored-by: Stephan T. Lavavej <stl@nuwen.net>
* PowerShell 7.3.4.
* New pool.
* VS 2022 17.7 Preview 1.
* Require Clang 16.
* Remove workaround for VSO-1753916 'C++23 tuple causes x86chk assertion: !"If lookup found RDSymbol before it should find something this time, too", ParseTree.cpp 10376'.
* Remove workarounds for VSO-1799670 "EDG rejects constexpr vector in debug mode with 'attempt to access expired storage' errors, part 3".
* Remove workarounds for LLVM-44833 "[concepts] deferred substitution into requirements of class template members not implemented".
* [llvm16] Clang has implemented P0960; unskip tests that now pass, and remove workaround in `P2474R2_views_repeat`.
* [llvm16] Clang now warns about overriding `/fp:strict` with `-ffp-contract`. Update `floating_point_model_matrix.lst` to silence these warnings.
* [llvm16] Fix redeclaration of `adjacent_transform_view` (atomic constraint expressions effectively cannot be reproduced since each utterance is distinct).
* [llvm16] Disambiguate `tuple` comparison operators.
* [llvm16] Workaround LLVM-62290, which has been fixed for Clang 17, in `<ranges>`.
* [llvm16] Remove workarounds for a couple of `TRANSITION, Clang 16` issues in `<ranges>` and `<type_traits>`.
* [llvm16] Perma-workaround unfiled clang bug in `P0896R4_views_take`.
* [llvm16 followup] Improve arrow comments.
* [llvm16 followup] We `_EXPORT_STD` both declarations and definitions.
* Disable UBSan to work around GH 3568 "Investigate why Clang/LLVM UBSan doesn't link".
* Guard `_addcarry_u64`/`_subborrow_u64` for Clang.
* `LDBL_DECIMAL_DIG` is now missing for Clang too.
* Although LLVM-46207 is still open, Clang now likes tgmath.h.
* Cite LLVM-62096 "Clang complains about concept depending on itself".
* Add workaround for LLVM-62762 "32-bit-only misoptimization of printf calls on Windows".
* clang-format 16, no manual changes.
The changes are almost entirely positive, with no horrible mangling,
and limited weirdness around `&`, `&&`, and `*`. No need for manual fixups.
* .clang-format: Update link to Clang 16.
* .clang-format: Sort defaults, no behavioral changes.
* .clang-format: Drop commented-out defaults, no behavioral changes.
`BreakBeforeInheritanceComma` and `BreakConstructorInitializersBeforeComma`
were never documented and aren't printed out by `-dump-config` anymore.
The weird empty `BasedOnStyle` isn't printed out by `-dump-config` anymore.
`ConstructorInitializerAllOnOneLineOrOnePerLine` and `AllowAllConstructorInitializersOnNextLine`
are now deprecated and aren't printed out by `-dump-config` anymore.
* .clang-format: `DeriveLineEnding` and `UseCRLF` were deprecated and fused into `LineEnding`, no behavioral changes.
* .clang-format: `AlignTrailingComments` is no longer a bool. Use the new options, no behavioral changes.
* .clang-format: `SortUsingDeclarations` (which we didn't customize) is no longer a bool, no behavioral changes.
* .clang-format: Add new defaults, no behavioral changes.
* .clang-format: `InsertNewlineAtEOF` is new, set it to `true`. Doesn't change any files right now.
* .clang-format: `RemoveSemicolon` is new, set it to `true`.
* clang-format 16, no manual changes - remove semicolons.
---------
Co-authored-by: Casey Carter <Casey@Carter.net>
Co-authored-by: Nicole Mazzuca <mazzucan@outlook.com>
Co-authored-by: Stephan T. Lavavej <stl@nuwen.net>
Co-authored-by: Casey Carter <cartec69@gmail.com>
Allow passing additional compiler flags if the compiler is cl.exe. (This is for passing extra flags to the internal "checked" builds of the compiler, enabling use-after-free memory checking in the compiler itself (at a ~15% throughput cost). These flags don't exist in shipping builds of the compiler, thus there's nothing to do for our GitHub test harness.)
* Implement the ABI plan from GH-1814
* Condition `<format>` and "`<chronat>`" on `__cpp_lib_format` instead of `__cpp_lib_concepts`.
* Condition the `view` concept - and everything that relies on it, including all of `<ranges>` - on `__cpp_lib_ranges` in addition to `__cpp_lib_concepts`.
* Add C++23 STL and testing infrastructure:
* Define `_HAS_CXX23` in `<yvals_core.h>`. We'll eventually want this to move into `<vcruntime.h>` so all `_HAS_CXXMEOW` definitions are nicely localized.
* `_HAS_CXX23` is defined to `1` iff `_HAS_CXX20 != 0` and `_MSVC_LANG` (if defined) or `__cplusplus` (otherwise) is greater than C++20's value of `202002L`. For Clang coverage, we'll have to manually define `_HAS_CXX23` to `1` until Clang updates their `__cplusplus` value for `/std:c++latest`.
* Rename `meow_concepts_woof.lst` to `meow_concepts_latest_woof.lst`.
* Update test matrices: Copy all `meow_latest_woof.lst` matrices to `meow_20_woof.lst`. Add `/std:c++20` coverage to the latter (still spelled `/std:c++latest` for Clang which doesn't grok `/std:c++20`) by duplicating the C++17 configs. `/std:c++latest` becomes C++23 mode (with additions of `/D_HAS_CXX23` for Clang).
* Replace uses of `meow_latest_woof.lst` with `meow_20_woof.lst`, except for a few tests that are only intended to have `latest` coverage, notably `include_each_header_alone` and all of `libcxx`.
* Only define `__cpp_lib_format` and `__cpp_lib_ranges` in C++23 mode. Update the feature-test macro test accordingly.