# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# *** ISSUES REPORTED/KNOWN UPSTREAM ***
# LLVM-73836: warning C5101: use of preprocessor directive in function-like macro argument list is undefined behavior
std/time/time.syn/formatter.duration.pass.cpp:0 FAIL
std/time/time.syn/formatter.duration.pass.cpp:1 FAIL
std/time/time.syn/formatter.file_time.pass.cpp:0 FAIL
std/time/time.syn/formatter.file_time.pass.cpp:1 FAIL
std/time/time.syn/formatter.hh_mm_ss.pass.cpp:0 FAIL
std/time/time.syn/formatter.hh_mm_ss.pass.cpp:1 FAIL
std/time/time.syn/formatter.local_time.pass.cpp:0 FAIL
std/time/time.syn/formatter.local_time.pass.cpp:1 FAIL
std/time/time.syn/formatter.sys_time.pass.cpp:0 FAIL
std/time/time.syn/formatter.sys_time.pass.cpp:1 FAIL
std/time/time.syn/formatter.year.pass.cpp:0 FAIL
std/time/time.syn/formatter.year.pass.cpp:1 FAIL
std/time/time.syn/formatter.year_month.pass.cpp:0 FAIL
std/time/time.syn/formatter.year_month.pass.cpp:1 FAIL
std/time/time.syn/formatter.year_month_day_last.pass.cpp:0 FAIL
std/time/time.syn/formatter.year_month_day_last.pass.cpp:1 FAIL
std/time/time.syn/formatter.year_month_weekday.pass.cpp:0 FAIL
std/time/time.syn/formatter.year_month_weekday.pass.cpp:1 FAIL
std/time/time.syn/formatter.zoned_time.pass.cpp:0 FAIL
std/time/time.syn/formatter.zoned_time.pass.cpp:1 FAIL

# LLVM-90196: [libc++][format] Formatting range with m range-type is incorrect
std/utilities/format/format.range/format.range.formatter/format.functions.format.pass.cpp FAIL
std/utilities/format/format.range/format.range.formatter/format.functions.vformat.pass.cpp FAIL
std/utilities/format/format.range/format.range.fmtset/format.functions.format.pass.cpp FAIL
std/utilities/format/format.range/format.range.fmtset/format.functions.vformat.pass.cpp FAIL

# LLVM-100506: [libc++][test] Precondition violation in rand.dist.uni.real/param_ctor.pass.cpp
std/numerics/rand/rand.dist/rand.dist.uni/rand.dist.uni.real/param_ctor.pass.cpp FAIL

# LLVM-113609: [libc++][test] Non-rebindable test_alloc in string.capacity/deallocate_size.pass.cpp
std/strings/basic.string/string.capacity/deallocate_size.pass.cpp FAIL

# LLVM-116054: [libc++] vprint_[non]unicode(ostream &, string_view, Args&&...) should not pad the output
std/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.print/print.pass.cpp FAIL
std/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.print/vprint_nonunicode.pass.cpp FAIL
std/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.print/vprint_unicode.pass.cpp FAIL

# LLVM-122638: [libc++][test] re.regex.construct/bad_backref.pass.cpp assumes non-standard extension to extended regular expressions
std/re/re.regex/re.regex.construct/bad_backref.pass.cpp FAIL

# Non-Standard regex behavior.
# "It seems likely that the test is still non-conforming due to how libc++ handles the 'w' character class."
std/re/re.traits/lookup_classname.pass.cpp FAIL

# These tests are extremely slow, taking over 23 minutes to execute (in debug mode, non-optimized).
# They contain 10K^2 / 2 == 50M loops.
std/input.output/iostreams.base/ios.base/ios.base.storage/iword.pass.cpp SKIPPED
std/input.output/iostreams.base/ios.base/ios.base.storage/pword.pass.cpp SKIPPED

# This test is passing non-BidirectionalIterators to std::prev.
# LWG-3197 "std::prev should not require BidirectionalIterator" (New)
std/iterators/iterator.primitives/iterator.operations/prev.pass.cpp FAIL

# Testing nonstandard behavior
std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp FAIL

# Tests with undefined behavior under N4842 [basic.start.term]/6 (detached threads)
std/thread/futures/futures.task/futures.task.members/dtor.pass.cpp SKIPPED
std/thread/futures/futures.unique_future/wait_until.pass.cpp SKIPPED
std/thread/thread.jthread/detach.pass.cpp SKIPPED

# libcxx is incorrect on what the type passed to allocator::construct should be (LLVM-D61364)
std/containers/associative/map/map.modifiers/insert_and_emplace_allocator_requirements.pass.cpp FAIL
std/containers/associative/set/insert_and_emplace_allocator_requirements.pass.cpp FAIL
std/containers/unord/unord.map/unord.map.modifiers/insert_and_emplace_allocator_requirements.pass.cpp FAIL
std/containers/unord/unord.set/insert_and_emplace_allocator_requirements.pass.cpp FAIL

# Bogus test believes that copyability of array<T, 0> must be the same as array<T, 1>
std/containers/sequences/array/array.cons/implicit_copy.pass.cpp FAIL

# libc++ hasn't implemented P0952R2, which changes the generate_canonical algorithm.
std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp FAIL

# Test expects __cpp_lib_chrono to have the old value 201611L for P0505R0; we define the C++20 value 201907L for P1466R3.
std/language.support/support.limits/support.limits.general/chrono.version.compile.pass.cpp FAIL

# Test expects __cpp_lib_freestanding_algorithm to not be defined before C++26; we define it unconditionally.
# Test expects __cpp_lib_shift to have the C++20 value 201806L for P0769R2; we define the C++23 value 202202L for P2440R1.
std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp FAIL

# Test expects __cpp_lib_print to have the old value 202207L for P2093R14; we define the C++23 value 202406L for P3235R3.
std/language.support/support.limits/support.limits.general/ostream.version.compile.pass.cpp FAIL
std/language.support/support.limits/support.limits.general/print.version.compile.pass.cpp FAIL

# libc++ tests strengthened assignment operators (not compatible with P2165R4: "Compatibility Between tuple, pair, And tuple-like Objects")
std/utilities/tuple/tuple.tuple/tuple.assign/const_pair.pass.cpp FAIL

# libc++ doesn't implement P2231R1 Add further constexpr support for variant
std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp FAIL

# libc++ has not implemented P2278R4: "cbegin should always return a constant iterator"
std/containers/views/views.span/span.cons/span.pass.cpp FAIL
std/containers/views/views.span/types.pass.cpp FAIL
std/ranges/range.access/begin.pass.cpp FAIL
std/ranges/range.access/data.pass.cpp FAIL
std/ranges/range.access/end.pass.cpp FAIL
std/ranges/range.access/rbegin.pass.cpp FAIL
std/ranges/range.access/rend.pass.cpp FAIL

# libc++ has not implemented P2404R3: "Move-Only Types For Comparison Concepts"
std/algorithms/alg.sorting/alg.sort/partial.sort.copy/ranges_partial_sort_copy.pass.cpp FAIL
std/language.support/support.limits/support.limits.general/concepts.version.compile.pass.cpp FAIL
std/utilities/function.objects/range.cmp/equal_to.pass.cpp FAIL
std/utilities/function.objects/range.cmp/greater.pass.cpp FAIL
std/utilities/function.objects/range.cmp/greater_equal.pass.cpp FAIL
std/utilities/function.objects/range.cmp/less.pass.cpp FAIL
std/utilities/function.objects/range.cmp/less_equal.pass.cpp FAIL
std/utilities/function.objects/range.cmp/not_equal_to.pass.cpp FAIL

# libc++ has not implemented P2407R5: "Freestanding Library: Partial Classes"
std/language.support/support.limits/support.limits.general/array.version.compile.pass.cpp FAIL
std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp FAIL
std/language.support/support.limits/support.limits.general/string_view.version.compile.pass.cpp FAIL

# libc++ doesn't implement P2588R3 barrier's Phase Completion Guarantees
std/language.support/support.limits/support.limits.general/barrier.version.compile.pass.cpp FAIL

# libc++ has not implemented P2833R2: "Freestanding Library: inout expected span"
std/language.support/support.limits/support.limits.general/expected.version.compile.pass.cpp FAIL
std/language.support/support.limits/support.limits.general/mdspan.version.compile.pass.cpp FAIL

# libc++ has not implemented P2937R0: "Freestanding Library: Remove strtok"
std/language.support/support.limits/support.limits.general/cstring.version.compile.pass.cpp FAIL

# libc++ has not implemented P3323R1: "Forbid atomic<cv T>, Specify atomic_ref<cv T>"
std/atomics/atomics.ref/member_types.compile.pass.cpp FAIL

# Various bogosity (LLVM-D141004), warning C6011: Dereferencing NULL pointer
# Note: The :1 (ASan) configuration doesn't run static analysis.
std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp:0 FAIL
std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_pair_values.pass.cpp:0 FAIL

# Various bogosity (LLVM-D141004)
std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/resource.pass.cpp FAIL
std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/select_on_container_copy_construction.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.ctor/ctor_does_not_allocate.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.ctor/sync_with_default_resource.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.ctor/unsync_with_default_resource.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate_overaligned_request.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_deallocate_matches_allocate.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate_overaligned_request.pass.cpp FAIL
std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_deallocate_matches_allocate.pass.cpp FAIL

