LLVM/project c6b128f — llvm/lib/CodeGen/AsmPrinter AsmPrinter.cpp, llvm/lib/Target/AArch64 AArch64AsmPrinter.cpp

CodeGen: Prefer getting the Triple from the Module when convenient

Take the triple from the contextual module rather than TargetMachine
when it's already readily available.
DeltaFile
+17-16llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+5-4llvm/lib/Target/X86/X86AsmPrinter.cpp
+4-4llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp
+3-3llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+3-3llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
+3-2llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp
+35-325 files not shown
+41-3811 files

LLVM/project e0533e9 — llvm/test/CodeGen/AArch64 div-i256.ll phi.ll, llvm/test/CodeGen/RISCV abdu.ll idiv_large.ll

CodeGen: Run LiveIntervals before PHIElimination and drop LiveVariables from it

Move LiveIntervals to run before PHIElimination in the optimized register
allocation pipeline, and make PHIElimination maintain LiveIntervals only.

This removes the last explicit use of LiveVariables. The actual analysis is no
longer used. There are implicit dependencies on the side effects of running the
analysis due to adjustments of dead flags, so further work is still needed to
complete the removal.

This perturbs register allocation in a number of tests. The same codegen result
can be achieved by not preserving the analysis and recomputing fresh. Greedy is
just sensitive to the exact slot index and value numbering with identical MIR.

Measured across every affected test the emitted instruction count goes from
145124 to 145196, +0.050%, with changes in both directions. The largest
regression is AArch64/phi.ll, where the GlobalISel output gains about 30
instructions and no longer matches the SelectionDAG output; the largest
improvements are ARM/fpclamptosat.ll and PowerPC/common-chain.ll.

    [2 lines not shown]
DeltaFile
+1,648-1,642llvm/test/CodeGen/RISCV/GlobalISel/wide-scalar-shift-by-byte-multiple-legalization.ll
+1,026-1,017llvm/test/CodeGen/X86/i128-udiv.ll
+396-396llvm/test/CodeGen/RISCV/idiv_large.ll
+452-210llvm/test/CodeGen/AArch64/phi.ll
+290-290llvm/test/CodeGen/RISCV/abdu.ll
+242-242llvm/test/CodeGen/AArch64/div-i256.ll
+4,054-3,797126 files not shown
+8,122-8,041132 files

LLVM/project 72a3414 — clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/CodeGen CIRGenBuiltin.cpp CIRGenCoroutine.cpp

