LLVM/project 125c8d3llvm/lib/DWARFLinker/Parallel AcceleratorRecordsSaver.cpp, llvm/test/tools/dsymutil/AArch64 lit.local.cfg debug-names-accel-table-types.ll

[DWARFLinker] Index Swift mangled type names in the parallel linker (#216429)

Swift records a type's mangled name in DW_AT_linkage_name. The classic
linker indexes it as a type accelerator entry alongside the short
DW_AT_name, but the parallel linker indexed only the short name.

Port the DW_LANG_Swift block added to the classic linker in 8234f8ae2685
to the parallel linker's type case.
DeltaFile
+213-0llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/debug-names-swift-mangled-type.s
+35-14llvm/lib/DWARFLinker/Parallel/AcceleratorRecordsSaver.cpp
+3-3llvm/test/tools/dsymutil/AArch64/debug-names-accel-table-types.ll
+1-1llvm/test/tools/dsymutil/AArch64/lit.local.cfg
+252-184 files

LLVM/project 34cce43llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 recalc-copyable-deps-on-reorder.ll

Revert "[SLP]Recalculate copyable-element deps after tree reordering"

This reverts commit 8024076c7591b6477d23c3519652a7c6487d97d3 to fix
buildbot https://lab.llvm.org/buildbot/#/builders/210/builds/12275

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/216444
DeltaFile
+0-188llvm/test/Transforms/SLPVectorizer/AArch64/recalc-copyable-deps-on-reorder.ll
+0-50llvm/test/Transforms/SLPVectorizer/RISCV/recalc-copyable-deps-on-reorder.ll
+2-34llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+2-2723 files

LLVM/project 101a9b5llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 recalc-copyable-deps-on-reorder.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+0-188llvm/test/Transforms/SLPVectorizer/AArch64/recalc-copyable-deps-on-reorder.ll
+0-50llvm/test/Transforms/SLPVectorizer/RISCV/recalc-copyable-deps-on-reorder.ll
+2-34llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+2-2723 files

LLVM/project 8024076llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 recalc-copyable-deps-on-reorder.ll

[SLP]Recalculate copyable-element deps after tree reordering

Reordering permutes the operand columns of the entries and may move an
operand between copyable-covered and plain edges, making the computed
dependency counts stale and tripping the unscheduled-deps assertion.

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/216442
DeltaFile
+188-0llvm/test/Transforms/SLPVectorizer/AArch64/recalc-copyable-deps-on-reorder.ll
+50-0llvm/test/Transforms/SLPVectorizer/RISCV/recalc-copyable-deps-on-reorder.ll
+34-2llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+272-23 files

LLVM/project ef3a908clang/docs/analyzer checkers.md, clang/docs/analyzer/developer-docs InitializerLists.md

[docs][clang] Finish MyST migration for analyzer docs
DeltaFile
+210-198clang/docs/analyzer/user-docs/Annotations.md
+32-33clang/docs/analyzer/developer-docs/InitializerLists.md
+21-22clang/docs/analyzer/user-docs/CommandLineUsage.md
+15-16clang/docs/analyzer/user-docs/CrossTranslationUnit.md
+12-13clang/docs/analyzer/checkers.md
+5-6clang/docs/analyzer/user-docs/UsingWithXCode.md
+295-2889 files not shown
+312-31415 files

LLVM/project 7dc88ccllvm/lib/Target/RISCV RISCVInstrInfoSFB.td RISCVFeatures.td, llvm/test/CodeGen/RISCV short-forward-branch-opt-zibi.ll sfb-merge-base-offset.ll

[RISCV] Remove short-forward-branch-imm. (#216401)

Just use short-forward-branch-ialu. I hope implentations that implement
short-forward-branch, do it equally for all branch types. Doing anything
else would create complex tradeoffs.

I'm planning to add conditional c.mv fusion support for Zibi and I don't
want to add an immediate version flag there.

The patterns that checked NoShortForwardBranchImm were not checking that
an immediate branch ISA was enabled. So I've changed them to
NoVendorXqcibiOrNoShortForwardBranch.
DeltaFile
+7-7llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
+2-7llvm/lib/Target/RISCV/RISCVFeatures.td
+3-3llvm/test/CodeGen/RISCV/sfb-merge-base-offset.ll
+2-2llvm/test/CodeGen/RISCV/short-forward-branch-opt-zibi.ll
+2-2llvm/lib/Target/RISCV/RISCVInstrInfoSFB.td
+1-2llvm/unittests/TargetParser/RISCVTargetParserTest.cpp
+17-2313 files not shown
+29-3619 files

LLVM/project 47aa7b9llvm/test/Transforms/SLPVectorizer/AMDGPU elementwise-fma-operand1.ll

[NFC][SLP] Add a test for fma fusion with the fmul on operand 1 (#216428)

canConvertToFMA only looks at operand 0 of the fadd, so the accumulator
shape fadd c, a * b is never recognised, and the fmul it does find is
priced with the target's fusion discount already applied. The threshold
puts the decision right at the cost boundary so the checks record which
way SLP goes today.
DeltaFile
+114-0llvm/test/Transforms/SLPVectorizer/AMDGPU/elementwise-fma-operand1.ll
+114-01 files

LLVM/project 8a6a59allvm/include/llvm/DWARFLinker AddressesMap.h, llvm/lib/DWARFLinker/Classic DWARFLinker.cpp

[DWARFLinker] Constrain a function's high_pc to its own symbol (#216432)

Mach-O objects built with .subsections_via_symbols make every symbol an
independently placeable atom, and the linker packs atoms without
preserving the spacing they had in the object file.

I have an example where the compiler describes such a subprogram as
extending past its own atom. While it's debatable whether that's a good
idea, it's not invalid in the object file. However, once linked, it is
invalid.

We can make dsymutil resilient against this by looking at the size of
the symbol in the debug map and adjusting the end_pc. I'm doing so
conservatively so that only a collision is repaired. Already
overlapping/invalid ranges remain untouched.

rdar://184768778
DeltaFile
+88-0llvm/test/tools/dsymutil/subprogram-high-pc-past-symbol.test
+76-0llvm/test/tools/dsymutil/Inputs/subprogram-high-pc-past-symbol.s
+72-0llvm/test/tools/dsymutil/Inputs/subprogram-high-pc-past-symbol-dwarf2.s
+38-8llvm/include/llvm/DWARFLinker/AddressesMap.h
+34-2llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp
+24-6llvm/tools/dsymutil/DwarfLinkerForBinary.h
+332-163 files not shown
+371-209 files

LLVM/project 5f491a4llvm/include/llvm/ABI TargetInfo.h, llvm/lib/ABI CMakeLists.txt

[LLVMABI] Create a skeleton for AArch64 ABI handling (#216222)

This change adds the most basic implementation of llvm::abi::TargetInfo
for AArch64 targets and establishes a unit test for it.

There was no isolated testing for previous targets implemented in the
ABI library. They were only tested through clang. My plan with AArch64
is to create unit tests so that the library can be tested without
building the clang target, but also to have clang tests so that the
handling can be compared to clang's ABI handling as a meaningful point
of reference for correct behavior.

For this initial change, because no real handling is implemented yet, I
am not introducing the clang hook or any clang-based tests.

Assisted-by: Cursor / Grok 4.5 (test generation)
DeltaFile
+94-0llvm/unittests/ABI/AArch64TargetInfoTest.cpp
+41-0llvm/lib/ABI/Targets/AArch64.cpp
+10-0llvm/include/llvm/ABI/TargetInfo.h
+9-0llvm/unittests/ABI/CMakeLists.txt
+1-0llvm/unittests/CMakeLists.txt
+1-0llvm/lib/ABI/CMakeLists.txt
+156-06 files

LLVM/project 5aec94alldb/include/lldb/Symbol SymbolLocator.h, lldb/source/Core DynamicLoader.cpp

[lldb] Search for a corefile's images before loading any of them (#216431)

A userland or kernel corefile can list hundreds of images, and searching
for one can shell out to a symbol server or fetch over the network.
Searching for them one at a time is where loading such a corefile spends
its time.

Add a batch form of SymbolLocator::Locate that runs the searches on the
debugger's thread pool, gated on target.parallel-module-load. Results
come back in the order the requests were given, since that order decides
the Target's module order. Only the results are ordered, and anything a
search reports to the user arrives in whatever order the searches finish
in.

Only the plugin searches run concurrently, so a platform hook does not
have to be thread safe to take part, and reading a binary's UUID out of
memory stays on the calling thread.

Setting up a platform binary can replace the Target's platform and

    [5 lines not shown]
DeltaFile
+141-4lldb/unittests/Symbol/SymbolLocatorTest.cpp
+79-63lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+76-11lldb/source/Symbol/SymbolLocator.cpp
+34-20lldb/source/Core/DynamicLoader.cpp
+25-0lldb/test/API/macosx/lc-note/multiple-binary-corefile/TestMultipleBinaryCorefile.py
+19-0lldb/include/lldb/Symbol/SymbolLocator.h
+374-986 files

LLVM/project 9a592bdclang/docs/analyzer conf.py, libc/docs/_static copybutton.js

[clang][docs] Prototype Furo theme setup
DeltaFile
+140-0utils/docs/llvm_sphinx/_static/furo-common.css
+0-71llvm/docs/_static/custom.css
+0-56llvm/docs/_static/copybutton.js
+0-56libc/docs/_static/copybutton.js
+56-0utils/docs/llvm_sphinx/_static/copybutton.js
+10-34clang/docs/analyzer/conf.py
+206-2179 files not shown
+335-39215 files

LLVM/project af1ce4doffload/languages/kernel/src LanguageRuntime.cpp, offload/test/offloading/CUDA devicesync_streams.cu

add proper deviceSync
DeltaFile
+98-0offload/test/offloading/CUDA/devicesync_streams.cu
+97-0offload/test/offloading/HIP/devicesync_streams.hip
+19-5offload/languages/kernel/src/LanguageRuntime.cpp
+1-1offload/test/offloading/HIP/launch_tu.hip
+1-1offload/test/offloading/HIP/basic_launch_multi_arg.hip
+1-1offload/test/offloading/HIP/basic_launch_blocks_and_threads.hip
+217-87 files not shown
+224-1113 files

LLVM/project c1dbf96clang/docs Toolchain.md LanguageExtensions.md, clang/docs/analyzer checkers.rst

[clang][docs] Remove page-local contents directives
DeltaFile
+0-10clang/docs/DriverInternals.md
+0-4clang/include/clang/Basic/BuiltinsAMDGPUDocs.td
+0-4clang/docs/analyzer/checkers.rst
+0-4clang/docs/Toolchain.md
+0-4clang/docs/LanguageExtensions.md
+0-4clang/docs/FunctionEffectAnalysis.md
+0-3074 files not shown
+0-25080 files

LLVM/project 7a1dedeoffload/languages/kernel/include LanguageUtils.h, offload/languages/kernel/src LanguageLaunch.cpp LanguageRuntime.cpp

add blocking semantics to LaunchKernel and Memcpy
DeltaFile
+131-0offload/test/offloading/CUDA/blocking_stream_semantics.cu
+125-0offload/test/offloading/HIP/blocking_stream_semantics.hip
+50-4offload/languages/kernel/include/LanguageUtils.h
+20-5offload/languages/kernel/src/LanguageRuntime.cpp
+17-3offload/languages/kernel/src/LanguageLaunch.cpp
+4-2offload/test/offloading/HIP/stream_api.hip
+347-143 files not shown
+355-179 files

LLVM/project db315b5lldb/source/Plugins/ObjectFile/Mach-O ObjectFileMachO.cpp, lldb/source/Symbol SymbolLocator.cpp

Undo botched rebase (#216421)

When rebasing #215393, I accidentally pulled in the change for #215952.
I then later rebased the latter, leaving only the changes requested
during review. Undo this mess so I can land the two PRs correctly.
DeltaFile
+4-141lldb/unittests/Symbol/SymbolLocatorTest.cpp
+63-79lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+0-88llvm/test/tools/dsymutil/subprogram-high-pc-past-symbol.test
+11-76lldb/source/Symbol/SymbolLocator.cpp
+0-76llvm/test/tools/dsymutil/Inputs/subprogram-high-pc-past-symbol.s
+0-72llvm/test/tools/dsymutil/Inputs/subprogram-high-pc-past-symbol-dwarf2.s
+78-5329 files not shown
+118-74515 files

LLVM/project fbc0797llvm/include/llvm/Support Endian.h

[Support] Remove deprecated endian::byte_swap/read/write overloads (#216300)

These overloads took the endianness as a template parameter and were
deprecated in favour of the versions that take it as a function
argument. There are no remaining in-tree users, so drop them.

Co-authored-by: Claude <noreply at anthropic.com>
DeltaFile
+1-21llvm/include/llvm/Support/Endian.h
+1-211 files

LLVM/project b3601a3mlir/lib/TableGen Attribute.cpp, mlir/test/IR enum-attr-invalid.mlir

[MLIR][TableGen] Fix EnumAttr not recognized as enum in OpFormatGen (#189046)

`Attribute::isEnumAttr()` checked `isSubClassOf("EnumAttrInfo")`, but
the newer `EnumAttr` class (from `mlir/include/mlir/IR/EnumAttr.td`)
extends `AttrDef`, not `EnumAttrInfo`. This caused `canFormatEnumAttr`
in `OpFormatGen.cpp` to return `false` for `EnumAttr`-backed attributes,
forcing them to use the generic format path instead of the enum keyword
format path.

The fix has two parts:
1. Update `Attribute::isEnumAttr()` to also check
`isSubClassOf("EnumAttr")`.
2. Add `getEnumInfoRecord()` helper in `OpFormatGen.cpp` that, for
`EnumAttr`-based attributes, retrieves the `enum` sub-field (which is
the actual `EnumInfo` record) rather than the attribute def itself.
Update `canFormatEnumAttr`, `genEnumAttrParser`, and
`genEnumAttrPrinter` to use this helper.

Add a test to `op-format.td` verifying that an `EnumAttr`-wrapped enum

    [4 lines not shown]
DeltaFile
+74-0mlir/test/mlir-tblgen/op-format.td
+36-5mlir/tools/mlir-tblgen/OpFormatGen.cpp
+3-6mlir/test/IR/enum-attr-invalid.mlir
+3-1mlir/lib/TableGen/Attribute.cpp
+116-124 files

LLVM/project 120a8b7llvm/utils/gn/secondary/lldb/source/Target BUILD.gn

[gn build] Port 251ab4a3f2a2 (#216427)
DeltaFile
+1-0llvm/utils/gn/secondary/lldb/source/Target/BUILD.gn
+1-01 files

LLVM/project f6b1016clang-tools-extra/include-cleaner/lib AnalysisInternal.h HTMLReport.cpp, clang-tools-extra/include-cleaner/unittests WalkASTTest.cpp

[clang][include-cleaner] Support ObjC @selector expressions in WalkAST (#212564)

This change adds support for resolving Objective-C @selector expressions
to their corresponding method or property declarations.

A lazy secondary pass is introduced to map selectors to their
declarations (methods, property getters, and property setters) across
the translation unit. When the AST walker encounters an
ObjCSelectorExpr, it reports the matching declarations as ambiguous
references.
DeltaFile
+235-11clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp
+105-23clang-tools-extra/include-cleaner/lib/WalkAST.cpp
+22-23clang-tools-extra/include-cleaner/lib/HTMLReport.cpp
+22-23clang-tools-extra/include-cleaner/lib/Analysis.cpp
+12-11clang-tools-extra/include-cleaner/lib/AnalysisInternal.h
+396-915 files

LLVM/project 27e012bclang/docs ReleaseNotes.md, clang/include/clang/AST RecursiveASTVisitor.h

[clang] Fix RecursiveASTVisitor to traverse the exception parameter in ObjCAtCatchStmt. (#216125)

Ensures that the catch parameter declaration (the exception variable) in
an Objective-C @catch block is visited during AST traversal. Previously,
this declaration was skipped. A unit test has been added to verify the
fix.
DeltaFile
+10-3clang/test/SemaObjC/unguarded-availability.m
+8-0clang/unittests/Tooling/RecursiveASTVisitorTestDeclVisitor.cpp
+7-0clang/docs/ReleaseNotes.md
+5-1clang/include/clang/AST/RecursiveASTVisitor.h
+30-44 files

LLVM/project 901417ellvm/include/llvm/IR RuntimeLibcalls.td, llvm/test/CodeGen/AArch64 ldexp-f128.ll exp10-f128.ll

RuntimeLibcalls: Fix AArch64 wrongly typed long-double libcalls

Respect the triple's LongDoubleFormat.

AArch64SystemLibrary added the fp128-typed frexpl/ldexpl and exp10l without a
long-double-format guard, so triples where long double is IEEE double
(Darwin, Windows, Android) were emitting l suffixed calls with the wrong
type.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+24-0llvm/test/CodeGen/AArch64/frexp-f128.ll
+19-0llvm/test/CodeGen/AArch64/ldexp-f128.ll
+19-0llvm/test/CodeGen/AArch64/exp10-f128.ll
+12-2llvm/include/llvm/IR/RuntimeLibcalls.td
+74-24 files

LLVM/project 09e5c52llvm/include/llvm/IR RuntimeLibcalls.td, llvm/test/CodeGen/ARM ldexp.ll llvm.frexp.ll

RuntimeLibcalls: Stop improperly reporting fp128 long double calls on ARM (#215917)

32-bit ARM's long double is IEEE double, so l suffixed calls do not have
fp128 type. Additionally, the f128 typed / suffixed functions are not built in
glibc as __HAVE_FLOAT128 is defined to 0 in the arch config. Remove the 
testcases which emitted nonexistent or wrongly typed calls and replace with 
error tests.

Related: #44744

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>

---------

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
Co-authored-by: Paul Kirth <paulkirth at google.com>
DeltaFile
+6-49llvm/test/CodeGen/ARM/ldexp-fp128.ll
+1-52llvm/test/CodeGen/ARM/llvm.frexp.ll
+0-10llvm/test/CodeGen/ARM/ldexp.ll
+6-3llvm/include/llvm/IR/RuntimeLibcalls.td
+2-2llvm/test/CodeGen/Generic/fp128-exp10-libcall.ll
+15-1165 files

LLVM/project e89a2b2offload/languages/kernel/src LanguageRuntime.cpp, offload/test/offloading/CUDA devicesync_streams.cu

add proper deviceSync
DeltaFile
+98-0offload/test/offloading/CUDA/devicesync_streams.cu
+97-0offload/test/offloading/HIP/devicesync_streams.hip
+19-5offload/languages/kernel/src/LanguageRuntime.cpp
+1-1offload/test/offloading/HIP/launch_tu.hip
+1-1offload/test/offloading/HIP/basic_launch_multi_arg.hip
+1-1offload/test/offloading/HIP/basic_launch_blocks_and_threads.hip
+217-87 files not shown
+224-1113 files

LLVM/project 22c6fdfllvm/lib/Transforms/Scalar LoopFuse.cpp

[LoopFusion] Remove non-ascii character from comment [NFC] (#216413)
DeltaFile
+1-1llvm/lib/Transforms/Scalar/LoopFuse.cpp
+1-11 files

LLVM/project 5f84246lldb/test/API/macosx/deny-attach TestDenyAttach.py

[lldb] Run TestDenyAttach only with locally built debug server (#216399)

The PT_DENY_ATTACH handling is in debugserver, so a system debugserver
still reports lost connection. Added @skipIfOutOfTreeDebugserver
DeltaFile
+1-0lldb/test/API/macosx/deny-attach/TestDenyAttach.py
+1-01 files

LLVM/project 2c4ecfaclang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp, llvm/include/llvm/ABI TargetInfo.h

[ABI][CIR][NFC] Mark the last X86AVXABILevel in the enum (#216339)

CIR CallConvLowering keeps one classifier per AVX level, so it sizes an
array by the number of levels. It got that number as the current end of
the list plus one, which stops being the count the moment a level is
added after the current end. A runtime assert was necessary to guard the
index.

The enum now names its own last enumerator and CallConvLowering derives
the count from it.

Follow-up to review feedback deferred on #215118.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+2-2clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+1-0llvm/include/llvm/ABI/TargetInfo.h
+3-22 files

LLVM/project 9921c41libc/cmake/modules LLVMLibCTestRules.cmake

[libc] Fix link errors in some hermetic tests (#216406)

There is a dependency loop between the __libc__ and the
LibcHermeticTestSupport targets. If a compiler introduces a call to
`extern "C" memcpy` to some __libc__ function, then we need to link
LibcHermeticTestSupport to satisfy that. But the hermetic implementation
simply forwards to LIBC_NAMESPACE::memcpy, which is in the __libc__
target.

Linking the libc library twice is a simple though unsatisfying solution
to this problem. I'm working on a more principled fix, but that is going
to take a while longer, so I'm adding this in the mean time.
DeltaFile
+6-0libc/cmake/modules/LLVMLibCTestRules.cmake
+6-01 files

LLVM/project 9d59cb8clang/lib/CIR/CodeGen TargetInfo.h TargetInfo.cpp, clang/test/CIR/CodeGen record-member-kinds-nyi.cpp record-member-kinds.c

[CIR] Mark record members as data, pad, or empty in CIRGen (#215175)

A record type still can't say whether it carries anything for argument
passing. The x86_64 classifier has to know that before it can drop an
empty class from a signature.

A field's mark comes from `isEmptyFieldForABI`, ported from
`isEmptyField` in `ABIInfoImpl.cpp`. Taking the ABI predicate rather
than the layout one is what gets C right. Given `struct E {}`, a struct
holding one `E` is empty for the ABI in C but not in C++.

An assert on every record checks the marks against
`isEmptyRecordForABI`, so the existing `-fclangir` tests exercise them.

One case is now NYI. A `[[no_unique_address]]` field that
`isEmptyFieldForLayout` drops from the layout can still hold ABI data.
With the field gone there is no member left to mark, so CIRGen says so
rather than emit a record that understates what it holds.


    [4 lines not shown]
DeltaFile
+153-0clang/test/CIR/CodeGen/record-member-kinds.cpp
+92-13clang/lib/CIR/CodeGen/CIRGenRecordLayoutBuilder.cpp
+105-0clang/test/CIR/CodeGen/record-member-kinds.c
+56-0clang/lib/CIR/CodeGen/TargetInfo.cpp
+14-0clang/test/CIR/CodeGen/record-member-kinds-nyi.cpp
+12-0clang/lib/CIR/CodeGen/TargetInfo.h
+432-133 files not shown
+437-189 files

LLVM/project 64c61f9lldb/source/ValueObject ValueObject.cpp, lldb/unittests/ValueObject CMakeLists.txt GetPointeeDataTest.cpp

[lldb] Read `read-only` pointee data from the object file in `GetPointeeData` (#213372)

## Summary 

`ValueObject::GetPointeeData` reads multi-element pointee data through
`eAddressTypeLoad` by calling
`Target::ReadMemory` with `force_live_memory=true`. That forces the read
to
come from live process memory and skips the object file's read-only
section cache.

For data that lives in a read-only section (e.g. a `const char *` or
**array**
in `.rodata`), the correct bytes may only be available from the object
file rather than the live process image. This is common with core files,
where read-only, file-backed pages are frequently not dumped: reading
such a pointee then returns stale or empty data (for example, a
`const char *` summary rendering as **""** instead of its real
contents).

    [52 lines not shown]
DeltaFile
+195-0lldb/unittests/ValueObject/GetPointeeDataTest.cpp
+13-0lldb/source/ValueObject/ValueObject.cpp
+9-0lldb/unittests/ValueObject/CMakeLists.txt
+217-03 files

LLVM/project 251ab4alldb/source/API SBBreakpointName.cpp SBBreakpointLocation.cpp, lldb/unittests/Target TargetAPIMutexTest.cpp

[lldb] Wrap Target::GetAPIMutex() into a Lockable handle (NFC) (#212872)

While implementing #208242, we realized that we needed a Lockable
wrapper for the Target's API Mutex that could skip the locking on
re-entrant threads (when a command (i.e `bt`) triggers scripted
extension (i.e `ScriptedFrameProvider`) that uses SBAPI (i.e.
`SBFrame`), and still behave as a normal mutex otherwise. However, since
`Target::GetAPIMutex()` returns a `std::recursive_mutex&`, that can't
represent "no synchronization at all".

This is why this PR introduces `TargetAPILock`, a small Lockable type
that behaves exactly like `std::recursive_mutex`, with no RAII of its
own, so callers can wrap it in `std::lock_guard`/`std::unique_lock` like
they would any other Lockable.

A `TargetAPILock` is bound to a `Target` rather than to a specific
mutex, so `lock()`/`try_lock()` resolve which real mutex to use fresh on
every call instead of caching one resolution for the handle's lifetime.
`unlock()` replays whatever the matching `lock()`/`try_lock()` resolved

    [18 lines not shown]
DeltaFile
+195-0lldb/unittests/Target/TargetAPIMutexTest.cpp
+86-87lldb/source/API/SBProcess.cpp
+74-74lldb/source/API/SBBreakpoint.cpp
+74-37lldb/source/API/SBTarget.cpp
+52-52lldb/source/API/SBBreakpointLocation.cpp
+48-50lldb/source/API/SBBreakpointName.cpp
+529-30024 files not shown
+815-40530 files