# libc++ is missing various Ranges DRs
std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp FAIL
std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp FAIL

# libc++ is missing various <format> DRs
std/language.support/support.limits/support.limits.general/format.version.compile.pass.cpp FAIL

# libc++ doesn't implement LWG-2584 (LLVM-99976)
std/re/re.regex/re.regex.construct/bad_escape.pass.cpp FAIL

# libc++ doesn't implement LWG-3670
std/ranges/range.factories/range.iota.view/iterator/member_typedefs.compile.pass.cpp FAIL

# libc++ doesn't implement LWG-4013
std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer.value/ctor.default.pass.cpp FAIL
std/ranges/range.adaptors/range.lazy.split/range.lazy.split.outer.value/ctor.iter.pass.cpp FAIL

# libc++ doesn't implement LWG-4112
std/ranges/range.adaptors/range.join/range.join.iterator/arrow.pass.cpp FAIL

# If any feature-test macro test is failing, this consolidated test will also fail.
std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp FAIL


# *** INTERACTIONS WITH MSVC THAT UPSTREAM LIKELY WON'T FIX ***
# These tests set an allocator with a max_size() too small to default construct an unordered container
# (due to our minimum bucket size).
std/containers/unord/unord.map/max_size.pass.cpp FAIL
std/containers/unord/unord.multimap/max_size.pass.cpp FAIL
std/containers/unord/unord.multiset/max_size.pass.cpp FAIL
std/containers/unord/unord.set/max_size.pass.cpp FAIL

# Extreme compiler memory consumption.
std/utilities/tuple/tuple.tuple/tuple.apply/apply_large_arity.pass.cpp SKIPPED
std/utilities/tuple/tuple.tuple/tuple.cnstr/recursion_depth.pass.cpp SKIPPED

# Our GitHub and MSVC-internal test harnesses would need special machinery to build the Standard Library Modules.
std/modules/std.compat.pass.cpp FAIL
std/modules/std.pass.cpp FAIL


# *** ASAN FAILURES ***
# Even with `allocator_may_return_null=1`, ASan kills oversized allocations instead of throwing `bad_alloc`.
# (google/sanitizers#295)
std/language.support/support.dynamic/new.delete/new.delete.array/new.size_align_nothrow.except.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.array/new.size_align.except.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.array/new.size_align.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.array/new.size_nothrow.except.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.array/new.size.except.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.array/new.size.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.single/new.size_align_nothrow.except.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.single/new.size_align.except.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.single/new.size_align.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.single/new.size_nothrow.except.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.single/new.size.except.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.single/new.size.pass.cpp:1 FAIL
std/strings/basic.string/string.capacity/max_size.pass.cpp:1 FAIL

# Even with `allocator_may_return_null=1`, ASan doesn't call `new_handler` on allocation failure. (LLVM-15544)
std/language.support/support.dynamic/new.delete/new.delete.array/new.size_align_nothrow.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.array/new.size_nothrow.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.single/new.size_align_nothrow.pass.cpp:1 FAIL
std/language.support/support.dynamic/new.delete/new.delete.single/new.size_nothrow.pass.cpp:1 FAIL

# Not analyzed. SKIPPED because this is x86-specific.
# ERROR: AddressSanitizer: allocator is out of memory trying to allocate NNNN bytes
std/atomics/atomics.types.generic/atomics.types.float/compare_exchange_strong.pass.cpp:1 SKIPPED
std/atomics/atomics.types.generic/atomics.types.float/compare_exchange_weak.pass.cpp:1 SKIPPED
std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp:1 SKIPPED


# *** MISSING STL FEATURES ***
# Missing mbrtoc8 and c8rtomb
std/depr/depr.c.headers/uchar_h.compile.pass.cpp FAIL
std/strings/c.strings/cuchar.compile.pass.cpp FAIL

# P0429R9 <flat_map>
std/containers/container.adaptors/flat.map.syn/sorted_unique.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.access/at_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.access/at.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.access/index_key.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.access/index_rv_key.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.access/index_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.capacity/empty.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.capacity/max_size.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.capacity/size.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/alloc.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/assign_initializer_list.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/compare.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/containers.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/copy_alloc.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/copy_assign.addressof.compile.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/copy_assign.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/copy.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/deduct_pmr.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/deduct.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/default_noexcept.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/default.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/dtor_noexcept.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/initializer_list.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/iter_iter.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/move_alloc.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/move_assign_clears.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/move_assign_noexcept.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/move_assign.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/move_exceptions.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/move_noexcept.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/move.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/pmr.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/range.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/sorted_container.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/sorted_initializer_list.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.cons/sorted_iter_iter.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.erasure/erase_if_exceptions.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.erasure/erase_if.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.iterators/iterator_comparison.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.iterators/iterator_concept_conformance.compile.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.iterators/iterator.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.iterators/range_concept_conformance.compile.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.iterators/reverse_iterator.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/clear.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/emplace_hint.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/emplace.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/erase_iter_iter.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/erase_iter.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/erase_key_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/erase_key.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/extract.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_cv.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_initializer_list.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_iter_cv.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_iter_iter.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_iter_rv.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_or_assign_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_or_assign.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_range.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_rv.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_sorted_initializer_list.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_sorted_iter_iter.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/insert_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/replace.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/swap_free.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/swap_member.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/try_emplace_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.modifiers/try_emplace.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.observers/comp.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.observers/keys_values.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/contains_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/contains.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/count_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/count.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/equal_range_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/equal_range.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/find_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/find.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/lower_bound_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/lower_bound.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/upper_bound_transparent.pass.cpp FAIL
std/containers/container.adaptors/flat.map/flat.map.operations/upper_bound.pass.cpp FAIL
std/containers/container.adaptors/flat.map/incomplete_type.pass.cpp FAIL
std/containers/container.adaptors/flat.map/op_compare.pass.cpp FAIL
std/containers/container.adaptors/flat.map/types.compile.pass.cpp FAIL

# P0533R9 constexpr For <cmath> And <cstdlib>
std/language.support/support.limits/support.limits.general/cmath.version.compile.pass.cpp FAIL
std/language.support/support.limits/support.limits.general/cstdlib.version.compile.pass.cpp FAIL

# P2255R2 "Type Traits To Detect References Binding To Temporaries"
std/language.support/support.limits/support.limits.general/type_traits.version.compile.pass.cpp FAIL

# P2674R1 is_implicit_lifetime
std/utilities/meta/meta.unary/meta.unary.prop/is_implicit_lifetime.pass.cpp FAIL


# *** MISSING COMPILER FEATURES ***

# None!


# *** MISSING LWG ISSUE RESOLUTIONS ***
# LWG-2503 "multiline option should be added to syntax_option_type"
std/re/re.alg/re.alg.search/no_update_pos.pass.cpp FAIL
std/re/re.const/re.matchflag/match_multiline.pass.cpp FAIL
std/re/re.const/re.matchflag/match_not_eol.pass.cpp FAIL
std/re/re.const/re.synopt/syntax_option_type.pass.cpp FAIL

# LWG-2532 "Satisfying a promise at thread exit" (Open)
# WCFB02 implements the proposed resolution for this issue
std/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp FAIL
std/thread/futures/futures.promise/set_lvalue_at_thread_exit.pass.cpp FAIL
std/thread/futures/futures.promise/set_rvalue_at_thread_exit.pass.cpp FAIL
std/thread/futures/futures.promise/set_value_at_thread_exit_const.pass.cpp FAIL
std/thread/futures/futures.promise/set_value_at_thread_exit_void.pass.cpp FAIL
std/thread/futures/futures.task/futures.task.members/make_ready_at_thread_exit.pass.cpp FAIL

# LWG-3343 "Ordering of calls to unlock() and notify_all() in Effects element of notify_all_at_thread_exit() should be reversed" (Open)
# libc++ speculatively implements LWG-3343. If we wanted to do the same thing,
# we'd need to reverse the order of the _Mtx_unlock() and _Cnd_broadcast() calls in xnotify.cpp.
std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp SKIPPED


# *** C1XX COMPILER BUGS ***
# VSO-1271673 "static analyzer doesn't know about short-circuiting"
# Note: The :1 (ASan) configuration doesn't run static analysis.
std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort.pass.cpp:0 FAIL
std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort_comp.pass.cpp:0 FAIL

# DevCom-1436243 VSO-1335743 constexpr new initialized array
std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.modifiers/reset_self.pass.cpp:0 FAIL
std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.modifiers/reset_self.pass.cpp:1 FAIL
std/utilities/smartptr/unique.ptr/unique.ptr.create/make_unique.array.pass.cpp:0 FAIL
std/utilities/smartptr/unique.ptr/unique.ptr.create/make_unique.array.pass.cpp:1 FAIL

