LLVM/project a65b2f7 — llvm/include/llvm/CodeGen TargetLowering.h, llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp LegalizeVectorOps.cpp

SelectionDAG: Get libcall info from analysis, not TargetLowering

TargetLowering's copy of the libcall info will eventually be
removed. Use the LibcallLoweringInfo analysis from SelectionDAG
instead.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+11-4llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+1-4llvm/include/llvm/CodeGen/TargetLowering.h
+2-1llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+1-1llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+1-1llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
+16-115 files

LLVM/project b18fccb — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 revec-buildvector-load.ll

[SLP][REVEC]Use scalar lane type for buildvector lists

The REVEC lane type of an insertelement is its vector type, so the
"no actual vectorization" check skipped every VF and the buildvector
of loads was never vectorized.

Fixes #239546

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/239825
DeltaFile
+1-23llvm/test/Transforms/SLPVectorizer/X86/revec-buildvector-load.ll
+3-1llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+4-242 files

LLVM/project 43041a7 — clang/include/clang/Sema Sema.h, clang/lib/CodeGen MicrosoftCXXABI.cpp

[clang][ms] Add support for optional function argument in #pragma init_seg (#203769)

This PR adds support for function argument in #pragma init_seg as
defined by the Microsoft docs[1]

Closes #148938 

[1] https://learn.microsoft.com/en-us/cpp/preprocessor/init-seg

---------

Co-authored-by: Tymofii Shchetilin <tymofii.shchetilin at gmail.com>
Co-authored-by: Reid Kleckner <rkleckner at nvidia.com>
DeltaFile
+33-3clang/lib/Sema/SemaAttr.cpp
+22-0clang/test/CodeGenCXX/pragma-init_seg-func.cpp
+15-2clang/lib/Parse/ParsePragma.cpp
+10-4clang/include/clang/Sema/Sema.h
+13-0clang/lib/CodeGen/MicrosoftCXXABI.cpp
+10-1clang/test/SemaCXX/pragma-init_seg.cpp
+103-104 files not shown
+117-1710 files

LLVM/project afc5595 — llvm/test/Assembler ptrtoaddr-invalid-constexpr.ll initializes-attribute-invalid.ll, llvm/test/Bitcode blockaddress-addrspace.ll

test: Use -disable-output instead of -o /dev/null for IR tools

opt, llvm-as and llvm-dis can skip writing their output with
-disable-output rather than writing to /dev/null. Convert by script,
dropping -o /dev/null where -disable-output was already used. Skip a
few other special cases significant to the output, and XFAILed tests.

This appears to be very slightly faster (at best up to 1%).

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+18-18llvm/test/Bitcode/blockaddress-addrspace.ll
+18-18llvm/test/Assembler/nofpclass-invalid.ll
+12-12llvm/test/Assembler/dll-storage-class-local-linkage.ll
+10-10llvm/test/Other/ChangeTesters/exec-on-ir-change.ll
+10-10llvm/test/Assembler/ptrtoaddr-invalid-constexpr.ll
+10-10llvm/test/Assembler/initializes-attribute-invalid.ll
+78-78298 files not shown
+473-473304 files

LLVM/project 99f1c53 — llvm/lib/Target/ARC/MCTargetDesc ARCMCTargetDesc.cpp, llvm/lib/Target/BPF/MCTargetDesc BPFMCTargetDesc.cpp

BPF, Lanai, ARC, M68k: Register null target streamer

Since 44a08dc732c5, llc -filetype=null is a fatal error on targets
that do not register a null target streamer. These targets do not need
a target specific streamer for the null case, so register the base
MCTargetStreamer.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+7-0llvm/lib/Target/M68k/MCTargetDesc/M68kMCTargetDesc.cpp
+7-0llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.cpp
+7-0llvm/lib/Target/BPF/MCTargetDesc/BPFMCTargetDesc.cpp
+7-0llvm/lib/Target/ARC/MCTargetDesc/ARCMCTargetDesc.cpp
+5-0llvm/test/CodeGen/ARC/null-target-streamer.ll
+5-0llvm/test/CodeGen/BPF/null-target-streamer.ll
+38-02 files not shown
+48-08 files

LLVM/project 56987b4 — llvm/test/Transforms/MemProfContextDisambiguation trimmed-context-sibling-inlined.ll