[ClangIR] Support __builtin_coro_noop (#227573)

Support `__builtin_coro_noop` in ClangIR:
- Add `CIR_CoroNoopOp` (`cir.coro.intrinsic.noop`) in `CIROps.td` with
TableGen lowering to `llvm.coro.noop`.
- Handle `Builtin::BI__builtin_coro_noop` in `CIRGenBuiltin.cpp`.
- Add roundtrip (`clang/test/CIR/IR/coro-noop.cir`) and DirectToLLVM
lowering (`clang/test/CIR/Lowering/coro-noop.cir`) tests.
- Uncomment and test `__builtin_coro_noop()` in
`clang/test/CIR/CodeGenCoroutines/coro-builtins.cpp` with both CIR and
LLVM checks for parity with classic Clang CodeGen.

Closes #227561
DeltaFile
+13-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+11-0clang/test/CIR/IR/coro-noop.cir
+11-0clang/test/CIR/Lowering/coro-noop.cir
+4-2clang/test/CIR/CodeGenCoroutines/coro-builtins.cpp
+5-0clang/lib/CIR/CodeGen/CIRGenCoroutine.cpp
+1-2clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+45-41 files not shown
+46-47 files

LLVM/project 101c42b —

Update commit message

Created using spr 1.3.7
DeltaFile
+0-00 files

LLVM/project e99d532 — compiler-rt/lib/tsan/rtl tsan_rtl_thread.cpp tsan_mman.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+17-22compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+3-3compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+2-2compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_mman.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_interface_ann.cpp
+25-301 files not shown
+26-317 files

LLVM/project 015aa18 — compiler-rt/lib/tsan/rtl tsan_rtl_thread.cpp tsan_mman.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+22-17compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+3-3compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+2-2compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_mman.cpp
+1-1compiler-rt/lib/tsan/rtl/tsan_interface_ann.cpp
+30-251 files not shown
+31-267 files

LLVM/project c6827b1 —

Update commit message

Created using spr 1.3.7
DeltaFile
+0-00 files

LLVM/project 2d7a017 — compiler-rt/lib/tsan/rtl tsan_rtl_report.cpp tsan_rtl_mutex.cpp

Add CheckNoLocks and keep ReportDestroyLocked RestoreStack in place

Created using spr 1.3.7
DeltaFile
+12-17compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+2-0compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+14-172 files

LLVM/project ff2e853 — llvm/utils/gn/secondary/bolt/test BUILD.gn

[gn] port 873f7ef7077fd5f3 (#228617)
DeltaFile
+14-0llvm/utils/gn/secondary/bolt/test/BUILD.gn
+14-01 files

LLVM/project 937a402 — llvm/utils/gn/secondary/llvm/lib/ABI BUILD.gn, llvm/utils/gn/secondary/llvm/unittests/ABI BUILD.gn

[gn build] Port cd94d181b2e3 (#228616)
DeltaFile
+3-2llvm/utils/gn/secondary/llvm/unittests/ABI/BUILD.gn
+1-0llvm/utils/gn/secondary/llvm/lib/ABI/BUILD.gn
+4-22 files

LLVM/project 7bc1de4 — llvm/utils/gn/secondary/clang/lib/CodeGenUtils BUILD.gn

[gn build] Port c666ea6d7cae (#228615)
DeltaFile
+1-0llvm/utils/gn/secondary/clang/lib/CodeGenUtils/BUILD.gn
+1-01 files

LLVM/project 07e69cf — llvm/include/llvm/CodeGen ISDOpcodes.h, llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp SelectionDAGDumper.cpp

DAG: Gracefully diagnose missing fp-compare libcall when softening (#228416)

Avoid fatal errors, and legalize to poison with a proper context error.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+59-30llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
+25-10llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+23-0llvm/test/CodeGen/NVPTX/fp128-compare-no-libcall-error.ll
+5-0llvm/include/llvm/CodeGen/ISDOpcodes.h
+112-404 files

LLVM/project 318d8c3 — llvm/lib/Target/SPIRV SPIRVPrepareGlobals.cpp, llvm/test/CodeGen/SPIRV/passes SPIRVPrepareGlobals.ll

[SPIRV] Don't treat noipa aliasees as interposable in SPIRVPrepareGlobals (#228178)

SPIRVPrepareGlobals replaces aliases with their aliasee because the
backend can't lower GlobalAlias. It must skip aliasees that may be
replaced at link time, but `isInterposable()` also returns true for
`noipa` function definitions by default. `noipa` doesn't change which
definition is used at link time, so query
`isInterposable(/*CheckNoIPA=*/false)` so aliases of `noipa` functions
are still replaced.

This is one of a few refinements of noipa identified while working on
making optnone imply noipa - without these refinements,
optnone-implies-noipa, might substantially change clang -O0 codegen. I'm
open to discussing whether these refinements are the right direction,
though.

Assisted-By: Claude
DeltaFile
+15-0llvm/test/CodeGen/SPIRV/passes/SPIRVPrepareGlobals.ll
+3-1llvm/lib/Target/SPIRV/SPIRVPrepareGlobals.cpp
+18-12 files

LLVM/project a881915 — 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
+18-33compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+41-0compiler-rt/test/tsan/signal_abort_on_error.cpp
+8-18compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
+8-13compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+7-12compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
+6-11compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
+88-875 files not shown
+103-11511 files

LLVM/project 4833c05 — 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
+35-45compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
+26-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
+127-1185 files not shown
+144-14811 files

LLVM/project 63238ed — llvm/include/llvm/Support ErrorOr.h

[llvm][Support] Remove stale `ErrorOr` documentation regarding user data. (#227796)

Optional user data support was removed from `ErrorOr` in ca35ffe6a239 in November 2013.
DeltaFile
+1-1llvm/include/llvm/Support/ErrorOr.h
+1-11 files

LLVM/project 0a9f9d5 — llvm/lib/Target/AArch64 AArch64SVEInstrInfo.td, llvm/utils/TableGen/Common CodeGenDAGPatterns.cpp

[TableGen][AArch64] Relax EnforceVectorSubVectorTypeIs for mixing fixed and scalable vectors. (#228552)

The minimum elements of a fixed subvector may be greater than or equal
to the minimum elements of the scalable vector when vscale is greater
than 1. With a fixed subvector and a scalable vector we now allow the
subvector to have the same minimum elements as the vector. That covers a
NEON subvector and a SVE vector.

It is possible to have a subvector with more minimum elements than the
vector when vscale is known to be greater than 1, but both RISC-V
vectors and SVE use custom isel rather than tablegen for those cases.

With that fixed, migrate AArch64 to use
extract_subvector/insert_subvector instead of
vector_extract_subvec/vector_insert_subvec. A follow up will remove
vector_extract_subvec/vector_insert_subvec.
DeltaFile
+10-10llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+10-1llvm/utils/TableGen/Common/CodeGenDAGPatterns.cpp
+20-112 files

LLVM/project 43066b9 — llvm/utils/gn/secondary/clang/unittests/Serialization BUILD.gn

[gn build] Port 15cbda42e14b7 (#228406)
DeltaFile
+1-0llvm/utils/gn/secondary/clang/unittests/Serialization/BUILD.gn
+1-01 files

LLVM/project 90ac02e — llvm/utils/gn/secondary/clang/lib/CodeGenUtils BUILD.gn

[gn build] Port b8afba677502d (#228412)
DeltaFile
+1-0llvm/utils/gn/secondary/clang/lib/CodeGenUtils/BUILD.gn
+1-01 files

LLVM/project dfabf2d — llvm/lib/Support KnownFPClass.cpp, llvm/test/Transforms/Attributor nofpclass-sqrt.ll

[KnownFPClass] Refine positive zero result for sqrt (#214987)

Refines `KnownFPClass::sqrt` for positive zero:
- Only `sqrt(x) == +0.0` iff `x` is `+0.0` or `x` flushes to `+0.0` in
the current denormal mode. The `-0.0` case was handled in a prior
commit.

AI disclosure:
I used OpenAI Codex (GPT-5.6-sol) to help generate the test updates,
which I reviewed and tested locally.
DeltaFile
+139-6llvm/test/Transforms/Attributor/nofpclass-sqrt.ll
+9-4llvm/lib/Support/KnownFPClass.cpp
+148-102 files

LLVM/project ef12653 — llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLink BUILD.gn, llvm/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLink BUILD.gn

[gn build] Port 2820795b027eb (#228408)
DeltaFile
+2-0llvm/utils/gn/secondary/llvm/lib/ExecutionEngine/JITLink/BUILD.gn
+1-0llvm/utils/gn/secondary/llvm/unittests/ExecutionEngine/JITLink/BUILD.gn
+3-02 files

LLVM/project 23345fa — llvm/utils/gn/secondary/clang/lib/CodeGenUtils BUILD.gn

[gn build] Port 76df4ae44f0b (#228409)
DeltaFile
+1-0llvm/utils/gn/secondary/clang/lib/CodeGenUtils/BUILD.gn
+1-01 files

LLVM/project 614f508 — llvm/lib/CodeGen/AsmPrinter AsmPrinter.cpp, llvm/lib/Target/AArch64 AArch64AsmPrinter.cpp

CodeGen: Prefer getting the Triple from the Module when convenient

Take the triple from the contextual module rather than TargetMachine
when it's already readily available.
DeltaFile
+17-16llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+5-4llvm/lib/Target/X86/X86AsmPrinter.cpp
+4-4llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp
+3-3llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+3-3llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
+2-2llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp
+34-325 files not shown
+40-3811 files

LLVM/project 0d3adab — llvm/utils/gn/secondary/clang/unittests/Interpreter BUILD.gn

[gn build] Port 8cb1d1566dbb2 (#228410)
DeltaFile
+1-0llvm/utils/gn/secondary/clang/unittests/Interpreter/BUILD.gn
+1-01 files

LLVM/project 9c3a8d5 — llvm/utils/gn/secondary/llvm/lib/Analysis BUILD.gn

[gn build] Port b74b3ebf94c4c (#228411)
DeltaFile
+0-1llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn
+0-11 files

LLVM/project 95bccb2 — llvm/lib/Target/ARM ARMInstrNEON.td

[ARM] Use extract_subvector instead of vector_extract_subvec in ARMInstrNEON.td. NFC (#228542)

extract_subvector has a stricter SDTypeProfile than
vector_extract_subvec.

I'm investigating why we need vector_extract_subvec. The only other
users are in AArch64SVEInstrInfo.td so maybe something to do with
scalable vectors.
DeltaFile
+1-1llvm/lib/Target/ARM/ARMInstrNEON.td
+1-11 files

LLVM/project 257f252 — lldb/examples/python/templates scripted_process.py, lldb/include/lldb/Interpreter/Interfaces ScriptedProcessInterface.h

[lldb/Interpreter] Read Scripted Process addressable bits from its metadata (#227515)

This patch addresses post-merge feedback on #224701.

That change added a dedicated `get_addressable_bits` affordance to
scripted processes, which duplicates a property the process already has.
This patch removes it and reads the addressable bits from an optional
"addressable_bits" key in the dictionary returned by
`get_process_metadata` instead. `ScriptedProcess::DidLaunchOrAttach`
still passes the value to `SetAddressableBitMasks` before the first stop
is reported. When the key is missing, the setter is never called and the
process keeps the masks it inherits from the target.

Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+10-20lldb/examples/python/templates/scripted_process.py
+13-7lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp
+9-4lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
+0-11lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedProcessPythonInterface.cpp
+0-4lldb/include/lldb/Interpreter/Interfaces/ScriptedProcessInterface.h
+1-1lldb/test/API/functionalities/scripted_process/addressable_bits_scripted_process.py
+33-471 files not shown
+33-497 files

LLVM/project 511722a — llvm/include/llvm/CodeGen LiveDebugVariables.h, llvm/lib/CodeGen RegAllocGreedy.cpp LiveDebugVariables.cpp

[LiveDebugVariables] Repair stale SlotIndexes

The analysis keeps its indexes from before the first register allocator
until DBG_VALUEs are emitted, by which point passes in between have
erased some of the instructions they point at. Resolve them at the
start of each allocator run and before emitting.

SlotIndexes can then reclaim the entries of erased instructions without
sparing the ones held here, which would have made generated code depend
on -g. Emitted locations are unchanged, except that intervals resolving
to one position now emit a single DBG_VALUE rather than identical
consecutive ones.
DeltaFile
+140-0llvm/lib/CodeGen/LiveDebugVariables.cpp
+63-0llvm/test/DebugInfo/AMDGPU/live-debug-vars-stale-slot-indexes.ll
+8-4llvm/test/DebugInfo/MIR/X86/live-debug-vars-unused-arg-debugonly.mir
+8-0llvm/include/llvm/CodeGen/LiveDebugVariables.h
+5-2llvm/test/CodeGen/X86/debug-spilled-snippet.ll
+7-0llvm/lib/CodeGen/RegAllocGreedy.cpp
+231-61 files not shown
+236-87 files

LLVM/project 534a521 — llvm/include/llvm/CodeGen SlotIndexes.h, llvm/lib/CodeGen SlotIndexes.cpp

[SlotIndexes] Add queries for stale indexes

An erased instruction leaves its index list entry in place, making the
index indistinguishable from a block boundary entry. Add
isBlockBoundaryIndex() and isStaleIndex() to tell the two apart, and
canonicalizeIndex() to resolve a stale index to the closest preceding
instruction's register slot, or the block start if none survives.

NFC. No caller yet. LiveDebugVariables is next.
DeltaFile
+207-0llvm/unittests/CodeGen/SlotIndexesTest.cpp
+29-0llvm/lib/CodeGen/SlotIndexes.cpp
+14-0llvm/include/llvm/CodeGen/SlotIndexes.h
+1-0llvm/unittests/CodeGen/CMakeLists.txt
+251-04 files

LLVM/project 6682ef6 — compiler-rt/lib/tsan/rtl tsan_rtl.cpp

Update comment in ForkBefore

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