# DevCom-1626139 VSO-1456427 "compile-time NaN comparison"
std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/three-way.pass.cpp:0 FAIL
std/iterators/predef.iterators/reverse.iterators/reverse.iter.cmp/three-way.pass.cpp:1 FAIL
std/library/description/conventions/expos.only.func/synth_three_way.pass.cpp:0 FAIL
std/library/description/conventions/expos.only.func/synth_three_way.pass.cpp:1 FAIL
std/utilities/function.objects/comparisons/compare_three_way.pass.cpp:0 FAIL
std/utilities/function.objects/comparisons/compare_three_way.pass.cpp:1 FAIL
std/utilities/tuple/tuple.tuple/tuple.rel/three_way.pass.cpp:0 FAIL
std/utilities/tuple/tuple.tuple/tuple.rel/three_way.pass.cpp:1 FAIL
std/utilities/utility/pairs/pairs.spec/three_way_comparison.pass.cpp:0 FAIL
std/utilities/utility/pairs/pairs.spec/three_way_comparison.pass.cpp:1 FAIL
std/utilities/variant/variant.relops/three_way.pass.cpp:0 FAIL
std/utilities/variant/variant.relops/three_way.pass.cpp:1 FAIL

# VSO-2188243 constexpr ICE in C1XX adapt::to_prvalue
std/algorithms/robust_re_difference_type.compile.pass.cpp:0 FAIL
std/algorithms/robust_re_difference_type.compile.pass.cpp:1 FAIL

# DevCom-1638563 VSO-1457836: icky static analysis false positive
# Resolved wontfix, need to report again.
# Note: The :1 (ASan) configuration doesn't run static analysis.
std/language.support/support.coroutines/end.to.end/go.pass.cpp:0 FAIL

# DevCom-1638496 VSO-1462745: C1XX doesn't properly reject int <=> unsigned
std/language.support/cmp/cmp.concept/three_way_comparable_with.compile.pass.cpp:0 FAIL
std/language.support/cmp/cmp.concept/three_way_comparable_with.compile.pass.cpp:1 FAIL
std/language.support/cmp/cmp.result/compare_three_way_result.compile.pass.cpp:0 FAIL
std/language.support/cmp/cmp.result/compare_three_way_result.compile.pass.cpp:1 FAIL

# VSO-1513409: Bogus `warning C4100: '<_Args_0>': unreferenced formal parameter` when `if constexpr` selects another branch
std/containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp:0 FAIL
std/containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp:1 FAIL

# DevCom-10026599 VSO-1532879: conditional expression has two different types
std/concepts/concepts.compare/concept.equalitycomparable/equality_comparable_with.compile.pass.cpp:0 FAIL
std/concepts/concepts.compare/concept.equalitycomparable/equality_comparable_with.compile.pass.cpp:1 FAIL

# DevCom-10439137 VSO-1869865: Discarded id-expression causes unnecessary reading
std/containers/sequences/array/array.cons/initialization.pass.cpp:0 FAIL
std/containers/sequences/array/array.cons/initialization.pass.cpp:1 FAIL

# DevCom-10456523 VSO-1880569: MSVC incorrectly raises constant evaluation failure in pointer comparison
std/algorithms/robust_against_adl.compile.pass.cpp:0 FAIL
std/algorithms/robust_against_adl.compile.pass.cpp:1 FAIL

# VSO-1923988: constexpr evaluation performs an assignment with a derived type when it should use a base type
std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp:1 FAIL

# VSO-1948221 x86chk ICE with constexpr type_info: Assertion failed: isIndirection()
std/language.support/support.rtti/type.info/type_info.equal.pass.cpp:0 FAIL
std/language.support/support.rtti/type.info/type_info.equal.pass.cpp:1 FAIL

# VSO-2338829 constexpr error "subtracting pointers to elements of different arrays" in _String_const_iterator::_Verify_offset()
std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp:1 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp:0 FAIL
std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp:1 FAIL

# VSO-2338880 constexpr error in vector::iterator's _Compat() check when using views::transform
std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.segmented.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_backward.segmented.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_n.segmented.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.copy/ranges.copy_n.segmented.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.segmented.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.copy/ranges.copy.segmented.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.move/ranges.move_backward.segmented.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.move/ranges.move_backward.segmented.pass.cpp:1 FAIL
std/algorithms/alg.modifying.operations/alg.move/ranges.move.segmented.pass.cpp:0 FAIL
std/algorithms/alg.modifying.operations/alg.move/ranges.move.segmented.pass.cpp:1 FAIL


# *** CLANG COMPILER BUGS ***
# LLVM-46207 Clang's tgmath.h interferes with the UCRT's tgmath.h
std/depr/depr.c.headers/tgmath_h.pass.cpp:2 FAIL


# *** CLANG ISSUES, NOT YET ANALYZED ***
# Not analyzed. Clang apparently defines platform macros differently from C1XX.
std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp:2 FAIL

# Not analyzed. Possibly C++20 equality operator rewrite issues.
std/utilities/expected/expected.expected/equality/equality.other_expected.pass.cpp:2 FAIL
std/utilities/expected/expected.void/equality/equality.other_expected.pass.cpp:2 FAIL


# *** STL BUGS ***
# GH-784 <type_traits>: aligned_storage has incorrect alignment defaults
std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp FAIL

# GH-1006 <algorithm>: debug checks for predicates are observable
std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp FAIL

# GH-1035 <forward_list>, <string>, <vector>: Debug mode STL causes terminate() to be called under low memory
std/containers/container.adaptors/priority.queue/priqueue.members/push_range.pass.cpp FAIL
std/containers/sequences/forwardlist/forwardlist.modifiers/assign_range.pass.cpp FAIL
std/containers/sequences/forwardlist/forwardlist.modifiers/insert_range_after.pass.cpp FAIL
std/containers/sequences/forwardlist/forwardlist.modifiers/prepend_range.pass.cpp FAIL
std/containers/sequences/vector.bool/construct_from_range.pass.cpp FAIL
std/containers/sequences/vector/vector.modifiers/append_range.pass.cpp FAIL
std/containers/sequences/vector/vector.modifiers/assign_range.pass.cpp FAIL
std/strings/basic.string/string.modifiers/string_append/append_range.pass.cpp FAIL
std/strings/basic.string/string.modifiers/string_assign/assign_range.pass.cpp FAIL
std/strings/basic.string/string.modifiers/string_insert/insert_range.pass.cpp FAIL

# GH-1112 <locale>: the enum value of std::money_base is not correct
std/localization/locale.categories/category.monetary/locale.moneypunct/money_base.pass.cpp FAIL

# GH-1113 <fstream>: basic_filebuf doesn't comply with setbuf(0,0) requirement in the standard
std/input.output/file.streams/fstreams/filebuf.virtuals/overflow.pass.cpp FAIL
std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.pass.cpp FAIL

# GH-1190 <future>: incorrectly used copy assignment instead of copy construction in set_value
std/thread/futures/futures.promise/set_value_const.pass.cpp FAIL

# GH-1264 <locale>: wbuffer_convert does not implement seek
std/localization/locales/locale.convenience/conversions/conversions.buffer/seekoff.pass.cpp FAIL

# GH-1275 <locale>: missing some locale names
# We don't have the locale names libcxx wants specialized in platform_support.hpp
# More bugs may be uncovered when the locale names are present.
# move.pass.cpp can crash.
std/input.output/iostreams.base/ios/basic.ios.members/move.pass.cpp SKIPPED
std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.moneypunct.byname/neg_format.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.moneypunct.byname/negative_sign.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.moneypunct.byname/pos_format.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp FAIL
std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp FAIL

# GH-1374: Spaceship CPO wording in [cmp.alg] needs an overhaul
# (Technically an STL bug until the wording in the working draft is fixed to agree.)
std/language.support/cmp/cmp.alg/compare_partial_order_fallback.pass.cpp FAIL
std/language.support/cmp/cmp.alg/compare_strong_order_fallback.pass.cpp FAIL
std/language.support/cmp/cmp.alg/compare_weak_order_fallback.pass.cpp FAIL
std/language.support/cmp/cmp.alg/partial_order.pass.cpp FAIL
std/language.support/cmp/cmp.alg/strong_order.pass.cpp FAIL
std/language.support/cmp/cmp.alg/weak_order.pass.cpp FAIL

# GH-4238: <chrono>: file_clock::to_utc() overflows for file_time<nanoseconds>
# This test also has a bogus assumption about the file_time epoch, and file_time<nanoseconds> is doomed on Windows.
std/time/time.clock/time.clock.file/ostream.pass.cpp FAIL

# GH-4248: <chrono>: format() %y mishandles negative year values
# LLVM-74727: [libc++] Should formatting year{-99} with %C produce "-1" or "-01"?
std/time/time.syn/formatter.year.pass.cpp:2 FAIL

# GH-4268: <sstream>, <syncstream>: Buffer types assume that allocated pointers are not modified by users
std/input.output/string.streams/stringbuf/stringbuf.members/str.pass.cpp FAIL
std/input.output/string.streams/stringbuf/stringbuf.members/view.pass.cpp FAIL
std/input.output/syncstream/syncbuf/syncstream.syncbuf.cons/dtor.pass.cpp FAIL
std/input.output/syncstream/syncbuf/syncstream.syncbuf.members/emit.pass.cpp FAIL


# *** VCRUNTIME BUGS ***

# None!


# *** CRT BUGS ***
# We're permanently missing aligned_alloc().
std/depr/depr.c.headers/stdlib_h.aligned_alloc.compile.pass.cpp FAIL
std/language.support/support.runtime/cstdlib.aligned_alloc.compile.pass.cpp FAIL