[MemProf] Test cloning of a trimmed cold callsite next to a sibling callsite with a cloned caller (#239790)

Adds a test for a shape seen in realworld: a caller with two callsites
into the same allocation wrapper, where one callsite is cold on every
path and its context is trimmed at an interior frame, while the sibling
callsite is cold on only one path (so the caller itself is cloned), and
the frame the trimmed context ends at is a real function on one path and
inlined into the caller's caller on the other.

The trimmed context sits on its own callsite node, so it is cloned cold
in every copy of the caller regardless of the inlining above it. A
second RUN drops the callsite metadata of the trimmed callsite, as a
profile that lost the out-of-line callsite record for that call would,
and checks the resulting loss: the call keeps the original callee in
every copy of the caller and the allocation stays ambiguous.
DeltaFile
+125-0llvm/test/Transforms/MemProfContextDisambiguation/trimmed-context-sibling-inlined.ll
+125-01 files

LLVM/project e0eede2 — llvm/lib/Target/NVPTX NVPTXCodeGenPassBuilder.cpp NVPTXTargetMachine.cpp

[NVPTX] Declare command line options in TableGen (#238141)

Move NVPTX's cl::opt and cl::list options into NVPTXOptions.td.
NVPTXSubtarget.h declares the generated options struct, and
LLVMInitializeNVPTXTarget registers its parser. Consumers access options
through target/subtarget getCLOpts() or LLVMContext.

Preserve getNumOccurrences()-based override semantics using
std::optional fields and BoolOrDefault for booleans.

Migrate nvvm-reflect-add to ListField, which supports repeated
occurrences and splits comma-separated entries.

Aided by GPT 6.
DeltaFile
+116-0llvm/lib/Target/NVPTX/NVPTXOptions.td
+10-57llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+6-30llvm/lib/Target/NVPTX/NVPTXCodeGenPassBuilder.cpp
+10-26llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+13-23llvm/lib/Target/NVPTX/NVVMReflect.cpp
+15-21llvm/lib/Target/NVPTX/NVPTXCtorDtorLowering.cpp
+170-15712 files not shown
+280-22218 files

LLVM/project e78ab38 — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination sadd-with-overflow.ll minmax.ll

[ConstraintElim] Split signed min/max across their operands when checking a compare

The existing constraint systems only record the bounds that hold for both
operands of a min/max (smax(a, b) >= a and >= b, smin(a, b) <= a and <= b). The
other direction is a disjunction, which cannot be recorded as a fact. When a
compare of signed decompositions involves a min/max result, split it into its
operands: the decomposition is monotonic in that result, so it is the max or min
of its values on each side, and the relation holds for all or for either side
respectively.

https://alive2.llvm.org/ce/z/zsGkJ-
DeltaFile
+366-3llvm/test/Transforms/ConstraintElimination/minmax.ll
+111-0llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+4-8llvm/test/Transforms/ConstraintElimination/sadd-with-overflow.ll
+481-113 files

LLVM/project 985db36 — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination ssub-with-overflow.ll sadd-with-overflow.ll

[ConstraintElim] Prove sadd/ssub.with.overflow cannot overflow from the exact sum

Decompose the operands and show that the sum lies in the range of the type. This
handles patterns like A + (B - A), as well as sums involving signed min/max
results, which are split across their respective operands using monotonicity
(for example start + smax(end - start - 1, 0) <= end).

https://alive2.llvm.org/ce/z/ze8LCk
DeltaFile
+634-0llvm/test/Transforms/ConstraintElimination/sadd-with-overflow.ll
+159-3llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+100-0llvm/test/Transforms/ConstraintElimination/ssub-with-overflow.ll
+893-33 files

LLVM/project eb5268b — llvm/lib/Target/AMDGPU SIInstrInfo.cpp SIFoldOperands.cpp

AMDGPU: Remove clearKillFlags calls (#239806)

Kill flags on physical registers here are either never set by the
time this code runs or are on reserved or constant registers where
they carry no information. Remove the clearKillFlags calls.

SIPeepholeSDWA was adding a kill flag on the virtual register it ties
to the preserved destination and relying on the clear to remove it.
Stop adding it.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+1-18llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp
+0-13llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+0-9llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+1-403 files

LLVM/project e1b909c — llvm/lib/CodeGen MachineSink.cpp

MachineSink: Remove clearKillFlags calls (#239805)

Kill flags on physical registers here are either never set by the
time this code runs or are on reserved or constant registers where
they carry no information. Remove the clearKillFlags calls.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-20llvm/lib/CodeGen/MachineSink.cpp
+0-201 files

LLVM/project 8f2383f — mlir/lib/Dialect/OpenACC/Transforms ACCCGToGPU.cpp, mlir/test/Dialect/OpenACC acc-cg-to-gpu-global-memory-storage-remark.mlir

[mlir][openacc] report variables using global memory storage (#239814)

`ACCCGToGPU` right now only reports thread local memory and shared
memory storage it picks for a private variable, but says nothing when it
falls back to use global memory.

This change collects these variable names that are placed in global
memory and emits them under the remark `GPU global memory used for ...`

Variable names are collected from the discardable attribute
`acc.var_name` from the `acc.privatize` op, and skipped when the
attribute can't be found.
DeltaFile
+109-0mlir/test/Dialect/OpenACC/acc-cg-to-gpu-global-memory-storage-remark.mlir
+24-0mlir/lib/Dialect/OpenACC/Transforms/ACCCGToGPU.cpp
+133-02 files

LLVM/project 27471de — lldb/source/Plugins/Process/gdb-remote GDBRemoteCommunicationServerLLGS.cpp, lldb/test/API/accelerator/mock TestMockAcceleratorActions.py

[lldb-server] Notify the accelerator plugins when the native process exits. (#237424)

Notify the accelerator plugins when the native process exits.


Added the testing using the MockAccelerator Plugin.
DeltaFile
+20-2lldb/test/API/accelerator/mock/TestMockAcceleratorActions.py
+18-0lldb/tools/lldb-server/Plugins/Accelerator/Mock/LLDBServerMockAcceleratorPlugin.cpp
+5-3lldb/tools/lldb-server/Plugins/Accelerator/Mock/ProcessMockAccelerator.h
+6-1lldb/tools/lldb-server/Plugins/Accelerator/Mock/ProcessMockAccelerator.cpp
+5-0lldb/tools/lldb-server/Plugins/Accelerator/Mock/LLDBServerMockAcceleratorPlugin.h
+5-0lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
+59-62 files not shown
+64-68 files

LLVM/project b76a8f9 — llvm/test/Transforms/SLPVectorizer/X86 revec-buildvector-load.ll

[SLP][NFC]Add a test for missed revec vectorization, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/239819
DeltaFile
+56-0llvm/test/Transforms/SLPVectorizer/X86/revec-buildvector-load.ll
+56-01 files

LLVM/project e531c63 — llvm/lib/MC MCNullStreamer.cpp, llvm/test/CodeGen/PowerPC aix-null-streamer.ll

MC: Handle XCOFF directives in the null streamer

MCNullStreamer only overrode emitXCOFFSymbolLinkageWithVisibility, so
llc -filetype=null on AIX hit the llvm_unreachable in the MCStreamer
base implementations of .lcomm, .ref, .except and .info emission.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+22-0llvm/test/CodeGen/PowerPC/aix-null-streamer.ll
+9-0llvm/lib/MC/MCNullStreamer.cpp
+31-02 files

LLVM/project 930ae6c — clang/cmake/caches Fuchsia-stage2.cmake Fuchsia.cmake

[cmake] Use MultiThreaded MSVC runtime library for Windows runtimes in Fuchsia caches (#238240)

Configure Windows runtimes with CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
to match the rest of the toolchain build.
DeltaFile
+1-1clang/cmake/caches/Fuchsia.cmake
+1-0clang/cmake/caches/Fuchsia-stage2.cmake
+2-12 files

LLVM/project d5ef5ff — llvm/test/Transforms/SLPVectorizer/X86 revec-buildvector-load.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+56-0llvm/test/Transforms/SLPVectorizer/X86/revec-buildvector-load.ll
+56-01 files

LLVM/project 341fe45 — llvm/lib/Target/X86 X86OptimizeLEAs.cpp

X86: Remove clearKillFlags calls on virtual registers (#239802)

Kill flags are no longer permitted on virtual registers, so clearing
them is a no-op. Remove the calls where the register can only be
virtual.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-6llvm/lib/Target/X86/X86OptimizeLEAs.cpp
+0-61 files

LLVM/project e476ea6 — lldb/source/Plugins/ExpressionParser/Clang ClangExpressionSourceCode.cpp, lldb/source/Plugins/Process/scripted ScriptedFrame.cpp

[lldb] Fix a crash evaluating expressions at a scripted frame without variables (#239795)

`ScriptedFrame.get_variables()` returns `None` by default, which left
`ScriptedFrame::GetInScopeVariableList()` returning a null list.
`ClangExpressionSourceCode::AddLocalVariableDecls()` dereferenced that
list, so any expression evaluated at such a frame crashed LLDB.

This patch makes `ScriptedFrame` return an empty list when its interface
has no variables. Since `GetInScopeVariableList()` is virtual and other
subclasses could still return null, it also makes
`AddLocalVariableDecls()` handle a null list.

rdar://187386314

Assisted-by: Claude

Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+27-0lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
+18-0lldb/test/API/functionalities/scripted_frame_provider/test_frame_providers.py
+2-1lldb/source/Plugins/Process/scripted/ScriptedFrame.cpp
+3-0lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionSourceCode.cpp
+50-14 files

LLVM/project c49f5ff — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination sadd-with-overflow.ll minmax.ll

[ConstraintElim] Split signed min/max across their operands when checking a compare

The existing constraint systems only record the bounds that hold for both
operands of a min/max (smax(a, b) >= a and >= b, smin(a, b) <= a and <= b). The
other direction is a disjunction, which cannot be recorded as a fact. When a
compare of signed decompositions involves a min/max result, split it into its
operands: the decomposition is monotonic in that result, so it is the max or min
of its values on each side, and the relation holds for all or for either side
respectively.

https://alive2.llvm.org/ce/z/zsGkJ-
DeltaFile
+366-3llvm/test/Transforms/ConstraintElimination/minmax.ll
+111-0llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+4-8llvm/test/Transforms/ConstraintElimination/sadd-with-overflow.ll
+481-113 files

LLVM/project 7026e36 — llvm/test/Transforms/ConstraintElimination sadd-with-overflow.ll

[ConstraintElim] A signed sum of operands with opposite signs cannot wrap

If one operand is known non-negative and the other non-positive, the signed
sum is between them, so it cannot overflow.

https://alive2.llvm.org/ce/z/ZF5Yqr
DeltaFile
+97-2llvm/test/Transforms/ConstraintElimination/sadd-with-overflow.ll
+97-21 files

LLVM/project 0370b7d — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination ssub-with-overflow.ll sadd-with-overflow.ll

[ConstraintElim] Prove sadd/ssub.with.overflow cannot overflow from the exact sum

Decompose the operands and show that the sum lies in the range of the type. This
handles patterns like A + (B - A), as well as sums involving signed min/max
results, which are split across their respective operands using monotonicity
(for example start + smax(end - start - 1, 0) <= end).

https://alive2.llvm.org/ce/z/ze8LCk
DeltaFile
+539-0llvm/test/Transforms/ConstraintElimination/sadd-with-overflow.ll
+159-3llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+100-0llvm/test/Transforms/ConstraintElimination/ssub-with-overflow.ll
+798-33 files

LLVM/project f2c0606 — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination add-nsw.ll sadd-with-overflow.ll

[ConstraintElim] A signed sum of operands with opposite signs cannot wrap

If one operand is known non-negative and the other non-positive, the signed
sum is between them, so it cannot overflow.

https://alive2.llvm.org/ce/z/ZF5Yqr
DeltaFile
+62-0llvm/test/Transforms/ConstraintElimination/sadd-with-overflow.ll
+19-0llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+3-6llvm/test/Transforms/ConstraintElimination/add-nsw.ll
+84-63 files

LLVM/project 7a0e6af — llvm/lib/Transforms/Scalar ConstraintElimination.cpp

drop stray include
DeltaFile
+0-1llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+0-11 files

LLVM/project 6435e37 — clang/lib/Headers/hlsl hlsl_compat_overloads.h, clang/test/CodeGenHLSL/builtins isnan_mat-overloads.hlsl isinf_mat-overloads.hlsl

[HLSL] Add macro for float->bool double overloads (#233024)

New macro captures the pattern for isfinite(), isinf(), and isnan().
Expected warnings now include template arguments, consistent with other
intrinsics' double overload deprecation warnings.

Assisted-by: Claude Sonnet 4
DeltaFile
+18-114clang/lib/Headers/hlsl/hlsl_compat_overloads.h
+15-15clang/test/CodeGenHLSL/builtins/isnan_mat-overloads.hlsl
+15-15clang/test/CodeGenHLSL/builtins/isinf_mat-overloads.hlsl
+15-15clang/test/CodeGenHLSL/builtins/isfinite_mat-overloads.hlsl
+63-1594 files

LLVM/project 7c465e3 — llvm/lib/Target/RISCV RISCVVectorPeephole.cpp RISCVOptWInstrs.cpp

RISCV: Remove clearKillFlags calls on virtual registers (#239786)

Kill flags are no longer permitted on virtual registers, so clearing
them is a no-op. Remove the calls where the register can only be
virtual.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-6llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
+0-1llvm/lib/Target/RISCV/RISCVVectorPeephole.cpp
+0-1llvm/lib/Target/RISCV/RISCVOptWInstrs.cpp
+0-83 files

LLVM/project 3f92ffc — llvm/include/llvm/IR RuntimeLibcallsImpl.td RuntimeLibcalls.td, llvm/lib/IR RuntimeLibcalls.cpp

RuntimeLibcalls: Add signatures for the Darwin sincos stret functions

__sincos_stret and __sincosf_stret return a struct holding the 2
results. Describe the C struct return type in the signature table and
lower for the target ABI. This is a vector on x86-64 for float,
through memory on x86-32 and APCS ARM, and as a struct elsewhere.
This replaces the special case that built the types in C++. Ideally we
would be using the ABI library, but it's incomplete for most targets
and it requires some relayering to use here.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+57-45llvm/lib/IR/RuntimeLibcalls.cpp
+10-0llvm/include/llvm/IR/RuntimeLibcalls.h
+3-3llvm/include/llvm/IR/RuntimeLibcalls.td
+3-0llvm/include/llvm/IR/RuntimeLibcallsImpl.td
+2-0llvm/test/TableGen/RuntimeLibcallEmitter.td
+75-485 files

LLVM/project 31f34c8 — llvm/lib/IR RuntimeLibcalls.cpp, llvm/lib/Transforms/Utils DeclareRuntimeLibcalls.cpp

RuntimeLibcalls: Describe the stack guard and safestack variables (#239422)

The stack guard and the unsafe stack pointer are global variables, not
functions. Describe them as variables in the signature table, with the
unsafe stack pointer thread local in the alloca address space, and
declare them as globals.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+16-16llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+15-15llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+12-12llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+15-1llvm/lib/IR/RuntimeLibcalls.cpp
+13-0llvm/lib/Transforms/Utils/DeclareRuntimeLibcalls.cpp
+6-6llvm/test/Transforms/Util/DeclareRuntimeLibcalls/riscv.ll
+77-5014 files not shown
+146-9420 files

LLVM/project d6cbab8 — llvm/lib/CodeGen MLRegAllocEvictAdvisor.cpp, llvm/test/CodeGen/MLRegAlloc unspillable-use-def-density.ll

Revert "[MLGO] Do not evict live ranges with the same cascade number … (#239799)

…(#230468)"

This reverts commit 612fdc5a383cbdf97ce9e6e8f4177f54ead6f18a.

With

https://github.com/google/ml-compiler-opt/releases/tag/regalloc-evict-v1.1,
this patch causes us to run out of registers on x86 when compiling
certain functions:
```bash
clang -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -O3 -disable-llvm-passes -mllvm -regalloc-enable-advisor=release -o /dev/null %s
```

```llvm
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"


    [74 lines not shown]
DeltaFile
+8-5llvm/lib/CodeGen/MLRegAllocEvictAdvisor.cpp
+0-9llvm/test/CodeGen/MLRegAlloc/unspillable-use-def-density.ll
+8-142 files

LLVM/project e445a06 — lldb/source/Plugins/DynamicLoader/AcceleratorGDBRemote DynamicLoaderAcceleratorGDBRemote.h DynamicLoaderAcceleratorGDBRemote.cpp, lldb/test/API/accelerator/dynamic_loader TestAcceleratorDynamicLoader.py

[lldb] Add accelerator dynamic loader over gdb-remote (#217393)

## Summary

This is the second change adding dynamic-loader support for
accelerators; the protocol foundation landed in #214564. It uses the
client-side `jLLDBSettings` support from #229179, depends on the
server-side support in #237356, and uses the CPU/accelerator
target-group relationship from #229180 and #232906.

- add a generic accelerator dynamic loader using `ProcessGDBRemote`
- let an accelerator GDB server select the LLDB dynamic-loader plugin
through `dyld_plugin_name`
- route `jAcceleratorPluginGetDynamicLoaderLibraryInfo` over either the
accelerator connection or the native connection, as selected by the
server
- identify the server-side accelerator plugin with
`accelerator_plugin_name` when forwarding over the native connection
- load modules from files, offload bundles, or images held in

    [19 lines not shown]
DeltaFile
+218-0lldb/source/Plugins/DynamicLoader/AcceleratorGDBRemote/DynamicLoaderAcceleratorGDBRemote.cpp
+207-0lldb/test/API/accelerator/dynamic_loader/TestAcceleratorDynamicLoader.py
+161-0lldb/test/API/accelerator/mock/TestMockAcceleratorDynamicLoader.py
+46-0lldb/source/Plugins/DynamicLoader/AcceleratorGDBRemote/DynamicLoaderAcceleratorGDBRemote.h
+36-7lldb/tools/lldb-server/Plugins/Accelerator/Mock/LLDBServerMockAcceleratorPlugin.cpp
+28-7lldb/tools/lldb-server/Plugins/Accelerator/Mock/ProcessMockAccelerator.cpp
+696-1413 files not shown
+872-2019 files