LLVM/project 0ca8840 —

Rebase

Created using spr 1.3.7
DeltaFile
+0-00 files

LLVM/project cb69f15 — compiler-rt/lib/tsan/rtl tsan_rtl_report.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+1-11 files

LLVM/project a74331b — compiler-rt/lib/tsan/rtl tsan_rtl_report.cpp

Fix clang-format

Created using spr 1.3.7
DeltaFile
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+1-11 files

LLVM/project 8143db6 — compiler-rt/lib/tsan/go tsan_go.cpp, compiler-rt/lib/tsan/rtl tsan_rtl_report.cpp tsan_rtl.h

[NFC][TSan] Make Context::nreported atomic (#228602)

Make Context::nreported an atomic_uint32_t so that Finalize and
__tsan_report_count can read it without relying on report_mtx.

Assisted-by: Gemini
DeltaFile
+3-3compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+1-2compiler-rt/lib/tsan/go/tsan_go.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl.h
+6-74 files

LLVM/project f597fdb — compiler-rt/lib/tsan/rtl tsan_rtl_report.cpp

Fix clang-format

Created using spr 1.3.7
DeltaFile
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+1-11 files

LLVM/project 3f5d498 — cross-project-tests/debuginfo-tests/dexter/dex/debugger DAP.py

fixup! [Dexter] Add timeout and finishing guard for startup
DeltaFile
+6-2cross-project-tests/debuginfo-tests/dexter/dex/debugger/DAP.py
+6-21 files

LLVM/project 5b0641b — mlir .clang-format

[mlir] Set WrapNamespaceBodyWithEmptyLines: Never (#221421)

MLIR predominantly writes namespace bodies without a wrapping empty
line: in mlir/lib and mlir/include 35% of bodies start with an empty
line and 32% end with one.

```
namespace ns { // no empty line below
struct A {
};
} // namespace ns  // no empty live above
```

New code drifts the other way, partly related to LLM preference. Pin the
majority style using a clang-format 20 feature to stop further damage.
DeltaFile
+1-0mlir/.clang-format
+1-01 files

LLVM/project 9224437 — flang/docs FlangDriver.md, flang/include/flang/Optimizer/Passes Pipelines.h

[flang] Add a pass-pipeline config callback hook for plugins

The HLFIR-to-FIR pipeline extension points live on MLIRToLLVMPassPipelineConfig,
which the frontend builds as a local of CodeGenAction, out of reach of a plugin.

Add a process-global registry of callbacks that run on the config before the
pipeline is built. A plugin registers one from a static initializer, so it is in
place before any compilation begins, as FrontendPluginRegistry does for plugin
actions. Both code generation entry points invoke the callbacks, lowerHLFIRToFIR
for -emit-fir and generateLLVMIR for -emit-llvm/-emit-obj, and are mutually
exclusive for a given compilation, so a plugin sees the same behaviour whichever
output was asked for.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+79-1flang/unittests/Optimizer/HLFIRExtensionPointsTest.cpp
+30-0flang/docs/FlangDriver.md
+17-0flang/lib/Optimizer/Passes/Pipelines.cpp
+11-0flang/include/flang/Optimizer/Passes/Pipelines.h
+5-0flang/lib/Frontend/FrontendActions.cpp
+142-15 files

LLVM/project 4ebf187 — flang/docs FlangDriver.md, flang/include/flang/Optimizer/Passes Pipelines.h

[flang] Address review comments on the pipeline config callbacks

- Adopt the suggested doc comment wording and name the callback type
  (PassPipelineConfigCallback) instead of spelling std::function / auto.
- Run the callbacks in generateLLVMIR once the config is fully set up, so a
  plugin sees the OpenMP/OpenACC, vscale and other settings as on -emit-fir.
- Document that -emit-fir only reaches the HLFIR extension points, that
  callbacks must not register callbacks, and that bbc/tco/fir-opt do not run
  the registry.
- Tests: drop the redundant epRan flag and use a plain global recorder.

Assisted-by: Claude Code (Opus 5.5)
DeltaFile
+11-16flang/unittests/Optimizer/HLFIRExtensionPointsTest.cpp
+10-5flang/include/flang/Optimizer/Passes/Pipelines.h
+8-4flang/docs/FlangDriver.md
+5-6flang/lib/Optimizer/Passes/Pipelines.cpp
+4-3flang/lib/Frontend/FrontendActions.cpp
+38-345 files

LLVM/project 23bccf4 — compiler-rt/lib/tsan/rtl tsan_rtl_thread.cpp tsan_interceptors_posix.cpp, compiler-rt/test/tsan signal_abort_on_error.cpp

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+24-37compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+28-33compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+41-0compiler-rt/test/tsan/signal_abort_on_error.cpp
+10-15compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+8-13compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
+7-12compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+118-1105 files not shown
+135-14011 files

LLVM/project 8340e07 — compiler-rt/lib/tsan/rtl tsan_rtl_thread.cpp tsan_interceptors_posix.cpp, compiler-rt/test/tsan signal_abort_on_error.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+23-54compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+30-40compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+41-0compiler-rt/test/tsan/signal_abort_on_error.cpp
+10-15compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+7-17compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
+6-16compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+117-1425 files not shown
+131-17911 files

LLVM/project f8be54b — mlir/lib/Dialect/Bufferization/Transforms BufferOptimizations.cpp, mlir/test/Dialect/Bufferization/Transforms buffer-hoisting.mlir buffer-loop-hoisting.mlir

[mlir][bufferization] Fix placement walk crashes and invalid captures (#228050)

`findPlacementBlock`, which is shared by `buffer-hoisting` and
`buffer-loop-hoisting`, can move an allocation outside the operation
used to build the liveness analysis. For example, when
`transform.bufferization.buffer_loop_hoisting` targets a `scf.while`,
moving the allocation into the enclosing function block causes the
liveness lookup to crash.

The walk can also cross an `IsIsolatedFromAbove` operation and introduce
an illegal capture, or reach an unreachable enclosing block and
dereference a missing dominator node. The initial reachability check on
the allocation's block doesn't cover that second case.

This PR keeps allocations inside the analysis target and isolated
regions, and stops the walk before querying a dominator node for an
unreachable block. Movement between blocks within the same region
remains allowed.


    [15 lines not shown]
DeltaFile
+53-0mlir/test/Dialect/Bufferization/Transforms/transform-ops.mlir
+24-0mlir/test/Dialect/Bufferization/Transforms/buffer-loop-hoisting.mlir
+17-0mlir/test/Dialect/Bufferization/Transforms/buffer-hoisting.mlir
+10-6mlir/lib/Dialect/Bufferization/Transforms/BufferOptimizations.cpp
+104-64 files

LLVM/project 8081984 — cross-project-tests/debuginfo-tests/dexter/dex/debugger DAP.py

[Dexter] Add timeout and finishing guard for startup

A process can be terminated without start. In that case, the DAP.py
will spin over there and causes test loops forever. Add a timeout and
finish guard in here to at least stop the test.
DeltaFile
+6-0cross-project-tests/debuginfo-tests/dexter/dex/debugger/DAP.py
+6-01 files

LLVM/project e8b9c19 — llvm/lib/Target/RISCV RISCVFrameLowering.cpp, llvm/test/CodeGen/RISCV pr228084.ll

[RISCV] Don't truncate MaxAlignment to int when realigning the stack (#228225)

emitPrologue casts MaxAlignment to int before checking whether the mask
fits in an ANDI immediate. With an alloca of align 4294967296 the cast
gives 0, the isInt<12> check passes, and we emit `andi sp, sp, 0`.
Casting to int64_t instead makes this case use the srli/slli sequence.

This is the patch Mitch Briles posted on the issue, but with int64_t
instead of long, since long is only 32 bits on Windows hosts.

The test is RV64 only. On RV32 this alignment already fails with "Should
only materialize 32-bit constants for RV32" while setting up the frame
(before and after this change), so it couldn't go into
stack-realignment.ll alongside the RV32 run lines.

Fixes #228084

Co-authored-by: Mitch Briles <mitchbriles at gmail.com>
DeltaFile
+39-0llvm/test/CodeGen/RISCV/pr228084.ll
+2-2llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
+41-22 files

LLVM/project 8a0b352 — llvm/include/llvm/ExecutionEngine/Orc BindCallControllerHandlerSPS.h Core.h, llvm/lib/ExecutionEngine/Orc MachOPlatform.cpp Core.cpp

[ORC] Replace JIT-dispatch handlers with call-controller handlers (#228628)

This is the executor-to-controller counterpart to Proxy: where Proxy
provides a uniform way to call functions in the executor,
call-controller handlers provide a uniform way for the executor to call
handlers in the controller.

Handlers are now registered as CallControllerHandlerBindings, which
decouples ExecutionSession's handler registration from
SimplePackedSerialization. The new bindCallControllerHandlerSPS utility
makes it easy to introduce a new SPS handler with a one-liner, using
either a lambda:

  ES.registerCallControllerHandlers(
      JD, bindCallControllerHandlerSPS<int32_t(int32_t, int32_t)>(
              SymbolNameSpec::c("add_tag"),
              [](unique_function<void(int32_t)> Return,
                 int32_t X, int32_t Y) {
                Return(X + Y);

    [39 lines not shown]
DeltaFile
+137-7llvm/unittests/ExecutionEngine/Orc/ExecutionSessionWrapperFunctionCallsTest.cpp
+68-61llvm/include/llvm/ExecutionEngine/Orc/Core.h
+44-26llvm/lib/ExecutionEngine/Orc/Core.cpp
+60-0llvm/include/llvm/ExecutionEngine/Orc/BindCallControllerHandlerSPS.h
+10-12llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp
+10-9llvm/unittests/ExecutionEngine/Orc/InProcessEPCTest.cpp
+329-1158 files not shown
+366-15214 files

LLVM/project adef76c — compiler-rt/lib/tsan/rtl tsan_rtl_thread.cpp tsan_mman.cpp, compiler-rt/test/tsan signal_abort_on_error.cpp

Convert to cherry-pick

Created using spr 1.3.7
DeltaFile
+33-18compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+0-41compiler-rt/test/tsan/signal_abort_on_error.cpp
+12-7compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
+12-6compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+11-6compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+11-6compiler-rt/lib/tsan/rtl/tsan_mman.cpp
+79-841 files not shown
+90-907 files

LLVM/project 2429718 — compiler-rt/lib/tsan/rtl tsan_rtl_thread.cpp tsan_mman.cpp, compiler-rt/test/tsan signal_abort_on_error.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+33-18compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+0-41compiler-rt/test/tsan/signal_abort_on_error.cpp
+12-7compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
+12-6compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+11-6compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+11-6compiler-rt/lib/tsan/rtl/tsan_mman.cpp
+79-841 files not shown
+90-907 files

LLVM/project e935235 —

[Clang][HIP] Skip internalization for non-LTO device links (#225859)

A non-LTO HIP device link can combine native relocatable objects with
bitcode libraries. This can happen with both RDC and non-RDC
compilation. LLD must resolve undefined symbols in the native objects
with definitions from the bitcode.

The LTO step processing the bitcode cannot see references from native
objects. Internalizing non-kernel functions can therefore hide
definitions that those objects need. Do not enable AMDGPU
internalization for these mixed non-LTO links.

LTO mode does not have this problem. It links the bitcode modules before
internalization, so the references are visible when symbols are
resolved. Keep internalization for LTO links and when compiling non-RDC
main modules.
DeltaFile
+0-00 files

LLVM/project b84da7d — compiler-rt/lib/tsan/go tsan_go.cpp, compiler-rt/lib/tsan/rtl tsan_rtl_report.cpp tsan_rtl.h

Convert to cherry-pick

Created using spr 1.3.7
DeltaFile
+3-3compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+1-2compiler-rt/lib/tsan/go/tsan_go.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl.h
+6-74 files

LLVM/project 194ce87 — clang/lib/Driver/ToolChains HIPAMD.cpp, clang/test/Driver hip-profile-rocm-runtime.hip

[Clang][HIP] Skip internalization for non-LTO device links (#225859)

A non-LTO HIP device link can combine native relocatable objects with
bitcode libraries. This can happen with both RDC and non-RDC
compilation. LLD must resolve undefined symbols in the native objects
with definitions from the bitcode.

The LTO step processing the bitcode cannot see references from native
objects. Internalizing non-kernel functions can therefore hide
definitions that those objects need. Do not enable AMDGPU
internalization for these mixed non-LTO links.

LTO mode does not have this problem. It links the bitcode modules before
internalization, so the references are visible when symbols are
resolved. Keep internalization for LTO links and when compiling non-RDC
main modules.
DeltaFile
+44-2clang/test/Driver/hip-profile-rocm-runtime.hip
+9-9clang/lib/Driver/ToolChains/HIPAMD.cpp
+53-112 files

LLVM/project 5db3655 — mlir/lib/Dialect/SCF/IR ValueBoundsOpInterfaceImpl.cpp, mlir/test/Dialect/SCF value-bounds-op-interface-impl.mlir

[mlir][scf] Fix scf.for value bounds for empty and unsigned loops (#226761)

Value bounds assumes that an `scf.for` result is `init + ceildiv(ub -
lb, step) * (yield - iter_arg)`. This is only true if the loop runs at
least once. When the loop does not run, `ceildiv(ub - lb, step)` is
negative instead of 0. For unsigned loops, `ub - lb` is computed as if
the bounds were signed, which also gives a wrong trip count. The
induction variable bounds of unsigned loops have the same signed
problem.

Example:
```mlir
%r = scf.for %iv = %c5 to %c2 step %c1 iter_args(%arg = %c7) -> index {
  %n = arith.addi %arg, %c1 : index
  scf.yield %n : index
}
%m = affine.min affine_map<(d0) -> (d0, 5)>(%r)
```
The loop does not run, so `%r` is 7 and `%m` should be 5. Value bounds

    [13 lines not shown]
DeltaFile
+54-0mlir/test/Dialect/SCF/value-bounds-op-interface-impl.mlir
+13-0mlir/lib/Dialect/SCF/IR/ValueBoundsOpInterfaceImpl.cpp
+67-02 files

LLVM/project 8aec779 — compiler-rt/lib/tsan/rtl tsan_rtl_mutex.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+3-1compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+3-11 files

LLVM/project 30b5164 — llvm/lib/Target/RISCV RISCVRedundantCopyElimination.cpp

[RISCV] Factor out LI/QC_LI matching in RISCVRedundantCopyElimination. NFC (#228610)

Assisted-by: Claude
DeltaFile
+23-26llvm/lib/Target/RISCV/RISCVRedundantCopyElimination.cpp
+23-261 files

LLVM/project c45612d — orc-rt/test/unit/bedrock/sps NativeDylibManagerSPSCITest.cpp

[orc-rt] Use the Error matchers in NativeDylibManagerSPSCITest (#228629)

Use the Error matchers introduced in 4c8a437d0487 to clean up error
checks in NativeDylibManagerSPSCITest.
DeltaFile
+62-24orc-rt/test/unit/bedrock/sps/NativeDylibManagerSPSCITest.cpp
+62-241 files

LLVM/project 758aa4a — llvm/lib/CodeGen MachineSink.cpp, llvm/test/CodeGen/X86 postra-machine-sink-eh-pad.mir

[CodeGen] Avoid sinking EH pad blocks (#224812)

EH pad blocks should not be sinkable since the control flow comes from
the unwinder instead of the predecessor.

This exclusion also matches the behavior of other sinkers.

Fixes #224802.
DeltaFile
+40-0llvm/test/CodeGen/X86/postra-machine-sink-eh-pad.mir
+1-1llvm/lib/CodeGen/MachineSink.cpp
+41-12 files

LLVM/project 30183cb — lldb/include/lldb/Target Process.h, lldb/source/Plugins/Process/gdb-remote ProcessGDBRemote.h ProcessGDBRemote.cpp

[lldb] Don't run code for CanJIT() while creating the ObjC runtime (#227555)

When libobjc lacks class_getMethodImplementation, the ObjC trampoline
handler calls CanJIT() to decide whether to warn. Without the _M
packet, CanJIT() allocated memory by calling mmap in the inferior.
Setting up that call unwinds the stack, which asks for the ObjC
runtime. The runtime isn't registered yet, so LLDB creates another one
and recurses until the stack overflows.

Ask the process plugin whether it can allocate memory instead of
trying it. ProcessGDBRemote probes the _M packet and otherwise checks
for an mmap symbol, neither of which runs code in the inferior.

rdar://188335027
DeltaFile
+106-0lldb/test/API/functionalities/gdb_remote_client/libobjc.A.dylib.yaml
+99-0lldb/test/API/functionalities/gdb_remote_client/TestObjCRuntimeNoInferiorCall.py
+3-21lldb/source/Target/Process.cpp
+21-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+4-0lldb/include/lldb/Target/Process.h
+2-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
+235-211 files not shown
+236-217 files

LLVM/project 2590e4e — lldb/source/Plugins/DynamicLoader/FreeBSD-Kernel DynamicLoaderFreeBSDKernel.cpp, lldb/source/Plugins/Process/FreeBSD-Kernel-Core CMakeLists.txt ProcessFreeBSDKernelCore.cpp

[lldb][FreeBSDKernel] Find .debug files using pseudo sysroot (#224845)

Unlike userspace processes, it is common to obtain kernel dump from a
machine (e.g. QEMU) which different from the machine debugging the dump.
In this case users need to run `target symbols add foo.debug` for the
kernel and each kernel object, which becomes quite inconvenient when the
machine had dozens of kernel modules loaded during the dump.

This patch adds functionality to the dynamic loader so that it loads
symbol files automatically when kernel or kenrel modules are loaded. It
assumes a pseudo sysroot. When kernel is located at
`/foo/boot/kernel/kernel`, it will look for
`foo/usr/lib/debug/boot/kernel/kernel.debug` and same for kernel
modules. In this case, the only thing users need to do is copying the
dumped machine's `/usr/lib/debug/boot` relative to `/boot` that is being
debugged.

Assisted-by: GPT
DeltaFile
+65-0lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp
+33-0lldb/source/Plugins/DynamicLoader/FreeBSD-Kernel/DynamicLoaderFreeBSDKernel.cpp
+2-0lldb/source/Plugins/Process/FreeBSD-Kernel-Core/CMakeLists.txt
+100-03 files

LLVM/project 82290a0 — llvm/test/tools/llvm-cas plugin-validation-crash.test plugin-validation.test, llvm/tools/libCASPluginTest libCASPluginTest.exports libCASPluginTest.cpp

[CASPlugin] Move CASPluginTest next to the CAS unit tests (#227546)

Set up the CAS test plugin like CGTestPlugin: move it from
llvm/tools/libCASPluginTest to llvm/unittests/CAS/CASPluginTest and
build it as CASPluginTest${LLVM_PLUGIN_EXT}, without the lib prefix or
a version, so its name is the same on all platforms. The lit tests now
find it via %llvmshlibdir/CASPluginTest%pluginext instead of a
configured LLVM_CAS_PLUGIN_TEST_PATH, and CASTests gets its path from
the build system through the CAS_PLUGIN_PATH definition.
DeltaFile
+0-887llvm/tools/libCASPluginTest/libCASPluginTest.cpp
+887-0llvm/unittests/CAS/CASPluginTest/CASPluginTest.cpp
+22-21llvm/test/tools/llvm-cas/plugin-validation.test
+0-37llvm/tools/libCASPluginTest/libCASPluginTest.exports
+37-0llvm/unittests/CAS/CASPluginTest/CASPluginTest.exports
+13-12llvm/test/tools/llvm-cas/plugin-validation-crash.test
+959-9577 files not shown
+991-1,01913 files

LLVM/project 9d79d55 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 masked-gather-stale-capture.ll

[SLP] Reset BatchAA after vectorizing a tree (#227833)
DeltaFile
+16-7llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+7-9llvm/test/Transforms/SLPVectorizer/X86/masked-gather-stale-capture.ll
+23-162 files

LLVM/project feb8b10 — llvm/lib/ObjCopy/MachO MachOObject.h MachOObjcopy.cpp, llvm/test/tools/llvm-objcopy/MachO indirect-symbol-table-copy.s discard-all-relocations.test

[llvm-objcopy][MachO] Fix use-after-free when stripping (#228607)

We must preserve symbols referenced by the indirect symbol table even
with strip all, and we must preserve symbols referenced by relocations
without strip all.

Fixes: https://github.com/llvm/llvm-project/issues/228595

Assisted-by: codex
DeltaFile
+186-0llvm/test/tools/llvm-objcopy/MachO/discard-all-relocations.test
+21-0llvm/test/tools/llvm-objcopy/MachO/indirect-symbol-table-copy.s
+12-3llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp
+1-1llvm/lib/ObjCopy/MachO/MachOObject.h
+220-44 files