# ArchivedOS-12440914 "_Exit allows cleanup in other DLLs"
std/thread/thread.threads/thread.thread.class/thread.thread.assign/move2.pass.cpp SKIPPED
std/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp SKIPPED

# OS-29877133 "LDBL_DECIMAL_DIG missing from <float.h>"
std/depr/depr.c.headers/float_h.compile.pass.cpp:0 FAIL
std/depr/depr.c.headers/float_h.compile.pass.cpp:1 FAIL
std/language.support/support.limits/c.limits/cfloat.pass.cpp:0 FAIL
std/language.support/support.limits/c.limits/cfloat.pass.cpp:1 FAIL

# DevCom-10299797 VSO-1760401 "max_align_t is not provided by stddef.h"
std/depr/depr.c.headers/stddef_h.compile.pass.cpp:0 FAIL
std/depr/depr.c.headers/stddef_h.compile.pass.cpp:1 FAIL


# *** LIKELY BOGUS TESTS ***

# Test bug after LWG-2899 "is_(nothrow_)move_constructible and tuple, optional and unique_ptr" was accepted.
std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move_convert.pass.cpp FAIL
std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move_convert.runtime.pass.cpp FAIL
std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move_convert.single.pass.cpp FAIL
std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move.pass.cpp FAIL

# `ALLOW_RETRIES` comments indicate tests with timing assumptions
std/thread/futures/futures.async/async.pass.cpp SKIPPED
std/thread/futures/futures.unique_future/wait_for.pass.cpp SKIPPED
std/thread/thread.condition/thread.condition.condvarany/notify_one.pass.cpp SKIPPED
std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_try_to_lock.pass.cpp SKIPPED

# Not analyzed, likely bogus tests. Appears to be timing assumptions.
std/thread/futures/futures.shared_future/get.pass.cpp SKIPPED
std/thread/futures/futures.shared_future/wait.pass.cpp SKIPPED
std/thread/futures/futures.shared_future/wait_for.pass.cpp SKIPPED
std/thread/futures/futures.shared_future/wait_until.pass.cpp SKIPPED
std/thread/futures/futures.unique_future/get.pass.cpp SKIPPED
std/thread/futures/futures.unique_future/wait.pass.cpp SKIPPED
std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_duration.pass.cpp SKIPPED
std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp SKIPPED
std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp SKIPPED
std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp SKIPPED
std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp SKIPPED
std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp SKIPPED

# Not analyzed, likely bogus tests. Various assertions, probably POSIX assumptions.
std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_error_code_const_char_pointer.pass.cpp FAIL
std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_error_code_string.pass.cpp FAIL
std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_error_code.pass.cpp FAIL
std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_int_error_category_const_char_pointer.pass.cpp FAIL
std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_int_error_category_string.pass.cpp FAIL
std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_int_error_category.pass.cpp FAIL

# Sensitive to implementation details. Assertion failed: test_alloc_base::count == expected_num_allocs
std/containers/container.requirements/container.requirements.general/allocator_move.pass.cpp FAIL

# Tests emit warning C4244: 'argument': conversion from 'T' to 'const std::complex<double>::_Ty', possible loss of data
std/numerics/complex.number/cmplx.over/conj.pass.cpp:0 FAIL
std/numerics/complex.number/cmplx.over/conj.pass.cpp:1 FAIL
std/numerics/complex.number/cmplx.over/pow.pass.cpp:0 FAIL
std/numerics/complex.number/cmplx.over/pow.pass.cpp:1 FAIL
std/numerics/complex.number/cmplx.over/proj.pass.cpp:0 FAIL
std/numerics/complex.number/cmplx.over/proj.pass.cpp:1 FAIL

# Assertion failed: c == NaN || c == non_zero_nan
# Testing input values outside the range of [complex.value.ops]/9
# libc++ handles those input values differently
std/numerics/complex.number/complex.value.ops/polar.pass.cpp FAIL

# Assertion failed: invalid beta argument for gamma_distribution
# test4() constructs a negative_binomial_distribution from (40, 1); [rand.dist.bern.negbin] says p == 1 generates undefined probabilities.
std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.negbin/eval.pass.cpp FAIL

# Assertion failed: (std::lerp(T(2.3), T(2.3), inf) == T(2.3))
# Asserts `(std::lerp(T(2.3), T(2.3), inf) == T(2.3))` and `std::isnan(std::lerp(T( 0), T( 0), inf))`
# They shouldn't behave differently. Both of them should probably return NaN.
std/numerics/c.math/lerp.pass.cpp FAIL

# Bogus test passes a class type as the second argument to std::advance
std/iterators/iterator.primitives/iterator.operations/robust_against_adl.pass.cpp FAIL

# Non-Standard assumption that std::filesystem::file_time_type::duration::period is std::nano
std/input.output/filesystems/fs.filesystem.synopsis/file_time_type_resolution.compile.pass.cpp FAIL

# libc++ requires bind_front to be SFINAE-friendly, although the Standard uses "Mandates:" for constructibility.
std/utilities/function.objects/func.bind_front/bind_front.pass.cpp FAIL

# libc++ chose option A for [time.clock.file.members], and we chose option B.
std/time/time.clock/time.clock.file/to_from_sys.pass.cpp FAIL

# libc++'s filesystem::path::iterator models bidirectional_iterator, which is not guaranteed by the Standard
std/input.output/filesystems/class.path/range_concept_conformance.compile.pass.cpp FAIL

# libc++ speculatively implemented an old proposed resolution for LWG-3645.
# This test is bogus according to the wording that was ultimately accepted for C++23.
std/strings/basic.string/string.capacity/resize_and_overwrite.pass.cpp FAIL

# libc++ speculatively implements the proposed resolution for LWG-4058.
std/iterators/iterator.requirements/iterator.concepts/iterator.concept.random.access/contiguous_iterator.compile.pass.cpp FAIL
std/utilities/memory/pointer.conversion/to_address_without_pointer_traits.pass.cpp FAIL

# We disagree about whether various chrono types should be optimized, and the test is clearly wrong about vector<bool>::reference.
std/utilities/format/format.formatter/format.formatter.locking/enable_nonlocking_formatter_optimization.compile.pass.cpp FAIL

# We disagree on the syntax flags set by the default basic_regex constructor: we set 0, libc++ sets ECMAScript.
# Relates to LWG-3604.
std/re/re.regex/re.regex.construct/default.pass.cpp FAIL
std/re/re.regex/re.regex.nonmemb/re.regex.nmswap/swap.pass.cpp FAIL
std/re/re.regex/re.regex.swap/swap.pass.cpp FAIL

# Test emits a Clang -Wself-move warning, so it should avoid the self-move or suppress the warning.
std/containers/sequences/vector/addressof.compile.pass.cpp:2 FAIL

# throwing_allocator appears to be totally non-Standard.
std/containers/sequences/vector.bool/ctor_exceptions.pass.cpp FAIL

# The test is checking _LIBCPP_HAS_THREADS, which we don't have.
std/language.support/support.limits/support.limits.general/shared_mutex.version.compile.pass.cpp FAIL

# x64 truncation warnings caused by allocators.
std/containers/sequences/vector/vector.capacity/reserve_exceptions.pass.cpp:0 SKIPPED
std/containers/sequences/vector/vector.capacity/reserve_exceptions.pass.cpp:1 SKIPPED
std/containers/sequences/vector/vector.capacity/resize_size_exceptions.pass.cpp:0 SKIPPED
std/containers/sequences/vector/vector.capacity/resize_size_exceptions.pass.cpp:1 SKIPPED
std/containers/sequences/vector/vector.capacity/resize_size_value_exceptions.pass.cpp:0 SKIPPED
std/containers/sequences/vector/vector.capacity/resize_size_value_exceptions.pass.cpp:1 SKIPPED

# Instantiating istreambuf_iterator requires _Traits to be complete.
# However, when only <iterator> is included, char_traits is merely forward-declared in our implementation.
# The definition of char_traits isn't required to be provided by <iterator>, so this test appears to be bogus.
# error: incomplete type 'std::char_traits<char>' named in nested name specifier
std/iterators/iterator.requirements/iterator.assoc.types/readable.traits/indirectly_readable_traits.compile.pass.cpp FAIL


# *** LIKELY STL BUGS ***
# Not analyzed, likely STL bugs. Various assertions.
std/re/re.alg/re.alg.match/awk.pass.cpp FAIL
std/re/re.alg/re.alg.match/basic.pass.cpp FAIL
std/re/re.alg/re.alg.match/ecma.pass.cpp FAIL
std/re/re.alg/re.alg.match/extended.pass.cpp FAIL
std/re/re.alg/re.alg.search/awk.pass.cpp FAIL
std/re/re.alg/re.alg.search/basic.pass.cpp FAIL
std/re/re.alg/re.alg.search/ecma.pass.cpp FAIL
std/re/re.alg/re.alg.search/extended.pass.cpp FAIL
std/re/re.traits/lookup_collatename.pass.cpp FAIL
std/re/re.traits/transform_primary.pass.cpp FAIL

# Not analyzed, likely STL bugs. Various assertions.
std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp FAIL
std/numerics/complex.number/complex.ops/complex_times_complex.pass.cpp FAIL
std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/acos.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/acosh.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/asin.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/asinh.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/atanh.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/cos.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/cosh.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/log10.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/pow_complex_complex.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/pow_complex_scalar.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/pow_scalar_complex.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/sin.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/sinh.pass.cpp FAIL
std/numerics/complex.number/complex.transcendentals/tanh.pass.cpp FAIL
std/numerics/complex.number/complex.value.ops/norm.pass.cpp FAIL

