Skip to content

[libc++] Have basic_string call basic_string_view's assume-valid constructor #105441

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 369 commits into from

Conversation

cjdb
Copy link
Contributor

@cjdb cjdb commented Aug 20, 2024

basic_string frequently calls basic_string_view(data(), size()), which accounts for ~15% of the observed overhead when hardening is enabled. This commit removes unnecessary checks when basic_string is known to already have valid data, by bypassing the public constructor, so that we eliminate that overhead.

@cjdb cjdb requested a review from a team as a code owner August 20, 2024 22:04
@llvmbot llvmbot added the libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. label Aug 20, 2024
@llvmbot
Copy link
Member

llvmbot commented Aug 20, 2024

@llvm/pr-subscribers-libcxx

Author: Christopher Di Bella (cjdb)

Changes

basic_string frequently calls basic_string_view(data(), size()), which accounts for ~15% of the observed overhead when hardening is enabled. This commit removes unnecessary checks when basic_string is known to already have valid data, by bypassing the public constructor, so that we eliminate that overhead.


Full diff: https://github.com/llvm/llvm-project/pull/105441.diff

2 Files Affected:

  • (modified) libcxx/include/string (+6-6)
  • (modified) libcxx/include/string_view (+3)
diff --git a/libcxx/include/string b/libcxx/include/string
index 6e93a6230cc2c0..cdc1afedbdf52f 100644
--- a/libcxx/include/string
+++ b/libcxx/include/string
@@ -1213,7 +1213,7 @@ public:
   }
 
   _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 operator __self_view() const _NOEXCEPT {
-    return __self_view(data(), size());
+    return __self_view(typename __self_view::__assume_valid(), data(), size());
   }
 
   _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_STRING_INTERNAL_MEMORY_ACCESS basic_string&
@@ -1822,7 +1822,7 @@ public:
 
 #if _LIBCPP_STD_VER >= 20
   constexpr _LIBCPP_HIDE_FROM_ABI bool starts_with(__self_view __sv) const noexcept {
-    return __self_view(data(), size()).starts_with(__sv);
+    return __self_view(typename __self_view::__assume_valid(), data(), size()).starts_with(__sv);
   }
 
   constexpr _LIBCPP_HIDE_FROM_ABI bool starts_with(value_type __c) const noexcept {
@@ -1834,7 +1834,7 @@ public:
   }
 
   constexpr _LIBCPP_HIDE_FROM_ABI bool ends_with(__self_view __sv) const noexcept {
-    return __self_view(data(), size()).ends_with(__sv);
+    return __self_view(typename __self_view::__assume_valid(), data(), size()).ends_with(__sv);
   }
 
   constexpr _LIBCPP_HIDE_FROM_ABI bool ends_with(value_type __c) const noexcept {
@@ -1848,15 +1848,15 @@ public:
 
 #if _LIBCPP_STD_VER >= 23
   constexpr _LIBCPP_HIDE_FROM_ABI bool contains(__self_view __sv) const noexcept {
-    return __self_view(data(), size()).contains(__sv);
+    return __self_view(typename __self_view::__assume_valid(), data(), size()).contains(__sv);
   }
 
   constexpr _LIBCPP_HIDE_FROM_ABI bool contains(value_type __c) const noexcept {
-    return __self_view(data(), size()).contains(__c);
+    return __self_view(typename __self_view::__assume_valid(), data(), size()).contains(__c);
   }
 
   constexpr _LIBCPP_HIDE_FROM_ABI bool contains(const value_type* __s) const {
-    return __self_view(data(), size()).contains(__s);
+    return __self_view(typename __self_view::__assume_valid(), data(), size()).contains(__s);
   }
 #endif
 
diff --git a/libcxx/include/string_view b/libcxx/include/string_view
index 2a03ee99e9ab52..c468dc6fc0ab7c 100644
--- a/libcxx/include/string_view
+++ b/libcxx/include/string_view
@@ -689,6 +689,9 @@ private:
 
   const value_type* __data_;
   size_type __size_;
+
+  template<class, class, class>
+  friend class basic_string;
 };
 _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(basic_string_view);
 

Copy link

github-actions bot commented Aug 20, 2024

⚠️ C/C++ code formatter, clang-format found issues in your code. ⚠️