# Not analyzed, likely STL bugs. Many various assertions.
std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/decimal_point.pass.cpp FAIL
std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/thousands_sep.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_one.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday.pass.cpp FAIL
std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf16_in.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf16_length.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf16_max_length.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf16_out.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf16.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8_in.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8_length.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8_max_length.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8_out.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8_utf16_in.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8_utf16_length.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8_utf16_max_length.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8_utf16_out.pass.cpp FAIL
std/localization/locale.stdcvt/codecvt_utf8.pass.cpp FAIL
std/localization/locales/locale.convenience/conversions/conversions.buffer/overflow.pass.cpp FAIL
std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp FAIL
std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.pass.cpp FAIL
std/localization/locales/locale.convenience/conversions/conversions.string/ctor_err_string.pass.cpp FAIL

# Not analyzed, likely STL bugs. Various assertions.
std/input.output/iostream.format/ext.manip/get_money.pass.cpp FAIL
std/input.output/iostream.format/ext.manip/put_money.pass.cpp FAIL
std/input.output/iostreams.base/ios/basic.ios.members/copyfmt.pass.cpp FAIL

# Likely STL bug: Looks like we shouldn't be using assignment.
std/thread/futures/futures.promise/set_rvalue.pass.cpp FAIL

# Possible STL bugs in pair and tuple.
std/utilities/tuple/tuple.tuple/tuple.cnstr/PR23256_constrain_UTypes_ctor.pass.cpp:0 FAIL
std/utilities/tuple/tuple.tuple/tuple.cnstr/PR23256_constrain_UTypes_ctor.pass.cpp:1 FAIL
std/utilities/tuple/tuple.tuple/tuple.cnstr/PR31384.pass.cpp:0 FAIL
std/utilities/tuple/tuple.tuple/tuple.cnstr/PR31384.pass.cpp:1 FAIL

# Bugs/questionable choices in codecvt<char(16|32)_t, char, mbstate_t>, which we probably will not fix since
# (1) they are deprecated, and (2) we don't want to break existing users.
std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_max_length.pass.cpp FAIL
std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_unshift.pass.cpp FAIL
std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_encoding.pass.cpp FAIL
std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_max_length.pass.cpp FAIL

# Implementation divergence, see LWG-3856 "Unclear which conversion specifiers are valid for each chrono type".
# For %d, %e, and %j with month_day_last, libc++ thinks they're invalid, while MSVC's STL thinks they're valid.
std/time/time.syn/formatter.month_day_last.pass.cpp FAIL

# Our monotonic_buffer_resource takes "user" space for metadata, which it probably should not do.
std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_with_initial_size.pass.cpp FAIL

# Likely STL bug in layout_stride::mapping::is_exhaustive().
std/containers/views/mdspan/layout_stride/is_exhaustive_corner_case.pass.cpp FAIL


# *** NOT YET ANALYZED ***
# Not analyzed. Clang instantiates BoomOnAnything during template argument substitution.
std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp:2 FAIL

# Not analyzed. MSVC emits "warning C4310: cast truncates constant value" for char(0xc3).
std/input.output/filesystems/class.path/path.member/path.charconv.pass.cpp:0 FAIL
std/input.output/filesystems/class.path/path.member/path.charconv.pass.cpp:1 FAIL

# Not analyzed. Clang is attempting to default construct cpp17_input_iterator<int *>.
std/iterators/predef.iterators/move.iterators/move.iterator/iterator_concept_conformance.compile.pass.cpp:2 FAIL

# Not analyzed. Asserting about alloc_count.
std/thread/futures/futures.promise/alloc_ctor.pass.cpp FAIL
std/thread/futures/futures.promise/move_assign.pass.cpp FAIL
std/thread/futures/futures.promise/move_ctor.pass.cpp FAIL
std/thread/futures/futures.promise/swap.pass.cpp FAIL
std/thread/futures/futures.shared_future/dtor.pass.cpp FAIL
std/thread/futures/futures.unique_future/dtor.pass.cpp FAIL

# Not analyzed. libc++ seems to have a different opinion about what tuple_size<const void> should do.
std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp FAIL
std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_structured_bindings.pass.cpp FAIL

# Not analyzed. Expects implicit deduction guides to SFINAE away when allocators are passed where comparators should be.
std/containers/associative/map/map.cons/deduct.pass.cpp FAIL
std/containers/associative/multimap/multimap.cons/deduct.pass.cpp FAIL
std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.pass.cpp FAIL
std/containers/unord/unord.map/unord.map.cnstr/deduct.pass.cpp FAIL
std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.pass.cpp FAIL

# Not analyzed. Possibly testing nonstandard deduction guides involving pair<const K, V> and pair<const K, const V>.
std/containers/associative/map/map.cons/deduct_const.pass.cpp FAIL
std/containers/associative/multimap/multimap.cons/deduct_const.pass.cpp FAIL
std/containers/unord/unord.map/unord.map.cnstr/deduct_const.pass.cpp FAIL
std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct_const.pass.cpp FAIL

# Not analyzed. Possible MSVC compiler bug, as Clang is unaffected.
std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp:0 FAIL
std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp:1 FAIL

# Not analyzed. Frequent timeouts
std/containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp SKIPPED

# Not analyzed. Failing after LLVM-D75622.
std/re/re.const/re.matchflag/match_prev_avail.pass.cpp FAIL

# Not analyzed. Failing for "[a[.ch.]z]".
std/re/re.alg/re.alg.match/awk.locale.pass.cpp FAIL
std/re/re.alg/re.alg.match/basic.locale.pass.cpp FAIL
std/re/re.alg/re.alg.match/ecma.locale.pass.cpp FAIL
std/re/re.alg/re.alg.match/extended.locale.pass.cpp FAIL
std/re/re.alg/re.alg.search/awk.locale.pass.cpp FAIL
std/re/re.alg/re.alg.search/basic.locale.pass.cpp FAIL
std/re/re.alg/re.alg.search/ecma.locale.pass.cpp FAIL
std/re/re.alg/re.alg.search/extended.locale.pass.cpp FAIL

# Not analyzed. Seems to force a sign conversion error?
std/iterators/iterator.primitives/iterator.operations/advance.pass.cpp SKIPPED

# Not analyzed. Maybe Clang over-eagerly instantiating noexcept-specifier?
std/utilities/memory/unique.ptr/iterator_concept_conformance.compile.pass.cpp:2 SKIPPED

# Not analyzed. Runs forever
std/numerics/rand/rand.dist/rand.dist.pois/rand.dist.pois.poisson/eval.pass.cpp SKIPPED

# Not analyzed. This test seemingly fails for ARM/ARM64 platforms because MSVC STL considers `tinyness_before` to be
# always `false` even for ARM, but libc++ considers it to be `true` for floating-point types on ARM.
# I don't know which is right.
std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp SKIPPED

# Not analyzed. the test fails on x64 but passes on x86
# warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
# warning C4244: 'initializing': conversion from 'unsigned __int64' to 'int', possible loss of data
std/containers/associative/map/map.access/iterator.pass.cpp:0 SKIPPED
std/containers/associative/map/map.access/iterator.pass.cpp:1 SKIPPED

# Not analyzed. the test fails on x64 but passes on x86
# warning C4244: 'return': conversion from '__int64' to 'CustomIt::difference_type', possible loss of data
std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.-/sentinel.pass.cpp:0 SKIPPED
std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.-/sentinel.pass.cpp:1 SKIPPED

# Not analyzed. the test fails on x64 but passes on x86
# warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
std/algorithms/alg.modifying.operations/alg.random.shuffle/ranges_shuffle.pass.cpp:0 SKIPPED
std/algorithms/alg.modifying.operations/alg.random.shuffle/ranges_shuffle.pass.cpp:1 SKIPPED

# Not analyzed. the test fails on x86 but passes on x64
# warning C4389: '==': signed/unsigned mismatch
std/algorithms/alg.modifying.operations/alg.unique/ranges_unique.pass.cpp:0 SKIPPED
std/algorithms/alg.modifying.operations/alg.unique/ranges_unique.pass.cpp:1 SKIPPED

# Not analyzed. These tests are marked `XFAIL: msvc`, citing DevCom-1660844.
std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.hex.pass.cpp SKIPPED
std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.hex.pass.cpp SKIPPED

# Not analyzed. Failing assert(swaps <= expected).
std/algorithms/alg.modifying.operations/alg.rotate/ranges_rotate.pass.cpp FAIL

# Not analyzed. Assertion failed: numberOfComp <= static_cast<int>(in.size() - 1)
std/algorithms/alg.sorting/alg.merge/ranges_inplace_merge.pass.cpp FAIL

# Not analyzed. error C2397: conversion from 'const _In' to '_In' requires a narrowing conversion
std/algorithms/algorithms.results/in_found_result.pass.cpp:0 FAIL
std/algorithms/algorithms.results/in_found_result.pass.cpp:1 FAIL

# Not analyzed. error C2397: conversion from 'const _Ty' to '_Ty' requires a narrowing conversion
std/algorithms/algorithms.results/min_max_result.pass.cpp:0 FAIL
std/algorithms/algorithms.results/min_max_result.pass.cpp:1 FAIL

# Not analyzed.
std/algorithms/robust_against_proxy_iterators_lifetime_bugs.pass.cpp FAIL

# Not analyzed. Looks like a test bug, assuming that hash<vector<bool>> is constexpr.
std/containers/sequences/vector.bool/enabled_hash.pass.cpp FAIL
std/containers/sequences/vector.bool/vector_bool.pass.cpp FAIL

# Not analyzed. Inspecting shift operators for quoted().
std/input.output/iostream.format/quoted.manip/quoted_traits.compile.pass.cpp FAIL

# Not analyzed.
# MSVC warning C5046: 'test_undefined_internal::A::operator *': Symbol involving type with internal linkage not defined
# Clang error: function 'test_undefined_internal()::A::operator*' has internal linkage but is not defined [-Werror,-Wundefined-internal]
std/iterators/iterator.requirements/iterator.cust/iterator.cust.move/iter_rvalue_reference_t.compile.pass.cpp FAIL
std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_spaceship.pass.cpp FAIL

# Not analyzed. Failing assert(arr[0].moves() == 1 && arr[1].moves() == 3).
std/iterators/iterator.requirements/iterator.cust/iterator.cust.swap/iter_swap.pass.cpp FAIL

# Not analyzed. error C2678: binary '>': no operator found which takes a left-hand operand of type 'const std::move_iterator<CustomIt>' (or there is no acceptable conversion)
std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_gt.pass.cpp FAIL
std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_gte.pass.cpp FAIL
std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_lte.pass.cpp FAIL

# Not analyzed. error C2280: 'std::ranges::lazy_split_view<InputView,ForwardTinyView>::lazy_split_view(const std::ranges::lazy_split_view<InputView,ForwardTinyView> &)': attempting to reference a deleted function
std/ranges/range.adaptors/range.lazy.split/ctor.copy_move.pass.cpp FAIL
std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/iter_swap.pass.cpp FAIL

# Not analyzed.
# MSVC error C2131: expression did not evaluate to a constant
# MSVC note: failure was caused by a read of an uninitialized symbol
# Clang error: non-type template argument is not a constant expression
std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_const_move.pass.cpp FAIL

# Not analyzed, possible path length issue. With a repo root of D:\GitHub\STL (13 characters), fails with:
# "error RC2136 : missing '=' in EXSTYLE=<flags>" followed by "LINK : fatal error LNK1327: failure during running rc.exe"
std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until_deadlock_bug.pass.cpp SKIPPED

# Not analyzed, possible bug in uses_allocator_construction_args
std/utilities/utility/mem.res/mem.poly.allocator.class/mem.poly.allocator.mem/construct_piecewise_pair_evil.pass.cpp FAIL

# Not analyzed, failing due to constexpr step limits.
std/algorithms/alg.nonmodifying/alg.contains/ranges.contains_subrange.pass.cpp:2 FAIL
std/algorithms/alg.nonmodifying/alg.count/count.pass.cpp FAIL
std/algorithms/alg.nonmodifying/alg.count/ranges.count.pass.cpp FAIL
std/containers/sequences/vector.bool/append_range.pass.cpp FAIL
std/containers/sequences/vector.bool/assign_range.pass.cpp FAIL
std/containers/sequences/vector.bool/flip.pass.cpp FAIL
std/containers/sequences/vector.bool/insert_range.pass.cpp FAIL
std/containers/sequences/vector/vector.modifiers/destroy_elements.pass.cpp FAIL
std/containers/sequences/vector/vector.modifiers/insert_range.pass.cpp FAIL
std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp FAIL
std/utilities/charconv/charconv.to.chars/integral.pass.cpp FAIL

# Not analyzed, failing due to constexpr step limits. SKIPPED because they occasionally pass in certain configurations.
std/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp SKIPPED
std/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp SKIPPED
std/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp SKIPPED
std/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp SKIPPED

# Not analyzed. In debug mode, looks like a proxy object unexpectedly exhausts an 80-byte buffer.
# In release mode, fails in a later assertion that appears to be testing libc++-specific behavior.
std/input.output/string.streams/istringstream/istringstream.members/str.allocator_propagation.pass.cpp FAIL
std/input.output/string.streams/ostringstream/ostringstream.members/str.allocator_propagation.pass.cpp FAIL
std/input.output/string.streams/stringstream/stringstream.members/str.allocator_propagation.pass.cpp FAIL

# These formatter tests need to create basic_format_contexts, so test_format_context.h
# says "Please create a vendor specific version of the test functions".
# If we do, some of these tests should be able to work.
std/containers/container.adaptors/container.adaptors.format/format.pass.cpp FAIL
std/containers/sequences/vector.bool/vector.bool.fmt/format.pass.cpp FAIL
std/thread/thread.threads/thread.thread.class/thread.thread.id/format.pass.cpp FAIL
std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp FAIL
std/utilities/format/format.formatter/format.context/format.context/arg.pass.cpp FAIL
std/utilities/format/format.formatter/format.context/format.context/ctor.pass.cpp FAIL
std/utilities/format/format.formatter/format.context/format.context/locale.pass.cpp FAIL
std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.bool.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.c_string.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.char.fsigned-char.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.char.funsigned-char.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.char.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.handle.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.pointer.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.signed_integral.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.string.pass.cpp FAIL
std/utilities/format/format.formatter/format.formatter.spec/formatter.unsigned_integral.pass.cpp FAIL
std/utilities/format/format.range/format.range.formatter/format.pass.cpp FAIL
std/utilities/format/format.range/format.range.formatter/set_brackets.pass.cpp FAIL
std/utilities/format/format.range/format.range.formatter/set_separator.pass.cpp FAIL
std/utilities/format/format.range/format.range.fmtdef/format.pass.cpp FAIL
std/utilities/format/format.range/format.range.fmtdef/set_brackets.pass.cpp FAIL
std/utilities/format/format.range/format.range.fmtdef/set_separator.pass.cpp FAIL
std/utilities/format/format.range/format.range.fmtmap/format.pass.cpp FAIL
std/utilities/format/format.range/format.range.fmtset/format.pass.cpp FAIL
std/utilities/format/format.range/format.range.fmtstr/format.pass.cpp FAIL
std/utilities/format/format.tuple/format.pass.cpp FAIL

# Not analyzed. Static analysis thinks that array indexing is out of bounds because it can't prove otherwise.
# warning C28020: The expression '_Param_(1)<1' is not true at this call.
# Note: The :1 (ASan) configuration doesn't run static analysis.
std/containers/views/mdspan/extents/ctor_default.pass.cpp:0 FAIL
std/containers/views/mdspan/extents/ctor_from_array.pass.cpp:0 FAIL
std/containers/views/mdspan/extents/ctor_from_integral.pass.cpp:0 FAIL
std/containers/views/mdspan/extents/ctor_from_span.pass.cpp:0 FAIL
std/containers/views/mdspan/layout_stride/comparison.pass.cpp:0 FAIL
std/containers/views/mdspan/layout_stride/ctor.strided_mapping.pass.cpp:0 FAIL
std/containers/views/mdspan/mdspan/conversion.pass.cpp:0 FAIL
std/containers/views/mdspan/mdspan/ctor.dh_array.pass.cpp:0 FAIL
std/containers/views/mdspan/mdspan/ctor.dh_span.pass.cpp:0 FAIL

# Not analyzed. Apparent false positives from static analysis where it thinks `new (std::nothrow)` could return null, despite an assert().
# warning C28182: Dereferencing NULL pointer.
# Note: The :1 (ASan) configuration doesn't run static analysis.
std/language.support/support.dynamic/new.delete/new.delete.array/new.size_align_nothrow.pass.cpp:0 FAIL
std/language.support/support.dynamic/new.delete/new.delete.array/new.size_nothrow.pass.cpp:0 FAIL

# Not analyzed, unexpected separators. Assertion failed: stream_fr_FR_locale<CharT>(-1'000'000s) == SV("-1 000 000s")
std/time/time.duration/time.duration.nonmember/ostream.pass.cpp FAIL

# Not analyzed. Assertion failed: loc.name() == "*"
std/localization/locales/locale/locale.cons/name_construction.pass.cpp FAIL

# Not analyzed. Blocked by our ctype_base deriving from locale::facet.
std/localization/locale.categories/category.numeric/locale.num.get/user_defined_char_type.pass.cpp FAIL

# Not analyzed. Assertion failed: res == cvt.ok
std/localization/codecvt_unicode.pass.cpp FAIL

# Not analyzed. Various runtime behavior differences.
std/time/time.syn/formatter.duration.pass.cpp:2 FAIL
std/time/time.syn/formatter.file_time.pass.cpp:2 FAIL
std/time/time.syn/formatter.hh_mm_ss.pass.cpp:2 FAIL
std/time/time.syn/formatter.local_time.pass.cpp:2 FAIL
std/time/time.syn/formatter.sys_time.pass.cpp:2 FAIL
std/time/time.syn/formatter.zoned_time.pass.cpp:2 FAIL