You can test this locally with the following command:
git-clang-format --diff 5e6a1987a5d4574d3c3811f878ddbbbf7c35fa01 b625e4c2d39d4cab8b2b59478a909d152cae5aba --extensions ,cpp,cppm,h,inc,c -- clang/lib/AST/ByteCode/FunctionPointer.cpp clang/lib/Headers/avx10_2_512convertintrin.h clang/lib/Headers/avx10_2convertintrin.h clang/test/CodeGen/X86/avx10_2_512convert-builtins.c clang/test/CodeGen/X86/avx10_2convert-builtins.c clang/test/CodeGen/bpf-attr-bpf-fastcall-1.c clang/test/CodeGen/ffp-contract-fast-honor-pramga-option.cpp clang/test/CodeGen/ffp-contract-fhp-pragma-override.cpp clang/test/CodeGen/rtsan_attribute_inserted.c clang/test/CodeGen/rtsan_entry_exit_insertion.c clang/test/CodeGen/rtsan_no_attribute_sanitizer_disabled.c clang/test/Driver/mmapsyms.c clang/test/Driver/sparc-fix.c clang/test/Interpreter/assigment-with-implicit-ctor.cpp clang/test/Interpreter/preprocessor.cpp clang/test/Misc/cc1as-mmapsyms.c clang/test/Modules/warn-duplicated-decls-in-module-units.cppm clang/test/Parser/friend-concept.cpp clang/test/Parser/function-parameter-limit.cpp clang/test/Sema/bpf-attr-bpf-fastcall.c clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp flang/include/flang/Optimizer/OpenMP/Passes.h flang/lib/Optimizer/Transforms/CompilerGeneratedNames.cpp libc/hdr/types/locale_t.h libc/include/llvm-libc-macros/locale-macros.h libc/include/llvm-libc-types/locale_t.h libc/include/llvm-libc-types/struct_lconv.h libc/src/ctype/isalnum_l.cpp libc/src/ctype/isalnum_l.h libc/src/ctype/isalpha_l.cpp libc/src/ctype/isalpha_l.h libc/src/ctype/isblank_l.cpp libc/src/ctype/isblank_l.h libc/src/ctype/iscntrl_l.cpp libc/src/ctype/iscntrl_l.h libc/src/ctype/isdigit_l.cpp libc/src/ctype/isdigit_l.h libc/src/ctype/isgraph_l.cpp libc/src/ctype/isgraph_l.h libc/src/ctype/islower_l.cpp libc/src/ctype/islower_l.h libc/src/ctype/isprint_l.cpp libc/src/ctype/isprint_l.h libc/src/ctype/ispunct_l.cpp libc/src/ctype/ispunct_l.h libc/src/ctype/isspace_l.cpp libc/src/ctype/isspace_l.h libc/src/ctype/isupper_l.cpp libc/src/ctype/isupper_l.h libc/src/ctype/isxdigit_l.cpp libc/src/ctype/isxdigit_l.h libc/src/ctype/tolower_l.cpp libc/src/ctype/tolower_l.h libc/src/ctype/toupper_l.cpp libc/src/ctype/toupper_l.h libc/src/locale/duplocale.cpp libc/src/locale/duplocale.h libc/src/locale/freelocale.cpp libc/src/locale/freelocale.h libc/src/locale/locale.cpp libc/src/locale/locale.h libc/src/locale/localeconv.cpp libc/src/locale/localeconv.h libc/src/locale/newlocale.cpp libc/src/locale/newlocale.h libc/src/locale/setlocale.cpp libc/src/locale/setlocale.h libc/src/locale/uselocale.cpp libc/src/locale/uselocale.h libc/test/src/locale/locale_test.cpp libc/test/src/locale/localeconv_test.cpp libcxx/test/std/language.support/cmp/cmp.categories.pre/reject-other-than-literal-zero.verify.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/mutex.pass.cpp libcxx/test/support/checking_mutex.h lldb/test/API/functionalities/memory/big-read/main.c lldb/test/API/tools/lldb-dap/output/main.c llvm/include/llvm/Transforms/Utils/ControlFlowUtils.h llvm/lib/Support/ModRef.cpp llvm/lib/Target/AArch64/SMEPeepholeOpt.cpp llvm/lib/Target/AMDGPU/GCNSubtarget.cpp llvm/lib/Target/DirectX/DXILOpLowering.h llvm/lib/Target/DirectX/DXILPrettyPrinter.h llvm/lib/Target/DirectX/DXILTranslateMetadata.h llvm/lib/Target/SPIRV/SPIRVEmitNonSemanticDI.cpp llvm/lib/Transforms/Utils/ControlFlowUtils.cpp mlir/include/mlir/Dialect/Tensor/Extensions/AllExtensions.h mlir/include/mlir/Dialect/Tensor/Extensions/MeshShardingExtensions.h mlir/lib/Dialect/Tensor/Extensions/AllExtensions.cpp offload/DeviceRTL/include/Profiling.h offload/DeviceRTL/src/Profiling.cpp offload/test/offloading/pgo1.c offload/test/sanitizer/ptr_outside_alloc_1.c offload/test/sanitizer/ptr_outside_alloc_2.c offload/test/sanitizer/use_after_free_1.c offload/test/sanitizer/use_after_free_2.c bolt/lib/Core/BinaryFunctionProfile.cpp bolt/test/X86/instrumentation-eh_frame_hdr.cpp clang-tools-extra/clangd/TUScheduler.cpp clang/include/clang/AST/ExprCXX.h clang/include/clang/AST/Type.h clang/include/clang/Driver/SanitizerArgs.h clang/include/clang/Format/Format.h clang/include/clang/Sema/Sema.h clang/include/clang/Serialization/ASTReader.h clang/lib/AST/ByteCode/Compiler.cpp clang/lib/AST/ByteCode/Descriptor.cpp clang/lib/AST/ByteCode/Descriptor.h clang/lib/AST/ByteCode/EvalEmitter.cpp clang/lib/AST/ByteCode/FunctionPointer.h clang/lib/AST/ByteCode/Interp.cpp clang/lib/AST/ByteCode/Interp.h clang/lib/AST/ByteCode/Pointer.h clang/lib/AST/ExprConstant.cpp clang/lib/Basic/Targets/AArch64.cpp clang/lib/Basic/Targets/AArch64.h clang/lib/Basic/Targets/WebAssembly.cpp clang/lib/Basic/Targets/WebAssembly.h clang/lib/CodeGen/BackendUtil.cpp clang/lib/CodeGen/CGBuiltin.cpp clang/lib/CodeGen/CGCall.cpp clang/lib/CodeGen/CGClass.cpp clang/lib/CodeGen/CGExpr.cpp clang/lib/CodeGen/CGExprScalar.cpp clang/lib/CodeGen/CGHLSLRuntime.h clang/lib/CodeGen/CodeGenFunction.cpp clang/lib/CodeGen/CodeGenFunction.h clang/lib/CodeGen/CodeGenModule.cpp clang/lib/CodeGen/CodeGenModule.h clang/lib/CodeGen/CodeGenPGO.cpp clang/lib/CodeGen/CodeGenTBAA.cpp clang/lib/CodeGen/CodeGenTBAA.h clang/lib/CodeGen/CodeGenTypes.cpp clang/lib/CodeGen/CodeGenTypes.h clang/lib/CodeGen/MicrosoftCXXABI.cpp clang/lib/CodeGen/Targets/SPIR.cpp clang/lib/Driver/SanitizerArgs.cpp clang/lib/Driver/ToolChains/Arch/Sparc.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/CommonArgs.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Linux.cpp clang/lib/Driver/ToolChains/PS4CPU.cpp clang/lib/Format/ContinuationIndenter.cpp clang/lib/Format/Format.cpp clang/lib/Format/FormatToken.cpp clang/lib/Format/FormatToken.h clang/lib/Format/TokenAnnotator.cpp clang/lib/Frontend/InitPreprocessor.cpp clang/lib/Frontend/PrintPreprocessedOutput.cpp clang/lib/Headers/immintrin.h clang/lib/Parse/ParseDecl.cpp clang/lib/Parse/ParseDeclCXX.cpp clang/lib/Sema/CheckExprLifetime.cpp clang/lib/Sema/SemaAttr.cpp clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaExpr.cpp clang/lib/Sema/SemaExprCXX.cpp clang/lib/Sema/SemaInit.cpp clang/lib/Sema/SemaOverload.cpp clang/lib/Sema/SemaTemplate.cpp clang/lib/Sema/SemaTemplateInstantiate.cpp clang/lib/Sema/SemaTemplateInstantiateDecl.cpp clang/lib/Sema/SemaX86.cpp clang/lib/Serialization/ASTReader.cpp clang/lib/Serialization/ASTReaderDecl.cpp clang/lib/StaticAnalyzer/Checkers/Taint.cpp clang/test/AST/ByteCode/c.c clang/test/AST/ByteCode/invalid.cpp clang/test/AST/ByteCode/literals.cpp clang/test/AST/ByteCode/new-delete.cpp clang/test/Analysis/analyzer-config.c clang/test/Analysis/taint-generic.c clang/test/CXX/drs/cwg23xx.cpp clang/test/CXX/drs/cwg29xx.cpp clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1-11.cpp clang/test/CXX/temp/temp.decls/temp.mem/p1.cpp clang/test/ClangScanDeps/pr61006.cppm clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1-bfloat.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sb.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sh.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sw.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1ub.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1uh.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1uw.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1-bfloat.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1b.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1h.c clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1w.c clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_loads.c clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_store.c clang/test/CodeGen/attr-counted-by.c clang/test/CodeGen/builtin-cpu-supports.c clang/test/CodeGen/builtins-wasm.c clang/test/CodeGen/fp-reassoc-pragma.cpp clang/test/CodeGen/fp-reciprocal-pragma.cpp clang/test/CodeGen/kcfi-normalize.c clang/test/CodeGen/ms-mixed-ptr-sizes.c clang/test/CodeGen/tls-maxalign-modflag.c clang/test/CodeGenCXX/cxx2b-consteval-if.cpp clang/test/CodeGenCXX/windows-itanium-init-guard.cpp clang/test/Driver/coverage.c clang/test/Driver/debug-options.c clang/test/Driver/fsanitize.c clang/test/Driver/print-supported-extensions-riscv.c clang/test/Driver/program-path-priority.c clang/test/Driver/ps5-linker.c clang/test/Driver/riscv-cpus.c clang/test/Driver/wasm-features.c clang/test/Headers/wasm.c clang/test/Lexer/cxx-features.cpp clang/test/Misc/target-invalid-cpu-note/riscv.c clang/test/Parser/parser_overflow.c clang/test/Preprocessor/aarch64-target-features.c clang/test/Preprocessor/riscv-target-features.c clang/test/Preprocessor/wasm-target-features.c clang/test/Sema/warn-lifetime-analysis-nocfg.cpp clang/test/SemaCXX/attr-annotate.cpp clang/test/SemaCXX/constant-expression-cxx2a.cpp clang/test/SemaCXX/cxx2a-constexpr-dynalloc.cpp clang/test/SemaCXX/cxx2a-explicit-bool.cpp clang/test/SemaCXX/matrix-index-operator-sign-conversion.cpp clang/test/SemaCXX/sugared-auto.cpp clang/test/SemaTemplate/concepts-friends.cpp clang/tools/driver/cc1as_main.cpp clang/unittests/Format/ConfigParseTest.cpp clang/unittests/Format/FormatTest.cpp clang/unittests/Format/FormatTestComments.cpp clang/unittests/Format/FormatTestObjC.cpp clang/unittests/Format/QualifierFixerTest.cpp clang/utils/TableGen/NeonEmitter.cpp compiler-rt/lib/asan/asan_flags.inc compiler-rt/lib/asan/asan_globals.cpp compiler-rt/lib/fuzzer/FuzzerUtilFuchsia.cpp compiler-rt/test/asan/TestCases/Darwin/cstring_section.c compiler-rt/test/asan/TestCases/Linux/initialization-nobug-lld.cpp compiler-rt/test/asan/TestCases/Linux/odr_indicator_unregister.cpp compiler-rt/test/asan/TestCases/Linux/odr_indicators.cpp compiler-rt/test/asan/TestCases/Windows/dll_global_dead_strip.c compiler-rt/test/asan/TestCases/Windows/dll_report_globals_symbolization_at_startup.cpp compiler-rt/test/asan/TestCases/Windows/global_dead_strip.c compiler-rt/test/asan/TestCases/Windows/report_globals_vs_freelibrary.cpp compiler-rt/test/asan/TestCases/initialization-nobug.cpp compiler-rt/test/metadata/uar.cpp flang/include/flang/Optimizer/CodeGen/CodeGen.h flang/include/flang/Optimizer/Support/InternalNames.h flang/include/flang/Optimizer/Transforms/Passes.h flang/include/flang/Tools/CLOptions.inc flang/lib/Lower/ConvertCall.cpp flang/lib/Lower/ConvertExpr.cpp flang/lib/Lower/OpenMP/Clauses.cpp flang/lib/Lower/OpenMP/Clauses.h flang/lib/Lower/OpenMP/ReductionProcessor.cpp flang/lib/Optimizer/Builder/IntrinsicCall.cpp flang/lib/Optimizer/CodeGen/CodeGen.cpp flang/lib/Optimizer/Dialect/FIRAttr.cpp flang/lib/Optimizer/Dialect/FIROps.cpp flang/lib/Optimizer/Support/InternalNames.cpp flang/lib/Optimizer/Transforms/AddDebugInfo.cpp flang/lib/Optimizer/Transforms/ConstantArgumentGlobalisation.cpp flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp flang/lib/Optimizer/Transforms/DebugTypeGenerator.h flang/lib/Optimizer/Transforms/PolymorphicOpConversion.cpp flang/lib/Optimizer/Transforms/StackArrays.cpp flang/lib/Semantics/runtime-type-info.cpp flang/runtime/copy.cpp flang/runtime/edit-input.cpp flang/runtime/exceptions.cpp flang/runtime/numeric.cpp flang/runtime/stop.cpp flang/tools/fir-opt/fir-opt.cpp libc/src/ctype/isalnum.cpp libc/src/ctype/isalpha.cpp libc/src/ctype/isblank.cpp libc/src/ctype/iscntrl.cpp libc/src/ctype/isdigit.cpp libc/src/ctype/isgraph.cpp libc/src/ctype/islower.cpp libc/src/ctype/isprint.cpp libc/src/ctype/ispunct.cpp libc/src/ctype/isspace.cpp libc/src/ctype/isupper.cpp libc/src/ctype/isxdigit.cpp libc/src/ctype/tolower.cpp libc/src/ctype/toupper.cpp libc/src/stdio/scanf_core/vfscanf_internal.h libcxx/include/__compare/ordering.h libcxx/include/print libcxx/include/regex libcxx/include/string libcxx/include/string_view libcxx/test/libcxx/utilities/expected/expected.expected/transform_error.mandates.verify.cpp libcxx/test/libcxx/utilities/expected/expected.void/transform_error.mandates.verify.cpp libcxx/test/std/input.output/iostream.format/std.manip/setfill_wchar_max.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/copy_assign.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/copy_ctor.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/default.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_try_to_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_for.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/unlock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/member_swap.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/nonmember_swap.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/release.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/mutex.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/op_bool.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/owns_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/types.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/try_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/try_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp lld/COFF/Chunks.cpp lld/COFF/Chunks.h lld/COFF/Driver.cpp lld/COFF/Driver.h lld/COFF/SymbolTable.cpp lld/COFF/SymbolTable.h lld/COFF/Writer.cpp lld/ELF/AArch64ErrataFix.cpp lld/ELF/ARMErrataFix.cpp lld/ELF/Arch/AArch64.cpp lld/ELF/Arch/ARM.cpp lld/ELF/Arch/LoongArch.cpp lld/ELF/Arch/PPC.cpp lld/ELF/Arch/PPC64.cpp lld/ELF/Arch/RISCV.cpp lld/ELF/Arch/SystemZ.cpp lld/ELF/Arch/X86.cpp lld/ELF/Arch/X86_64.cpp lld/ELF/Config.h lld/ELF/Driver.cpp lld/ELF/ICF.cpp lld/ELF/InputSection.cpp lld/ELF/InputSection.h lld/ELF/LinkerScript.cpp lld/ELF/LinkerScript.h lld/ELF/MapFile.cpp lld/ELF/MarkLive.cpp lld/ELF/OutputSections.cpp lld/ELF/Relocations.cpp lld/ELF/ScriptParser.cpp lld/ELF/Symbols.cpp lld/ELF/SyntheticSections.cpp lld/ELF/SyntheticSections.h lld/ELF/Target.cpp lld/ELF/Target.h lld/ELF/Thunks.cpp lld/ELF/Writer.cpp lldb/include/lldb/Interpreter/Interfaces/ScriptedInterface.h lldb/include/lldb/lldb-private-enumerations.h lldb/source/Plugins/ObjectFile/Minidump/MinidumpFileBuilder.cpp lldb/source/Plugins/Process/mach-core/ProcessMachCore.cpp lldb/source/Plugins/Process/minidump/MinidumpParser.cpp lldb/source/Plugins/Process/minidump/MinidumpParser.h lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp lldb/source/Plugins/Process/minidump/MinidumpTypes.h lldb/source/Target/Target.cpp lldb/source/Utility/ArchSpec.cpp lldb/test/Shell/Expr/TestAnonNamespaceParamFunc.cpp lldb/tools/lldb-dap/DAP.cpp lldb/tools/lldb-dap/DAP.h lldb/tools/lldb-dap/OutputRedirector.cpp lldb/tools/lldb-dap/lldb-dap.cpp lldb/unittests/Process/elf-core/ThreadElfCoreTest.cpp lldb/unittests/Symbol/TestClangASTImporter.cpp llvm/include/llvm/ADT/APFloat.h llvm/include/llvm/ADT/APInt.h llvm/include/llvm/ADT/StringExtras.h llvm/include/llvm/ADT/StringRef.h llvm/include/llvm/Analysis/CtxProfAnalysis.h llvm/include/llvm/Analysis/LoopAccessAnalysis.h llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h llvm/include/llvm/CodeGen/GlobalISel/GISelChangeObserver.h llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h llvm/include/llvm/DebugInfo/Symbolize/Symbolize.h llvm/include/llvm/ExecutionEngine/Orc/LoadRelocatableObject.h llvm/include/llvm/ExecutionEngine/Orc/MachO.h llvm/include/llvm/IR/DebugInfo.h llvm/include/llvm/IR/DebugProgramInstruction.h llvm/include/llvm/IR/IntrinsicInst.h llvm/include/llvm/LTO/LTO.h llvm/include/llvm/MC/MCAssembler.h llvm/include/llvm/MC/MCELFObjectWriter.h llvm/include/llvm/MC/MCTargetOptions.h llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h llvm/include/llvm/ProfileData/InstrProf.h llvm/include/llvm/SandboxIR/SandboxIR.h llvm/include/llvm/SandboxIR/Tracker.h llvm/include/llvm/Support/ModRef.h llvm/include/llvm/Support/float128.h llvm/include/llvm/TableGen/SetTheory.h llvm/include/llvm/TableGen/StringToOffsetTable.h llvm/include/llvm/TargetParser/RISCVISAInfo.h llvm/include/llvm/Transforms/IPO/FunctionImport.h llvm/include/llvm/Transforms/InstCombine/InstCombiner.h llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h llvm/include/llvm/Transforms/Utils/Local.h llvm/include/llvm/Transforms/Utils/SCCPSolver.h llvm/lib/Analysis/AliasAnalysis.cpp llvm/lib/Analysis/ConstantFolding.cpp llvm/lib/Analysis/CtxProfAnalysis.cpp llvm/lib/Analysis/LoopAccessAnalysis.cpp llvm/lib/Analysis/ScalarEvolution.cpp llvm/lib/CodeGen/DwarfEHPrepare.cpp llvm/lib/CodeGen/GlobalISel/CombinerHelperCasts.cpp llvm/lib/CodeGen/GlobalISel/GISelChangeObserver.cpp llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp llvm/lib/CodeGen/MachineSink.cpp llvm/lib/CodeGen/MachineStableHash.cpp llvm/lib/CodeGen/PrologEpilogInserter.cpp llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/lib/CodeGen/ShrinkWrap.cpp llvm/lib/CodeGen/TargetLoweringBase.cpp llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp llvm/lib/DebugInfo/Symbolize/Symbolize.cpp llvm/lib/ExecutionEngine/Orc/LoadRelocatableObject.cpp llvm/lib/ExecutionEngine/Orc/MachO.cpp llvm/lib/IR/AutoUpgrade.cpp llvm/lib/IR/Constants.cpp llvm/lib/IR/DebugInfo.cpp llvm/lib/IR/VectorBuilder.cpp llvm/lib/IR/Verifier.cpp llvm/lib/LTO/LTO.cpp llvm/lib/LTO/LTOBackend.cpp llvm/lib/LTO/ThinLTOCodeGenerator.cpp llvm/lib/MC/ELFObjectWriter.cpp llvm/lib/MC/MCTargetOptionsCommandFlags.cpp llvm/lib/ProfileData/InstrProf.cpp llvm/lib/SandboxIR/SandboxIR.cpp llvm/lib/SandboxIR/Tracker.cpp llvm/lib/Support/APFloat.cpp llvm/lib/TableGen/SetTheory.cpp llvm/lib/Target/AArch64/AArch64.h llvm/lib/Target/AArch64/AArch64FrameLowering.cpp llvm/lib/Target/AArch64/AArch64ISelLowering.cpp llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp llvm/lib/Target/AArch64/AArch64TargetMachine.cpp llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp llvm/lib/Target/AMDGPU/AMDGPU.h llvm/lib/Target/AMDGPU/AMDGPUAsanInstrumentation.cpp llvm/lib/Target/AMDGPU/AMDGPUAsanInstrumentation.h llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h llvm/lib/Target/AMDGPU/AMDGPUPostLegalizerCombiner.cpp llvm/lib/Target/AMDGPU/AMDGPUPreLegalizerCombiner.cpp llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp llvm/lib/Target/AMDGPU/GCNSubtarget.h llvm/lib/Target/AMDGPU/SIISelLowering.cpp llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp llvm/lib/Target/AMDGPU/SIInstrInfo.cpp llvm/lib/Target/AMDGPU/SIInstrInfo.h llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp llvm/lib/Target/BPF/BPFISelLowering.cpp llvm/lib/Target/BPF/BPFMIPeephole.cpp llvm/lib/Target/BPF/BPFRegisterInfo.cpp llvm/lib/Target/BPF/BPFRegisterInfo.h llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp llvm/lib/Target/DirectX/DXILOpLowering.cpp llvm/lib/Target/DirectX/DXILPrettyPrinter.cpp llvm/lib/Target/DirectX/DXILResourceAnalysis.cpp llvm/lib/Target/DirectX/DXILResourceAnalysis.h llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp llvm/lib/Target/DirectX/DirectX.h llvm/lib/Target/DirectX/DirectXTargetMachine.cpp llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp llvm/lib/Target/NVPTX/NVPTXProxyRegErasure.cpp llvm/lib/Target/RISCV/GISel/RISCVCallLowering.cpp llvm/lib/Target/RISCV/GISel/RISCVCallLowering.h llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp llvm/lib/Target/RISCV/RISCVISelLowering.cpp llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp llvm/lib/Target/RISCV/RISCVVectorPeephole.cpp llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVMCCodeEmitter.cpp llvm/lib/Target/SPIRV/SPIRV.h llvm/lib/Target/SPIRV/SPIRVAsmPrinter.cpp llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h llvm/lib/Target/SPIRV/SPIRVISelLowering.cpp llvm/lib/Target/SPIRV/SPIRVInstrInfo.cpp llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.h llvm/lib/Target/SPIRV/SPIRVPostLegalizer.cpp llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp llvm/lib/Target/SPIRV/SPIRVSubtarget.h llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp llvm/lib/Target/WebAssembly/WebAssemblySubtarget.h llvm/lib/Target/X86/X86FrameLowering.cpp llvm/lib/Target/X86/X86ISelLowering.cpp llvm/lib/Target/X86/X86ISelLowering.h llvm/lib/Target/X86/X86IntrinsicsInfo.h llvm/lib/Target/X86/X86RegisterInfo.cpp llvm/lib/Target/X86/X86RegisterInfo.h llvm/lib/Target/X86/X86TargetTransformInfo.cpp llvm/lib/Target/Xtensa/XtensaISelDAGToDAG.cpp llvm/lib/Target/Xtensa/XtensaISelLowering.cpp llvm/lib/Target/Xtensa/XtensaISelLowering.h llvm/lib/Transforms/Coroutines/CoroFrame.cpp llvm/lib/Transforms/Coroutines/CoroInternal.h llvm/lib/Transforms/Coroutines/CoroSplit.cpp llvm/lib/Transforms/HipStdPar/HipStdPar.cpp llvm/lib/Transforms/IPO/AttributorAttributes.cpp llvm/lib/Transforms/IPO/FunctionAttrs.cpp llvm/lib/Transforms/IPO/FunctionImport.cpp llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp llvm/lib/Transforms/Instrumentation/NumericalStabilitySanitizer.cpp llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp llvm/lib/Transforms/Scalar/ConstraintElimination.cpp llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp llvm/lib/Transforms/Scalar/SROA.cpp llvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp llvm/lib/Transforms/Utils/BasicBlockUtils.cpp llvm/lib/Transforms/Utils/FixIrreducible.cpp llvm/lib/Transforms/Utils/Local.cpp llvm/lib/Transforms/Utils/ModuleUtils.cpp llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp llvm/lib/Transforms/Utils/SCCPSolver.cpp llvm/lib/Transforms/Utils/SimplifyCFG.cpp llvm/lib/Transforms/Utils/UnifyLoopExits.cpp llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h llvm/lib/Transforms/Vectorize/LoopVectorize.cpp llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp llvm/lib/Transforms/Vectorize/VPlan.cpp llvm/lib/Transforms/Vectorize/VPlan.h llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp llvm/test/TableGen/x86-fold-tables.inc llvm/tools/llvm-link/llvm-link.cpp llvm/tools/llvm-reduce/deltas/RunIRPasses.cpp llvm/unittests/ADT/STLExtrasTest.cpp llvm/unittests/ADT/StringExtrasTest.cpp llvm/unittests/ADT/StringRefTest.cpp llvm/unittests/Analysis/CtxProfAnalysisTest.cpp llvm/unittests/Analysis/GraphWriterTest.cpp llvm/unittests/SandboxIR/SandboxIRTest.cpp llvm/unittests/SandboxIR/TrackerTest.cpp llvm/unittests/TargetParser/RISCVISAInfoTest.cpp llvm/utils/TableGen/Common/CodeGenRegisters.cpp llvm/utils/TableGen/Common/CodeGenSchedule.cpp llvm/utils/TableGen/IntrinsicEmitter.cpp llvm/utils/TableGen/TableGen.cpp mlir/include/mlir/Analysis/DataFlow/ConstantPropagationAnalysis.h mlir/include/mlir/Analysis/DataFlow/DenseAnalysis.h mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h mlir/include/mlir/Analysis/DataFlow/LivenessAnalysis.h mlir/include/mlir/Analysis/DataFlow/SparseAnalysis.h mlir/include/mlir/Dialect/Func/Extensions/MeshShardingExtensions.h mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h mlir/include/mlir/IR/BuiltinTypes.h mlir/include/mlir/IR/MLIRContext.h mlir/include/mlir/InitAllDialects.h mlir/include/mlir/InitAllExtensions.h mlir/include/mlir/TableGen/Constraint.h mlir/include/mlir/Transforms/DialectConversion.h mlir/lib/Analysis/DataFlow/ConstantPropagationAnalysis.cpp mlir/lib/Analysis/DataFlow/DenseAnalysis.cpp mlir/lib/Analysis/DataFlow/IntegerRangeAnalysis.cpp mlir/lib/Analysis/DataFlow/LivenessAnalysis.cpp mlir/lib/Analysis/DataFlow/SparseAnalysis.cpp mlir/lib/Conversion/MathToLibm/MathToLibm.cpp mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp mlir/lib/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.cpp mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp mlir/lib/Dialect/Math/Transforms/LegalizeToF32.cpp mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp mlir/lib/Dialect/SCF/Transforms/LoopPipelining.cpp mlir/lib/Dialect/SCF/Utils/Utils.cpp mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.cpp mlir/lib/IR/BuiltinAttributes.cpp mlir/lib/IR/BuiltinTypes.cpp mlir/lib/TableGen/Constraint.cpp mlir/lib/TableGen/Operator.cpp mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp mlir/lib/Target/LLVMIR/ModuleTranslation.cpp mlir/lib/Transforms/Mem2Reg.cpp mlir/lib/Transforms/Utils/DialectConversion.cpp mlir/test/lib/Analysis/DataFlow/TestDenseBackwardDataFlowAnalysis.cpp mlir/test/lib/Analysis/DataFlow/TestDenseDataFlowAnalysis.h mlir/test/lib/Analysis/DataFlow/TestDenseForwardDataFlowAnalysis.cpp mlir/test/lib/Analysis/DataFlow/TestSparseBackwardDataFlowAnalysis.cpp mlir/test/lib/Dialect/Test/TestOpDefs.cpp mlir/tools/mlir-tblgen/AttrOrTypeDefGen.cpp offload/plugins-nextgen/amdgpu/src/rtl.cpp offload/plugins-nextgen/common/include/ErrorReporting.h offload/plugins-nextgen/common/include/GlobalHandler.h offload/plugins-nextgen/common/include/PluginInterface.h offload/plugins-nextgen/common/src/GlobalHandler.cpp offload/plugins-nextgen/common/src/PluginInterface.cpp offload/test/sanitizer/double_free.c offload/test/sanitizer/double_free_racy.c offload/test/sanitizer/free_wrong_ptr_kind.c offload/test/sanitizer/free_wrong_ptr_kind.cpp flang/lib/Optimizer/OpenMP/FunctionFiltering.cpp flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp flang/lib/Optimizer/OpenMP/MarkDeclareTarget.cpp libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/implicit_ctad.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/assign.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/ctor.copy.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/ctor.default.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/assign.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/ctor.copy.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/ctor.default.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/assign.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/ctor.copy.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/ctor.default.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/assign.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/ctor.copy.compile.pass.cpp libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/ctor.default.pass.cpp mlir/include/mlir/Dialect/Tensor/IR/ShardingInterfaceImpl.h mlir/lib/Dialect/Tensor/Extensions/MeshShardingExtensions.cpp
View the diff from clang-format here.
diff --git a/libcxx/include/string_view b/libcxx/include/string_view
index c81dbc9873..cf97e3a9be 100644
--- a/libcxx/include/string_view
+++ b/libcxx/include/string_view
@@ -211,8 +211,8 @@ namespace std {
 #include <__functional/hash.h>
 #include <__functional/unary_function.h>
 #include <__fwd/ostream.h>
-#include <__fwd/string_view.h>
 #include <__fwd/string.h>
+#include <__fwd/string_view.h>
 #include <__iterator/bounded_iter.h>
 #include <__iterator/concepts.h>
 #include <__iterator/iterator_traits.h>
diff --git a/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp b/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
index c099c28a62..7518332b0d 100644
--- a/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
+++ b/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
@@ -458,10 +458,12 @@ MinidumpParser::FindMemoryRange(lldb::addr_t addr) {
 
   if (!GetStream(StreamType::Memory64List).empty()) {
     llvm::Error err = llvm::Error::success();
-    for (const auto &memory_desc :  GetMinidumpFile().getMemory64List(err)) {
-      if (memory_desc.first.StartOfMemoryRange <= addr 
-          && addr < memory_desc.first.StartOfMemoryRange + memory_desc.first.DataSize) {
-        return minidump::Range(memory_desc.first.StartOfMemoryRange, memory_desc.second);
+    for (const auto &memory_desc : GetMinidumpFile().getMemory64List(err)) {
+      if (memory_desc.first.StartOfMemoryRange <= addr &&
+          addr < memory_desc.first.StartOfMemoryRange +
+                     memory_desc.first.DataSize) {
+        return minidump::Range(memory_desc.first.StartOfMemoryRange,
+                               memory_desc.second);
       }
     }
 
@@ -495,7 +497,8 @@ llvm::ArrayRef<uint8_t> MinidumpParser::GetMemory(lldb::addr_t addr,
   return range->range_ref.slice(offset, overlap);
 }
 
-llvm::iterator_range<FallibleMemory64Iterator> MinidumpParser::GetMemory64Iterator(llvm::Error &err) {
+llvm::iterator_range<FallibleMemory64Iterator>
+MinidumpParser::GetMemory64Iterator(llvm::Error &err) {
   llvm::ErrorAsOutParameter ErrAsOutParam(&err);
   return m_file->getMemory64List(err);
 }
diff --git a/lldb/source/Plugins/Process/minidump/MinidumpParser.h b/lldb/source/Plugins/Process/minidump/MinidumpParser.h
index 222c0ef47f..46596081eb 100644
--- a/lldb/source/Plugins/Process/minidump/MinidumpParser.h
+++ b/lldb/source/Plugins/Process/minidump/MinidumpParser.h
@@ -47,7 +47,8 @@ struct Range {
   }
 };
 
-using FallibleMemory64Iterator = llvm::object::MinidumpFile::FallibleMemory64Iterator;
+using FallibleMemory64Iterator =
+    llvm::object::MinidumpFile::FallibleMemory64Iterator;
 
 class MinidumpParser {
 public:
@@ -94,7 +95,8 @@ public:
   /// complete (includes all regions mapped into the process memory).
   std::pair<MemoryRegionInfos, bool> BuildMemoryRegions();
 
-  llvm::iterator_range<FallibleMemory64Iterator> GetMemory64Iterator(llvm::Error &err);
+  llvm::iterator_range<FallibleMemory64Iterator>
+  GetMemory64Iterator(llvm::Error &err);
 
   static llvm::StringRef GetStreamTypeAsString(StreamType stream_type);
 
diff --git a/llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp b/llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp
index 64e8ee76e8..775a6aee15 100644
--- a/llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp
+++ b/llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp
@@ -288,16 +288,14 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
   auto &LoadActions = getActionDefinitionsBuilder(G_LOAD);
   auto &StoreActions = getActionDefinitionsBuilder(G_STORE);
 
-  LoadActions
-          .legalForTypesWithMemDesc({{s32, p0, s8, 8},
-                                     {s32, p0, s16, 16},
-                                     {s32, p0, s32, 32},
-                                     {p0, p0, sXLen, XLen}});
-  StoreActions
-          .legalForTypesWithMemDesc({{s32, p0, s8, 8},
-                                     {s32, p0, s16, 16},
-                                     {s32, p0, s32, 32},
-                                     {p0, p0, sXLen, XLen}});
+  LoadActions.legalForTypesWithMemDesc({{s32, p0, s8, 8},
+                                        {s32, p0, s16, 16},
+                                        {s32, p0, s32, 32},
+                                        {p0, p0, sXLen, XLen}});
+  StoreActions.legalForTypesWithMemDesc({{s32, p0, s8, 8},
+                                         {s32, p0, s16, 16},
+                                         {s32, p0, s32, 32},
+                                         {p0, p0, sXLen, XLen}});
   auto &ExtLoadActions =
       getActionDefinitionsBuilder({G_SEXTLOAD, G_ZEXTLOAD})
           .legalForTypesWithMemDesc({{s32, p0, s8, 8}, {s32, p0, s16, 16}});
@@ -386,8 +384,7 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
       .lowerIfMemSizeNotByteSizePow2()
       .clampScalar(0, s32, sXLen)
       .lower();
-  StoreActions
-      .clampScalar(0, s32, sXLen)
+  StoreActions.clampScalar(0, s32, sXLen)
       .lowerIfMemSizeNotByteSizePow2()
       .lower();
 
diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
index cb9ee64a67..274a798620 100644
--- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
+++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
@@ -4206,104 +4206,106 @@ X86TTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
     { ISD::CTPOP,      MVT::i16,     {  1,  1,  2,  2 } }, // popcnt(zext())
     { ISD::CTPOP,      MVT::i8,      {  1,  1,  2,  2 } }, // popcnt(zext())
   };
-  static const CostKindTblEntry X64CostTbl[] = { // 64-bit targets
-    { ISD::ABS,        MVT::i64,     {  1,  2,  3,  3 } }, // SUB+CMOV
-    { ISD::BITREVERSE, MVT::i64,     { 10, 12, 20, 22 } },
-    { ISD::BSWAP,      MVT::i64,     {  1,  2,  1,  2 } },
-    { ISD::CTLZ,       MVT::i64,     {  2,  2,  4,  5 } }, // BSR+XOR or BSR+XOR+CMOV
-    { ISD::CTLZ_ZERO_UNDEF, MVT::i64,{  1,  2,  2,  2 } }, // BSR+XOR
-    { ISD::CTTZ,       MVT::i64,     {  2,  2,  3,  4 } }, // TEST+BSF+CMOV/BRANCH
-    { ISD::CTTZ_ZERO_UNDEF, MVT::i64,{  1,  2,  1,  2 } }, // BSF
-    { ISD::CTPOP,      MVT::i64,     { 10,  6, 19, 19 } },
-    { ISD::ROTL,       MVT::i64,     {  2,  3,  1,  3 } },
-    { ISD::ROTR,       MVT::i64,     {  2,  3,  1,  3 } },
-    { X86ISD::VROTLI,  MVT::i64,     {  1,  1,  1,  1 } },
-    { ISD::FSHL,       MVT::i64,     {  4,  4,  1,  4 } },
-    { ISD::SADDSAT,    MVT::i64,     {  4,  4,  7, 10 } },
-    { ISD::SSUBSAT,    MVT::i64,     {  4,  5,  8, 11 } },
-    { ISD::UADDSAT,    MVT::i64,     {  2,  3,  4,  7 } },
-    { ISD::USUBSAT,    MVT::i64,     {  2,  3,  4,  7 } },
-    { ISD::SMAX,       MVT::i64,     {  1,  3,  2,  3 } },
-    { ISD::SMIN,       MVT::i64,     {  1,  3,  2,  3 } },
-    { ISD::UMAX,       MVT::i64,     {  1,  3,  2,  3 } },
-    { ISD::UMIN,       MVT::i64,     {  1,  3,  2,  3 } },
-    { ISD::SADDO,      MVT::i64,     {  2,  2,  4,  6 } },
-    { ISD::UADDO,      MVT::i64,     {  2,  2,  4,  6 } },
-    { ISD::SMULO,      MVT::i64,     {  4,  4,  4,  6 } },
-    { ISD::UMULO,      MVT::i64,     {  8,  8,  4,  7 } },
+  static const CostKindTblEntry X64CostTbl[] = {
+      // 64-bit targets
+      {ISD::ABS, MVT::i64, {1, 2, 3, 3}}, // SUB+CMOV
+      {ISD::BITREVERSE, MVT::i64, {10, 12, 20, 22}},
+      {ISD::BSWAP, MVT::i64, {1, 2, 1, 2}},
+      {ISD::CTLZ, MVT::i64, {2, 2, 4, 5}},            // BSR+XOR or BSR+XOR+CMOV
+      {ISD::CTLZ_ZERO_UNDEF, MVT::i64, {1, 2, 2, 2}}, // BSR+XOR
+      {ISD::CTTZ, MVT::i64, {2, 2, 3, 4}},            // TEST+BSF+CMOV/BRANCH
+      {ISD::CTTZ_ZERO_UNDEF, MVT::i64, {1, 2, 1, 2}}, // BSF
+      {ISD::CTPOP, MVT::i64, {10, 6, 19, 19}},
+      {ISD::ROTL, MVT::i64, {2, 3, 1, 3}},
+      {ISD::ROTR, MVT::i64, {2, 3, 1, 3}},
+      {X86ISD::VROTLI, MVT::i64, {1, 1, 1, 1}},
+      {ISD::FSHL, MVT::i64, {4, 4, 1, 4}},
+      {ISD::SADDSAT, MVT::i64, {4, 4, 7, 10}},
+      {ISD::SSUBSAT, MVT::i64, {4, 5, 8, 11}},
+      {ISD::UADDSAT, MVT::i64, {2, 3, 4, 7}},
+      {ISD::USUBSAT, MVT::i64, {2, 3, 4, 7}},
+      {ISD::SMAX, MVT::i64, {1, 3, 2, 3}},
+      {ISD::SMIN, MVT::i64, {1, 3, 2, 3}},
+      {ISD::UMAX, MVT::i64, {1, 3, 2, 3}},
+      {ISD::UMIN, MVT::i64, {1, 3, 2, 3}},
+      {ISD::SADDO, MVT::i64, {2, 2, 4, 6}},
+      {ISD::UADDO, MVT::i64, {2, 2, 4, 6}},
+      {ISD::SMULO, MVT::i64, {4, 4, 4, 6}},
+      {ISD::UMULO, MVT::i64, {8, 8, 4, 7}},
   };
-  static const CostKindTblEntry X86CostTbl[] = { // 32 or 64-bit targets
-    { ISD::ABS,        MVT::i32,     {  1,  2,  3,  3 } }, // SUB+XOR+SRA or SUB+CMOV
-    { ISD::ABS,        MVT::i16,     {  2,  2,  3,  3 } }, // SUB+XOR+SRA or SUB+CMOV
-    { ISD::ABS,        MVT::i8,      {  2,  4,  4,  3 } }, // SUB+XOR+SRA
-    { ISD::BITREVERSE, MVT::i32,     {  9, 12, 17, 19 } },
-    { ISD::BITREVERSE, MVT::i16,     {  9, 12, 17, 19 } },
-    { ISD::BITREVERSE, MVT::i8,      {  7,  9, 13, 14 } },
-    { ISD::BSWAP,      MVT::i32,     {  1,  1,  1,  1 } },
-    { ISD::BSWAP,      MVT::i16,     {  1,  2,  1,  2 } }, // ROL
-    { ISD::CTLZ,       MVT::i32,     {  2,  2,  4,  5 } }, // BSR+XOR or BSR+XOR+CMOV
-    { ISD::CTLZ,       MVT::i16,     {  2,  2,  4,  5 } }, // BSR+XOR or BSR+XOR+CMOV
-    { ISD::CTLZ,       MVT::i8,      {  2,  2,  5,  6 } }, // BSR+XOR or BSR+XOR+CMOV
-    { ISD::CTLZ_ZERO_UNDEF, MVT::i32,{  1,  2,  2,  2 } }, // BSR+XOR
-    { ISD::CTLZ_ZERO_UNDEF, MVT::i16,{  2,  2,  2,  2 } }, // BSR+XOR
-    { ISD::CTLZ_ZERO_UNDEF, MVT::i8, {  2,  2,  3,  3 } }, // BSR+XOR
-    { ISD::CTTZ,       MVT::i32,     {  2,  2,  3,  3 } }, // TEST+BSF+CMOV/BRANCH
-    { ISD::CTTZ,       MVT::i16,     {  2,  2,  2,  3 } }, // TEST+BSF+CMOV/BRANCH
-    { ISD::CTTZ,       MVT::i8,      {  2,  2,  2,  3 } }, // TEST+BSF+CMOV/BRANCH
-    { ISD::CTTZ_ZERO_UNDEF, MVT::i32,{  1,  2,  1,  2 } }, // BSF
-    { ISD::CTTZ_ZERO_UNDEF, MVT::i16,{  2,  2,  1,  2 } }, // BSF
-    { ISD::CTTZ_ZERO_UNDEF, MVT::i8, {  2,  2,  1,  2 } }, // BSF
-    { ISD::CTPOP,      MVT::i32,     {  8,  7, 15, 15 } },
-    { ISD::CTPOP,      MVT::i16,     {  9,  8, 17, 17 } },
-    { ISD::CTPOP,      MVT::i8,      {  7,  6,  6,  6 } },
-    { ISD::ROTL,       MVT::i32,     {  2,  3,  1,  3 } },
-    { ISD::ROTL,       MVT::i16,     {  2,  3,  1,  3 } },
-    { ISD::ROTL,       MVT::i8,      {  2,  3,  1,  3 } },
-    { ISD::ROTR,       MVT::i32,     {  2,  3,  1,  3 } },
-    { ISD::ROTR,       MVT::i16,     {  2,  3,  1,  3 } },
-    { ISD::ROTR,       MVT::i8,      {  2,  3,  1,  3 } },
-    { X86ISD::VROTLI,  MVT::i32,     {  1,  1,  1,  1 } },
-    { X86ISD::VROTLI,  MVT::i16,     {  1,  1,  1,  1 } },
-    { X86ISD::VROTLI,  MVT::i8,      {  1,  1,  1,  1 } },
-    { ISD::FSHL,       MVT::i32,     {  4,  4,  1,  4 } },
-    { ISD::FSHL,       MVT::i16,     {  4,  4,  2,  5 } },
-    { ISD::FSHL,       MVT::i8,      {  4,  4,  2,  5 } },
-    { ISD::SADDSAT,    MVT::i32,     {  3,  4,  6,  9 } },
-    { ISD::SADDSAT,    MVT::i16,     {  4,  4,  7, 10 } },
-    { ISD::SADDSAT,    MVT::i8,      {  4,  5,  8, 11 } },
-    { ISD::SSUBSAT,    MVT::i32,     {  4,  4,  7, 10 } },
-    { ISD::SSUBSAT,    MVT::i16,     {  4,  4,  7, 10 } },
-    { ISD::SSUBSAT,    MVT::i8,      {  4,  5,  8, 11 } },
-    { ISD::UADDSAT,    MVT::i32,     {  2,  3,  4,  7 } },
-    { ISD::UADDSAT,    MVT::i16,     {  2,  3,  4,  7 } },
-    { ISD::UADDSAT,    MVT::i8,      {  3,  3,  5,  8 } },
-    { ISD::USUBSAT,    MVT::i32,     {  2,  3,  4,  7 } },
-    { ISD::USUBSAT,    MVT::i16,     {  2,  3,  4,  7 } },
-    { ISD::USUBSAT,    MVT::i8,      {  3,  3,  5,  8 } },
-    { ISD::SMAX,       MVT::i32,     {  1,  2,  2,  3 } },
-    { ISD::SMAX,       MVT::i16,     {  1,  4,  2,  4 } },
-    { ISD::SMAX,       MVT::i8,      {  1,  4,  2,  4 } },
-    { ISD::SMIN,       MVT::i32,     {  1,  2,  2,  3 } },
-    { ISD::SMIN,       MVT::i16,     {  1,  4,  2,  4 } },
-    { ISD::SMIN,       MVT::i8,      {  1,  4,  2,  4 } },
-    { ISD::UMAX,       MVT::i32,     {  1,  2,  2,  3 } },
-    { ISD::UMAX,       MVT::i16,     {  1,  4,  2,  4 } },
-    { ISD::UMAX,       MVT::i8,      {  1,  4,  2,  4 } },
-    { ISD::UMIN,       MVT::i32,     {  1,  2,  2,  3 } },
-    { ISD::UMIN,       MVT::i16,     {  1,  4,  2,  4 } },
-    { ISD::UMIN,       MVT::i8,      {  1,  4,  2,  4 } },
-    { ISD::SADDO,      MVT::i32,     {  2,  2,  4,  6 } },
-    { ISD::SADDO,      MVT::i16,     {  2,  2,  4,  6 } },
-    { ISD::SADDO,      MVT::i8,      {  2,  2,  4,  6 } },
-    { ISD::UADDO,      MVT::i32,     {  2,  2,  4,  6 } },
-    { ISD::UADDO,      MVT::i16,     {  2,  2,  4,  6 } },
-    { ISD::UADDO,      MVT::i8,      {  2,  2,  4,  6 } },
-    { ISD::SMULO,      MVT::i32,     {  2,  2,  4,  6 } },
-    { ISD::SMULO,      MVT::i16,     {  5,  5,  4,  6 } },
-    { ISD::SMULO,      MVT::i8,      {  6,  6,  4,  6 } },
-    { ISD::UMULO,      MVT::i32,     {  6,  6,  4,  8 } },
-    { ISD::UMULO,      MVT::i16,     {  6,  6,  4,  9 } },
-    { ISD::UMULO,      MVT::i8,      {  6,  6,  4,  6 } },
+  static const CostKindTblEntry X86CostTbl[] = {
+      // 32 or 64-bit targets
+      {ISD::ABS, MVT::i32, {1, 2, 3, 3}}, // SUB+XOR+SRA or SUB+CMOV
+      {ISD::ABS, MVT::i16, {2, 2, 3, 3}}, // SUB+XOR+SRA or SUB+CMOV
+      {ISD::ABS, MVT::i8, {2, 4, 4, 3}},  // SUB+XOR+SRA
+      {ISD::BITREVERSE, MVT::i32, {9, 12, 17, 19}},
+      {ISD::BITREVERSE, MVT::i16, {9, 12, 17, 19}},
+      {ISD::BITREVERSE, MVT::i8, {7, 9, 13, 14}},
+      {ISD::BSWAP, MVT::i32, {1, 1, 1, 1}},
+      {ISD::BSWAP, MVT::i16, {1, 2, 1, 2}},           // ROL
+      {ISD::CTLZ, MVT::i32, {2, 2, 4, 5}},            // BSR+XOR or BSR+XOR+CMOV
+      {ISD::CTLZ, MVT::i16, {2, 2, 4, 5}},            // BSR+XOR or BSR+XOR+CMOV
+      {ISD::CTLZ, MVT::i8, {2, 2, 5, 6}},             // BSR+XOR or BSR+XOR+CMOV
+      {ISD::CTLZ_ZERO_UNDEF, MVT::i32, {1, 2, 2, 2}}, // BSR+XOR
+      {ISD::CTLZ_ZERO_UNDEF, MVT::i16, {2, 2, 2, 2}}, // BSR+XOR
+      {ISD::CTLZ_ZERO_UNDEF, MVT::i8, {2, 2, 3, 3}},  // BSR+XOR
+      {ISD::CTTZ, MVT::i32, {2, 2, 3, 3}},            // TEST+BSF+CMOV/BRANCH
+      {ISD::CTTZ, MVT::i16, {2, 2, 2, 3}},            // TEST+BSF+CMOV/BRANCH
+      {ISD::CTTZ, MVT::i8, {2, 2, 2, 3}},             // TEST+BSF+CMOV/BRANCH
+      {ISD::CTTZ_ZERO_UNDEF, MVT::i32, {1, 2, 1, 2}}, // BSF
+      {ISD::CTTZ_ZERO_UNDEF, MVT::i16, {2, 2, 1, 2}}, // BSF
+      {ISD::CTTZ_ZERO_UNDEF, MVT::i8, {2, 2, 1, 2}},  // BSF
+      {ISD::CTPOP, MVT::i32, {8, 7, 15, 15}},
+      {ISD::CTPOP, MVT::i16, {9, 8, 17, 17}},
+      {ISD::CTPOP, MVT::i8, {7, 6, 6, 6}},
+      {ISD::ROTL, MVT::i32, {2, 3, 1, 3}},
+      {ISD::ROTL, MVT::i16, {2, 3, 1, 3}},
+      {ISD::ROTL, MVT::i8, {2, 3, 1, 3}},
+      {ISD::ROTR, MVT::i32, {2, 3, 1, 3}},
+      {ISD::ROTR, MVT::i16, {2, 3, 1, 3}},
+      {ISD::ROTR, MVT::i8, {2, 3, 1, 3}},
+      {X86ISD::VROTLI, MVT::i32, {1, 1, 1, 1}},
+      {X86ISD::VROTLI, MVT::i16, {1, 1, 1, 1}},
+      {X86ISD::VROTLI, MVT::i8, {1, 1, 1, 1}},
+      {ISD::FSHL, MVT::i32, {4, 4, 1, 4}},
+      {ISD::FSHL, MVT::i16, {4, 4, 2, 5}},
+      {ISD::FSHL, MVT::i8, {4, 4, 2, 5}},
+      {ISD::SADDSAT, MVT::i32, {3, 4, 6, 9}},
+      {ISD::SADDSAT, MVT::i16, {4, 4, 7, 10}},
+      {ISD::SADDSAT, MVT::i8, {4, 5, 8, 11}},
+      {ISD::SSUBSAT, MVT::i32, {4, 4, 7, 10}},
+      {ISD::SSUBSAT, MVT::i16, {4, 4, 7, 10}},
+      {ISD::SSUBSAT, MVT::i8, {4, 5, 8, 11}},
+      {ISD::UADDSAT, MVT::i32, {2, 3, 4, 7}},
+      {ISD::UADDSAT, MVT::i16, {2, 3, 4, 7}},
+      {ISD::UADDSAT, MVT::i8, {3, 3, 5, 8}},
+      {ISD::USUBSAT, MVT::i32, {2, 3, 4, 7}},
+      {ISD::USUBSAT, MVT::i16, {2, 3, 4, 7}},
+      {ISD::USUBSAT, MVT::i8, {3, 3, 5, 8}},
+      {ISD::SMAX, MVT::i32, {1, 2, 2, 3}},
+      {ISD::SMAX, MVT::i16, {1, 4, 2, 4}},
+      {ISD::SMAX, MVT::i8, {1, 4, 2, 4}},
+      {ISD::SMIN, MVT::i32, {1, 2, 2, 3}},
+      {ISD::SMIN, MVT::i16, {1, 4, 2, 4}},
+      {ISD::SMIN, MVT::i8, {1, 4, 2, 4}},
+      {ISD::UMAX, MVT::i32, {1, 2, 2, 3}},
+      {ISD::UMAX, MVT::i16, {1, 4, 2, 4}},
+      {ISD::UMAX, MVT::i8, {1, 4, 2, 4}},
+      {ISD::UMIN, MVT::i32, {1, 2, 2, 3}},
+      {ISD::UMIN, MVT::i16, {1, 4, 2, 4}},
+      {ISD::UMIN, MVT::i8, {1, 4, 2, 4}},
+      {ISD::SADDO, MVT::i32, {2, 2, 4, 6}},
+      {ISD::SADDO, MVT::i16, {2, 2, 4, 6}},
+      {ISD::SADDO, MVT::i8, {2, 2, 4, 6}},
+      {ISD::UADDO, MVT::i32, {2, 2, 4, 6}},
+      {ISD::UADDO, MVT::i16, {2, 2, 4, 6}},
+      {ISD::UADDO, MVT::i8, {2, 2, 4, 6}},
+      {ISD::SMULO, MVT::i32, {2, 2, 4, 6}},
+      {ISD::SMULO, MVT::i16, {5, 5, 4, 6}},
+      {ISD::SMULO, MVT::i8, {6, 6, 4, 6}},
+      {ISD::UMULO, MVT::i32, {6, 6, 4, 8}},
+      {ISD::UMULO, MVT::i16, {6, 6, 4, 9}},
+      {ISD::UMULO, MVT::i8, {6, 6, 4, 6}},
   };
 
   Type *RetTy = ICA.getReturnType();
diff --git a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
index 603a1565e4..53568ae35d 100644
--- a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
+++ b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
@@ -1746,7 +1746,6 @@ static bool canReturn(Function &F) {
   return false;
 }
 
-
 // Set the noreturn function attribute if possible.
 static void addNoReturnAttrs(const SCCNodeSet &SCCNodes,
                              SmallSet<Function *, 8> &Changed) {
diff --git a/llvm/unittests/Analysis/GraphWriterTest.cpp b/llvm/unittests/Analysis/GraphWriterTest.cpp
index 4017e63a8c..1fd86d0e05 100644
--- a/llvm/unittests/Analysis/GraphWriterTest.cpp
+++ b/llvm/unittests/Analysis/GraphWriterTest.cpp
@@ -12,9 +12,9 @@
 #include "llvm/IR/Function.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Module.h"
-#include "llvm/Testing/Support/SupportHelpers.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/raw_ostream.h"
+#include "llvm/Testing/Support/SupportHelpers.h"
 #include "gtest/gtest.h"
 #include <string>
 
diff --git a/offload/test/sanitizer/ptr_outside_alloc_2.c b/offload/test/sanitizer/ptr_outside_alloc_2.c
index ac47c8922f..af2460149b 100644
--- a/offload/test/sanitizer/ptr_outside_alloc_2.c
+++ b/offload/test/sanitizer/ptr_outside_alloc_2.c
@@ -22,5 +22,5 @@ int main() {
 // CHECK: Device pointer [[PTR]] does not point into any (current or prior) host-issued allocation.
 // CHECK: Closest host-issued allocation (distance 1 byte; might be by page):
 // CHECK: Last allocation of size 1073741824
-// clang-format on
+  // clang-format on
 }

@ldionne ldionne changed the title has basic_string call basic_string_view's assume-valid constructor [libc++] Have basic_string call basic_string_view's assume-valid constructor Aug 21, 2024
Copy link
Member

@ldionne ldionne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks sensible to me, with a nitpick comment.

jayfoad and others added 24 commits August 23, 2024 17:25
The WebEx link will become invalid soon, we are switching to Google
Meet. Also, changing the cadence from biweekly to monthly.
…#105464)

VS Code requests the `instruction` stepping granularity if the assembly
view is currently focused. By implementing `StepGranularity`, we can
hence properly single-step through assembly code.
- Remove ostream << operators for StringRef and StringRef pair from
StringTest.
  Both of these are natively supported by googletest framework.
Adjust the handling of a few of the new clauses.
The operands of the phi nodes should be vectorized in the same order, in
which they were created, otherwise the compiler may crash when trying
to correctly build dependency for nodes with non-schedulable
instructions for gather/buildvector nodes.

Fixes llvm#105120
…lock are vectorized.

Before doing the vectorization of the PHI nodes, the compiler sorts them
by the opcodes of the operands. If the scalar is replaced during the
vectorization by extractelement, it breaks this sorting and prevent some
further vectorization attempts. Patch tries to improve this by doing
extra analysis of the scalars and tries to keep them, if it is found that
this scalar is used in other (external) PHI node in the same block.

Reviewers: RKSimon

Reviewed By: RKSimon

Pull Request: llvm#103923
This is missing tracking for `setShuffleMask`. I'll add it in a follow-up.
- Add `isPunct` to StringExtras.h.
- Add unit test for `isPunct` to StringExtrasTest.
This enhances the Github - CSV synchronization script to understand
some of the idioms we use in the CSV status files, like |Nothing To Do|
and others.
…04859)

This change addresses more "issues" as the one resolved in llvm#71338.
Some targets (e.g. NVPTX) do not accept global names containing
`.`. In particular, the global variables created to represent
the runtime information of derived types use `.` in their names.
A derived type's descriptor object may be used in the device code,
e.g. to initialize a descriptor of a variable of this type.
Thus, the runtime type info objects may need to be compiled
for the device.

Moreover, at least the derived types' descriptor objects
may need to be registered (think of `omp declare target`)
for the host-device association so that the addendum pointer
can be properly mapped to the device for descriptors using
a derived type's descriptor as their addendum pointer.
The registration implies knowing the name of the global variable
in the device image so that proper host code can be created.
So it is better to name the globals the same way for the host
and the device.

CompilerGeneratedNamesConversion pass renames all uniqued globals
such that the special symbols (currently `.`) are replaced
with `X`. The pass is supposed to be run for the host and the device.

An option is added to FIR-to-LLVM conversion pass to indicate
whether the new pass has been run before or not. This setting
affects how the codegen computes the names of the derived types'
descriptors for FIR derived types.

fir::NameUniquer now allows `X` to be part of a name, because
the name deconstruction may be applied to the mangled names
after CompilerGeneratedNamesConversion pass.
…parate lines. (llvm#105456)

Previously, when output like `"hello\nworld\n"` was produced by lldb (or
the process) the message would be sent as a single Output event. By
being a single event this causes VS Code to treat this as a single
message in the console when handling displaying and filtering in the
Debug Console.

Instead, with these changes we send each line as its own event. This
results in VS Code representing each line of output from lldb-dap as an
individual output message.

Resolves llvm#105444
LWG3404 was implemented along with subrange.

Closes llvm#104282
…5530)

This getter can easily be confused with the similar named
allowUnregisteredDialects setter
…es within optimizations"

This reverts commit 522c253.

This series of commits causes Clang crashes. The reproducer is posted on
llvm@08a0dec.
This reverts commit d48b807.

This series of commits causes Clang crashes. The reproducer is posted on
llvm@08a0dec
…omise when constructing the debug varaible for __coro_frame"

This reverts commit 08a0dec.

This series of commits causes Clang crashes. The reproducer is posted on
llvm@08a0dec.
…llvm#103833)

This change also covers the fold of `zext(A > B) - zext(A < B)` since it
is already being canonicalized into the aforementioned pattern.

Proof: https://alive2.llvm.org/ce/z/AgnfMn
…lvm#105592)

I accidentally created a dangling ArrayRef local variable. Use a
SmallVector instead.
…lvm#105504)

- Move global variables in TableGen.cpp out of anonymous namespace and
make them static, per LLVM coding standards.
@cjdb cjdb closed this Aug 23, 2024
@cjdb cjdb deleted the string-hardening branch August 23, 2024 17:28
@Endilll Endilll removed request for a team, Endilll, Moxinilian and ayermolo August 23, 2024 17:28
@cjdb
Copy link
Contributor Author

cjdb commented Aug 23, 2024

I have no idea what just happened. Closing PR and will re-open a new one that doesn't change 10k files.

Copy link

⚠️ Python code formatter, darker found issues in your code. ⚠️

You can test this locally with the following command:
darker --check --diff -r 5e6a1987a5d4574d3c3811f878ddbbbf7c35fa01...b625e4c2d39d4cab8b2b59478a909d152cae5aba lldb/test/API/functionalities/memory/big-read/TestMemoryReadMaximumSize.py lldb/test/API/tools/lldb-dap/output/TestDAP_output.py clang/tools/clang-format/clang-format-diff.py clang/tools/clang-format/clang-format-sublime.py clang/tools/clang-format/clang-format.py cross-project-tests/debuginfo-tests/dexter/dex/utils/Version.py libcxx/utils/libcxx/test/features.py libcxx/utils/synchronize_csv_status_files.py lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py lldb/packages/Python/lldbsuite/test/tools/lldb-dap/lldbdap_testcase.py lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/forward_list/TestDataFormatterGenericForwardList.py lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpNew.py lldb/test/API/tools/lldb-dap/step/TestDAP_step.py llvm/utils/lit/lit/TestRunner.py
View the diff from darker here.
--- libcxx/utils/synchronize_csv_status_files.py	2024-08-23 17:25:21.000000 +0000
+++ libcxx/utils/synchronize_csv_status_files.py	2024-08-23 17:30:25.486049 +0000
@@ -62,59 +62,65 @@
         - '|Nothing To Do|'
 
         Note that since we sometimes add additional notes after the status, we only check that the entry
         starts with the above patterns.
         """
-        if entry == '':
+        if entry == "":
             return PaperStatus(PaperStatus.TODO, entry)
-        elif entry.startswith('|In Progress|'):
+        elif entry.startswith("|In Progress|"):
             return PaperStatus(PaperStatus.IN_PROGRESS, entry)
-        elif entry.startswith('|Partial|'):
+        elif entry.startswith("|Partial|"):
             return PaperStatus(PaperStatus.PARTIAL, entry)
-        elif entry.startswith('|Complete|'):
+        elif entry.startswith("|Complete|"):
             return PaperStatus(PaperStatus.DONE, entry)
-        elif entry.startswith('|Nothing To Do|'):
+        elif entry.startswith("|Nothing To Do|"):
             return PaperStatus(PaperStatus.NOTHING_TO_DO, entry)
         else:
-            raise RuntimeError(f'Unexpected CSV entry for status: {entry}')
+            raise RuntimeError(f"Unexpected CSV entry for status: {entry}")
 
     @staticmethod
     def from_github_issue(issue: Dict):
         """
         Parse a paper status out of a Github issue obtained from querying a Github project.
         """
-        if 'status' not in issue:
+        if "status" not in issue:
             return PaperStatus(PaperStatus.TODO)
-        elif issue['status'] == 'Todo':
+        elif issue["status"] == "Todo":
             return PaperStatus(PaperStatus.TODO)
-        elif issue['status'] == 'In Progress':
+        elif issue["status"] == "In Progress":
             return PaperStatus(PaperStatus.IN_PROGRESS)
-        elif issue['status'] == 'Partial':
+        elif issue["status"] == "Partial":
             return PaperStatus(PaperStatus.PARTIAL)
-        elif issue['status'] == 'Done':
+        elif issue["status"] == "Done":
             return PaperStatus(PaperStatus.DONE)
-        elif issue['status'] == 'Nothing To Do':
+        elif issue["status"] == "Nothing To Do":
             return PaperStatus(PaperStatus.NOTHING_TO_DO)
         else:
-            raise RuntimeError(f"Received unrecognizable Github issue status: {issue['status']}")
+            raise RuntimeError(
+                f"Received unrecognizable Github issue status: {issue['status']}"
+            )
 
     def to_csv_entry(self) -> str:
         """
         Return the issue state formatted for a CSV entry. The status is formatted as '|Complete|',
         '|In Progress|', etc.
         """
         mapping = {
-            PaperStatus.TODO: '',
-            PaperStatus.IN_PROGRESS: '|In Progress|',
-            PaperStatus.PARTIAL: '|Partial|',
-            PaperStatus.DONE: '|Complete|',
-            PaperStatus.NOTHING_TO_DO: '|Nothing To Do|',
+            PaperStatus.TODO: "",
+            PaperStatus.IN_PROGRESS: "|In Progress|",
+            PaperStatus.PARTIAL: "|Partial|",
+            PaperStatus.DONE: "|Complete|",
+            PaperStatus.NOTHING_TO_DO: "|Nothing To Do|",
         }
         return self._original if self._original is not None else mapping[self._status]
 
     def is_done(self) -> bool:
-        return self._status == PaperStatus.DONE or self._status == PaperStatus.NOTHING_TO_DO
+        return (
+            self._status == PaperStatus.DONE
+            or self._status == PaperStatus.NOTHING_TO_DO
+        )
+
 
 class PaperInfo:
     paper_number: str
     """
     Identifier for the paper or the LWG issue. This must be something like 'PnnnnRx', 'Nxxxxx' or 'LWGxxxxx'.
@@ -150,16 +156,20 @@
     """
     Object from which this PaperInfo originated. This is used to track the CSV row or Github issue that
     was used to generate this PaperInfo and is useful for error reporting purposes.
     """
 
-    def __init__(self, paper_number: str, paper_name: str,
-                       status: PaperStatus,
-                       meeting: Optional[str] = None,
-                       first_released_version: Optional[str] = None,
-                       labels: Optional[List[str]] = None,
-                       original: Optional[object] = None):
+    def __init__(
+        self,
+        paper_number: str,
+        paper_name: str,
+        status: PaperStatus,
+        meeting: Optional[str] = None,
+        first_released_version: Optional[str] = None,
+        labels: Optional[List[str]] = None,
+        original: Optional[object] = None,
+    ):
         self.paper_number = paper_number
         self.paper_name = paper_name
         self.status = status
         self.meeting = meeting
         self.first_released_version = first_released_version
@@ -269,11 +279,13 @@
             results.append(row)
             continue
 
         # If there's more than one tracking issue, something is weird too.
         if len(tracking) > 1:
-            print(f"Found a row with more than one tracking issue: {row}\ntracked by: {tracking}")
+            print(
+                f"Found a row with more than one tracking issue: {row}\ntracked by: {tracking}"
+            )
             results.append(row)
             continue
 
         gh = tracking[0]
 
@@ -282,24 +294,26 @@
         # something must be wrong.
         if paper.status < gh.status:
             results.append(gh.for_printing())
             continue
         elif paper.status != gh.status:
-            print(f"We found a CSV row and a Github issue with different statuses:\nrow: {row}\Github issue: {gh}")
+            print(
+                f"We found a CSV row and a Github issue with different statuses:\nrow: {row}\Github issue: {gh}"
+            )
         results.append(row)
 
     return results
 
 CSV_FILES_TO_SYNC = [
-    'Cxx17Issues.csv',
-    'Cxx17Papers.csv',
-    'Cxx20Issues.csv',
-    'Cxx20Papers.csv',
-    'Cxx23Issues.csv',
-    'Cxx23Papers.csv',
-    'Cxx2cIssues.csv',
-    'Cxx2cPapers.csv',
+    "Cxx17Issues.csv",
+    "Cxx17Papers.csv",
+    "Cxx20Issues.csv",
+    "Cxx20Papers.csv",
+    "Cxx23Issues.csv",
+    "Cxx23Papers.csv",
+    "Cxx2cIssues.csv",
+    "Cxx2cPapers.csv",
 ]
 
 def main():
     libcxx_root = pathlib.Path(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 
--- lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpNew.py	2024-08-23 17:25:17.000000 +0000
+++ lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpNew.py	2024-08-23 17:30:26.129684 +0000
@@ -503,10 +503,10 @@
         region = lldb.SBMemoryRegionInfo()
         self.assertTrue(region_info_list.GetMemoryRegionAtIndex(0, region))
         self.assertEqual(region.GetRegionBase(), 0x7FFF12A84030)
         self.assertTrue(region.GetRegionEnd(), 0x7FFF12A84030 + 0x2FD0)
         self.assertTrue(region_info_list.GetMemoryRegionAtIndex(1, region))
-        self.assertEqual(region.GetRegionBase(), 0x00007fff12a87000)
-        self.assertTrue(region.GetRegionEnd(), 0x00007fff12a87000 + 0x00000018)
+        self.assertEqual(region.GetRegionBase(), 0x00007FFF12A87000)
+        self.assertTrue(region.GetRegionEnd(), 0x00007FFF12A87000 + 0x00000018)
         self.assertTrue(region_info_list.GetMemoryRegionAtIndex(2, region))
-        self.assertEqual(region.GetRegionBase(), 0x00007fff12a87018)
-        self.assertTrue(region.GetRegionEnd(), 0x00007fff12a87018 + 0x00000400)
+        self.assertEqual(region.GetRegionBase(), 0x00007FFF12A87018)
+        self.assertTrue(region.GetRegionEnd(), 0x00007FFF12A87018 + 0x00000400)
--- lldb/test/API/tools/lldb-dap/output/TestDAP_output.py	2024-08-23 17:25:26.000000 +0000
+++ lldb/test/API/tools/lldb-dap/output/TestDAP_output.py	2024-08-23 17:30:26.160130 +0000
@@ -14,19 +14,19 @@
         self.build_and_launch(program)
         source = "main.c"
         lines = [line_number(source, "// breakpoint 1")]
         breakpoint_ids = self.set_source_breakpoints(source, lines)
         self.continue_to_breakpoints(breakpoint_ids)
-        
+
         # Ensure partial messages are still sent.
         output = self.collect_stdout(timeout_secs=1.0, pattern="abcdef")
         self.assertTrue(output and len(output) > 0, "expect no program output")
 
         self.continue_to_exit()
-        
+
         output += self.get_stdout(timeout=lldbdap_testcase.DAPTestCaseBase.timeoutval)
         self.assertTrue(output and len(output) > 0, "expect no program output")
         self.assertIn(
             "abcdefghi\r\nhello world\r\n",
             output,
-            'full output not found in: ' + output,
+            "full output not found in: " + output,
         )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.
Projects
None yet
Development

Successfully merging this pull request may close these issues.