# Not analyzed. constexpr evaluation fails with note: failure was caused by out of range index MEOW; allowed range is 0 <= index < 2
std/ranges/range.adaptors/range.join/adaptor.pass.cpp:0 FAIL
std/ranges/range.adaptors/range.join/adaptor.pass.cpp:1 FAIL
std/ranges/range.adaptors/range.join/range.join.iterator/increment.pass.cpp:0 FAIL
std/ranges/range.adaptors/range.join/range.join.iterator/increment.pass.cpp:1 FAIL

# Not analyzed. constexpr evaluation fails in assert(*--iter == i).
std/ranges/range.adaptors/range.join/range.join.iterator/decrement.pass.cpp:0 FAIL
std/ranges/range.adaptors/range.join/range.join.iterator/decrement.pass.cpp:1 FAIL

# Not analyzed. constexpr evaluation fails in assert(*iter++ == i).
std/ranges/range.adaptors/range.join/range.join.iterator/star.pass.cpp:0 FAIL
std/ranges/range.adaptors/range.join/range.join.iterator/star.pass.cpp:1 FAIL

# Not analyzed. constexpr evaluation fails in ranges::swap.
std/ranges/range.adaptors/range.join/range.join.iterator/iter.swap.pass.cpp:0 FAIL
std/ranges/range.adaptors/range.join/range.join.iterator/iter.swap.pass.cpp:1 FAIL

# Not analyzed. Likely MSVC constexpr bug with negative chars passed to __builtin_memcmp.
std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/compare.pass.cpp:0 FAIL
std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/compare.pass.cpp:1 FAIL

# Not analyzed. Likely MSVC constexpr bug, "note: failure was caused by a read of a variable outside its lifetime"
std/containers/views/mdspan/mdspan/index_operator.pass.cpp:0 FAIL
std/containers/views/mdspan/mdspan/index_operator.pass.cpp:1 FAIL

# Not analyzed. SKIPPED because this is x86-specific, fatal error C1060: compiler is out of heap space
std/algorithms/alg.modifying.operations/alg.transform/ranges.transform.binary.iterator.pass.cpp:0 SKIPPED
std/algorithms/alg.modifying.operations/alg.transform/ranges.transform.binary.iterator.pass.cpp:1 SKIPPED
std/algorithms/alg.modifying.operations/alg.transform/ranges.transform.binary.range.pass.cpp:0 SKIPPED
std/algorithms/alg.modifying.operations/alg.transform/ranges.transform.binary.range.pass.cpp:1 SKIPPED
std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp:0 SKIPPED
std/algorithms/alg.nonmodifying/alg.ends_with/ranges.ends_with.pass.cpp:1 SKIPPED
std/algorithms/alg.sorting/alg.lex.comparison/ranges.lexicographical_compare.pass.cpp:0 SKIPPED
std/algorithms/alg.sorting/alg.lex.comparison/ranges.lexicographical_compare.pass.cpp:1 SKIPPED
std/algorithms/alg.sorting/alg.merge/ranges_merge.pass.cpp:0 SKIPPED
std/algorithms/alg.sorting/alg.merge/ranges_merge.pass.cpp:1 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/includes/ranges_includes.pass.cpp:0 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/includes/ranges_includes.pass.cpp:1 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/set.difference/ranges_set_difference.pass.cpp:0 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/set.difference/ranges_set_difference.pass.cpp:1 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/set.intersection/ranges_set_intersection.pass.cpp:0 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/set.intersection/ranges_set_intersection.pass.cpp:1 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/ranges_set_symmetric_difference.pass.cpp:0 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/ranges_set_symmetric_difference.pass.cpp:1 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/set.union/ranges_set_union.pass.cpp:0 SKIPPED
std/algorithms/alg.sorting/alg.set.operations/set.union/ranges_set_union.pass.cpp:1 SKIPPED

# Not analyzed. Clang emits a -Wundefined-inline warning.
std/utilities/variant/variant.relops/three_way.pass.cpp:2 FAIL

# Not analyzed, affected by various issues. It may be possible to enable most of the filesystem tests.
# These tests are SKIPPED due to unknown differences between local test runs and Azure Pipelines.
std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy_assign.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.cons/move_assign.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.cons/move.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.obs/status.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_entry/directory_entry.obs/symlink_status.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy_assign.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_iterator/directory_iterator.members/increment.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move_assign.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move.pass.cpp SKIPPED
std/input.output/filesystems/class.directory_iterator/directory_iterator.nonmembers/begin_end.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.itr/iterator.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.append.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.assign/move.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.decompose/path.decompose.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.gen/lexically_relative_and_proximate.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp SKIPPED
std/input.output/filesystems/class.path/path.nonmember/path.io.unicode_bug.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy_assign.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/depth.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/disable_recursion_pending.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move_assign.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/pop.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/recursion_pending.pass.cpp SKIPPED
std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.nonmembers/begin_end.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.absolute/absolute.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.canonical/canonical.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file_procfs.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.copy_symlink/copy_symlink.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.copy/copy.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.create_directory_symlink/create_directory_symlink.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory_with_attributes.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.create_hard_link/create_hard_link.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.create_symlink/create_symlink.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.current_path/current_path.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.equivalent/equivalent.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.file_size/file_size.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.hard_lk_ct/hard_link_count.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.permissions/permissions.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.proximate/proximate.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.read_symlink/read_symlink.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.relative/relative.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/toctou.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.rename/rename.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.resize_file/resize_file.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.space/space.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp SKIPPED
std/input.output/filesystems/fs.op.funcs/fs.op.weakly_canonical/weakly_canonical.pass.cpp SKIPPED

# Not analyzed.
# MSVC error C2719: '_Fun_': formal parameter with requested alignment of 128 won't be aligned
# Clang error: unknown attribute 'no_unique_address' ignored [-Werror,-Wunknown-attributes]
std/ranges/ranges_robust_against_no_unique_address.pass.cpp FAIL

# Not analyzed. test_chrono_leap_second.h wants us to provide a vendor-specific version of
# test_leap_second_create(), but it's unclear how to adapt their parameters to our implementation.
std/time/time.zone/time.zone.leap/assign.copy.pass.cpp FAIL
std/time/time.zone/time.zone.leap/cons.copy.pass.cpp FAIL
std/time/time.zone/time.zone.leap/members/date.pass.cpp FAIL
std/time/time.zone/time.zone.leap/members/value.pass.cpp FAIL
std/time/time.zone/time.zone.leap/nonmembers/comparison.pass.cpp FAIL

# Not analyzed. Assertion failed: tz->name() == zone
std/time/time.zone/time.zone.db/time.zone.db.access/current_zone.pass.cpp FAIL
std/time/time.zone/time.zone.db/time.zone.db.tzdb/current_zone.pass.cpp FAIL

# Not analyzed. Assertion failed: buffer.pubsetbuf(b, 10) == &buffer
std/input.output/file.streams/fstreams/filebuf.virtuals/setbuf.pass.cpp FAIL

# Not analyzed. constexpr evaluation fails in assert(it.stride_count() == expected_counts.stride_count).
std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/iterator_count_sentinel.pass.cpp FAIL

# Not analyzed. Says "no exception is thrown while an exception of type std::format_error was expected".
std/time/time.syn/formatter.local_info.pass.cpp FAIL

# Not analyzed. <atomic> Assertion failed: atomic_ref underlying object is not aligned as required_alignment
# SKIPPED because failures are sporadic and/or architecture-dependent.
std/atomics/atomics.ref/assign.pass.cpp SKIPPED
std/atomics/atomics.ref/bitwise_and_assign.pass.cpp SKIPPED
std/atomics/atomics.ref/bitwise_or_assign.pass.cpp SKIPPED
std/atomics/atomics.ref/bitwise_xor_assign.pass.cpp SKIPPED
std/atomics/atomics.ref/compare_exchange_strong.pass.cpp SKIPPED
std/atomics/atomics.ref/compare_exchange_weak.pass.cpp SKIPPED
std/atomics/atomics.ref/convert.pass.cpp SKIPPED
std/atomics/atomics.ref/ctor.pass.cpp SKIPPED
std/atomics/atomics.ref/deduction.pass.cpp SKIPPED
std/atomics/atomics.ref/exchange.pass.cpp SKIPPED
std/atomics/atomics.ref/fetch_add.pass.cpp SKIPPED
std/atomics/atomics.ref/fetch_and.pass.cpp SKIPPED
std/atomics/atomics.ref/fetch_or.pass.cpp SKIPPED
std/atomics/atomics.ref/fetch_sub.pass.cpp SKIPPED
std/atomics/atomics.ref/fetch_xor.pass.cpp SKIPPED
std/atomics/atomics.ref/increment_decrement.pass.cpp SKIPPED
std/atomics/atomics.ref/is_always_lock_free.pass.cpp SKIPPED
std/atomics/atomics.ref/load.pass.cpp SKIPPED
std/atomics/atomics.ref/notify_all.pass.cpp SKIPPED
std/atomics/atomics.ref/notify_one.pass.cpp SKIPPED
std/atomics/atomics.ref/operator_minus_equals.pass.cpp SKIPPED
std/atomics/atomics.ref/operator_plus_equals.pass.cpp SKIPPED
std/atomics/atomics.ref/store.pass.cpp SKIPPED
std/atomics/atomics.ref/wait.pass.cpp SKIPPED

# Not analyzed. Attempting to delete `nullptr_t`.
std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter.pass.cpp FAIL

# Not analyzed. Various assertions.
std/time/time.zone/time.zone.timezone/time.zone.members/get_info.local_time.pass.cpp FAIL
std/time/time.zone/time.zone.timezone/time.zone.members/to_sys_choose.pass.cpp FAIL
std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.members/get_info.pass.cpp FAIL
std/time/time.zone/time.zone.zonedtime/time.zone.zonedtime.nonmembers/ostream.pass.cpp FAIL

# Not analyzed. static_assert(testComplexity()) is failing.
std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_complexity.pass.cpp FAIL

# Not analyzed.
# MSVC truncation warnings.
# Clang assertion: std::hermite(n, +inf) == inf
std/numerics/c.math/hermite.pass.cpp FAIL

# Not analyzed. Test coverage for LLVM-104496 uses span<Incomplete>.
std/containers/views/views.span/span.cons/copy.pass.cpp FAIL

# Not analyzed. These tests disable or limit allocations, which interferes with our proxy objects.
std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort.pass.cpp FAIL
std/containers/sequences/vector/vector.capacity/shrink_to_fit_exceptions.pass.cpp FAIL

# Not analyzed. Our stdalign.h doesn't define __alignas_is_defined in C++ mode.
std/depr/depr.c.headers/stdalign_h.compile.pass.cpp:0 FAIL
std/depr/depr.c.headers/stdalign_h.compile.pass.cpp:1 FAIL

# Not analyzed. Probably an MSVC compiler bug, as it rejects `n | negate | negate` while Clang accepts.
std/ranges/range.adaptors/range.adaptor.object/range_adaptor_closure.pass.cpp:0 FAIL
std/ranges/range.adaptors/range.adaptor.object/range_adaptor_closure.pass.cpp:1 FAIL


# *** XFAILS WHICH PASS ***
# These tests contain `// XFAIL: msvc` comments, which accurately describe runtime failures for x86 and x64.
# However, for ARM and ARM64, they successfully compile, then we don't run them.
# Our test harness properly handles the ambiguity of whether a FAIL line in this file means "fails to compile"
# or "fails to run", combined with the `build_only` setting that we use for ARM and ARM64.
# The upstream logic that parses `// XFAIL: msvc` bypasses this, so it's interpreted as "this always fails",
# so compilation success for ARM and ARM64 is reported as unexpectedly passing.
# The test harness should be fixed to treat `// XFAIL: msvc` the same way that FAIL lines here are treated.
# In the meantime, because this is platform-dependent and we don't have a way to express that in this file,
# we need to mark these tests as SKIPPED.
# Finally, note that only :0 (MSVC) and :2 (Clang) configurations are mentioned here,
# because we don't run :1 (ASan) for ARM and ARM64.
std/time/time.cal/time.cal.ymd/time.cal.ymd.nonmembers/ostream.pass.cpp:0 SKIPPED
std/time/time.cal/time.cal.ymd/time.cal.ymd.nonmembers/ostream.pass.cpp:2 SKIPPED
std/time/time.clock/time.clock.system/sys_date.ostream.pass.cpp:0 SKIPPED
std/time/time.clock/time.clock.system/sys_date.ostream.pass.cpp:2 SKIPPED
std/time/time.syn/formatter.day.pass.cpp:0 SKIPPED
std/time/time.syn/formatter.day.pass.cpp:2 SKIPPED
std/time/time.syn/formatter.month_day.pass.cpp:0 SKIPPED
std/time/time.syn/formatter.month_day.pass.cpp:2 SKIPPED
std/time/time.syn/formatter.weekday_index.pass.cpp:0 SKIPPED
std/time/time.syn/formatter.weekday_index.pass.cpp:2 SKIPPED
std/time/time.syn/formatter.weekday_last.pass.cpp:0 SKIPPED
std/time/time.syn/formatter.weekday_last.pass.cpp:2 SKIPPED
std/time/time.syn/formatter.weekday.pass.cpp:0 SKIPPED
std/time/time.syn/formatter.weekday.pass.cpp:2 SKIPPED
std/time/time.syn/formatter.year_month_day.pass.cpp:2 SKIPPED
std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp:0 SKIPPED
std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp:2 SKIPPED
std/language.support/support.exception/propagation/current_exception.pass.cpp:0 SKIPPED
std/language.support/support.exception/propagation/current_exception.pass.cpp:2 SKIPPED


# *** MSVC-INTERNAL TEST HARNESS ISSUES (note: configuration :9 restricts these skips to be MSVC-internal) ***

# These tests need ADDITIONAL_COMPILE_FLAGS(cl-style-warnings) and/or ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings)
# to silence warnings, but the MSVC-internal test harness doesn't yet parse ADDITIONAL_COMPILE_FLAGS.
std/algorithms/alg.modifying.operations/alg.replace/ranges.replace.pass.cpp:9 SKIPPED
std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp:9 SKIPPED
std/algorithms/alg.nonmodifying/alg.find.last/ranges.find_last.pass.cpp:9 SKIPPED
std/algorithms/alg.nonmodifying/alg.find/find.pass.cpp:9 SKIPPED
std/algorithms/alg.nonmodifying/alg.find/ranges.find.pass.cpp:9 SKIPPED
std/algorithms/alg.nonmodifying/alg.fold/left_folds.pass.cpp:9 SKIPPED
std/containers/associative/map/map.modifiers/insert_range.pass.cpp:9 SKIPPED
std/containers/associative/multimap/multimap.modifiers/insert_range.pass.cpp:9 SKIPPED
std/containers/associative/multiset/insert_range.pass.cpp:9 SKIPPED
std/containers/associative/set/insert_range.pass.cpp:9 SKIPPED
std/containers/unord/unord.map/unord.map.modifiers/insert_range.pass.cpp:9 SKIPPED
std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_range.pass.cpp:9 SKIPPED
std/containers/unord/unord.multiset/insert_range.pass.cpp:9 SKIPPED
std/containers/unord/unord.set/insert_range.pass.cpp:9 SKIPPED
std/depr/depr.c.headers/setjmp_h.compile.pass.cpp:9 SKIPPED
std/input.output/file.streams/fstreams/ifstream.members/buffered_reads.pass.cpp:9 SKIPPED
std/input.output/file.streams/fstreams/ofstream.members/buffered_writes.pass.cpp:9 SKIPPED
std/language.support/support.runtime/csetjmp.pass.cpp:9 SKIPPED
std/numerics/numeric.ops/numeric.ops.midpoint/midpoint.pointer.pass.cpp:9 SKIPPED
std/ranges/range.adaptors/range.lazy.split/constraints.compile.pass.cpp:9 SKIPPED
std/ranges/range.utility/range.utility.conv/to.pass.cpp:9 SKIPPED
std/thread/thread.jthread/assign.move.pass.cpp:9 SKIPPED
std/utilities/meta/meta.unary/dependent_return_type.compile.pass.cpp:9 SKIPPED

# This test is marked as `XFAIL: msvc`, but the MSVC-internal test harness doesn't yet parse XFAIL.
std/utilities/function.objects/func.wrap/func.wrap.func/noncopyable_return_type.pass.cpp:9 SKIPPED

# Similarly, this test is marked as `XFAIL: msvc`
# MSVC doesn't properly support [[no_unique_address]]
std/algorithms/algorithms.results/no_unique_address.compile.pass.cpp:9 SKIPPED

# Similarly, this test is marked as `XFAIL: msvc, target={{.+}}-windows-gnu`
# because it calls an `fmemopen` function that doesn't exist on Windows.
std/input.output/iostream.format/print.fun/no_file_description.pass.cpp:9 SKIPPED

# This test is marked as `REQUIRES: large_tests`. The GitHub test harness doesn't define that feature, so it doesn't
# run this test. However, the MSVC-internal test harness doesn't yet parse REQUIRES, and simply runs everything.
std/input.output/string.streams/stringstream/stringstream.members/gcount.pass.cpp:9 SKIPPED

# Similarly, this test is marked as `REQUIRES: 32-bit-pointer`.
std/iterators/iterator.container/ssize.LWG3207.compile.pass.cpp:9 SKIPPED

# This test is marked as `REQUIRES: has-unix-headers, libcpp-has-abi-bounded-iterators-in-vector`.
# Listing these on separate lines would allow magic_comments.txt to recognize it.
std/containers/sequences/vector/vector.modifiers/assert.push_back.invalidation.pass.cpp:9 SKIPPED

# This test is marked as `REQUIRES: has-unix-headers, libcpp-has-abi-bounded-iterators-in-std-array`.
# Listing these on separate lines would allow magic_comments.txt to recognize it.
std/containers/sequences/array/assert.iterators.pass.cpp:9 SKIPPED

# These tests emit C5321, which warns when the resolution to CWG-1656 affects a u8 string literal.
# The conformant behavior is opt-in because it can silently change behavior.
# warning C5321: nonstandard extension used: encoding '\x80' as a multi-byte utf-8 character. Use \u instead
# for cross platform compatibility or '/Zc:u8EscapeEncoding' to disable the extension.
std/utilities/format/format.functions/escaped_output.unicode.pass.cpp:9 SKIPPED
std/utilities/format/format.functions/fill.unicode.pass.cpp:9 SKIPPED
