LLVM/project b7c0a2a — libcxx/include string

use _LIBCPP_ALIGNOF instead of alignof
DeltaFile
+2-1libcxx/include/string
+2-11 files

LLVM/project 39cb5f2 — llvm/include/llvm/CodeGen LiveIntervals.h, llvm/lib/CodeGen LiveIntervals.cpp

CodeGen: Track shrinkToUses live-out blocks by block number

extendSegmentsToUses created a SmallPtrSet to track which predecessors
were already queued as live-out. On large functions it outgrows the
inline storage and rehashes each time. Keep a per-block-number tag
array in LiveIntervals and bump the current tag on each call, so a
lookup is a direct index and resetting the set is free.

Instructions for llc -O3 -filetype=null over 40 CTMark x86_64 bitcode files:

  total                   -0.21%
  consumer-typeset z06    -1.79%
  ClamAV mspack           -0.43%
  tramp3d-v4              -0.38%
  kimwitu++ kimwy         -0.35%
  SPASS rules-red         -0.29%
  lencod mbuffer          -0.27%
  SPASS rules-inf         -0.22%


    [3 lines not shown]
DeltaFile
+13-3llvm/lib/CodeGen/LiveIntervals.cpp
+8-0llvm/include/llvm/CodeGen/LiveIntervals.h
+21-32 files

LLVM/project 0dc8e3c — mlir/include/mlir/Bindings/Python NanobindAdaptors.h, mlir/test/python/ir caster_exceptions.py

[MLIR][Python] Don't terminate when a from_cpp type caster raises (#237010)

The `type_caster<Mlir*>::from_cpp` functions in `NanobindAdaptors.h` are `noexcept`, but they call into Python. So wrap their bodies in a small helper. The helper catches `nanobind::python_error`, restores it as the Python error indicator and returns an invalid handle.

Assisted by: Claude
DeltaFile
+101-64mlir/include/mlir/Bindings/Python/NanobindAdaptors.h
+88-0mlir/test/python/ir/caster_exceptions.py
+189-642 files

LLVM/project 28b09aa — llvm/lib/Target/LoongArch LoongArchTargetTransformInfo.h LoongArchTargetTransformInfo.cpp, llvm/test/Analysis/CostModel/LoongArch load-store.ll

[LoongArch] Fix the cost of loading and storing sub-128-bit vectors (#234458)

On LA64, vectors narrower than 128 bits are widened, and a load or store
of one is a single instruction: FLD.{S/D} or VLDREPL.{B/H} for loads and
VSTELM.{B/H/W/D} for stores. The generic model costs them as scalarized,
e.g. 5 for <4 x i16> and 9 for <8 x i8>, which makes narrow VFs look
much more expensive than they are.

This matters once the vectorizer considers VFs past the widest type. For
example, the GSM Autocorrelation loop (9 x i64 multiply-accumulate over
i16 taps) would otherwise pick VF8 on LSX, which needs more vector
registers than available and spills every iteration, instead of VF4. On
LA664:

  VF8: 1.081s
  VF4: 0.856s

LA32 is left unchanged, as it splits 64-bit loads and doesn't use
VSTELM.{W/D} for stores.
DeltaFile
+16-16llvm/test/Analysis/CostModel/LoongArch/load-store.ll
+27-0llvm/lib/Target/LoongArch/LoongArchTargetTransformInfo.cpp
+6-0llvm/lib/Target/LoongArch/LoongArchTargetTransformInfo.h
+49-163 files

LLVM/project aa27151 — llvm/test/Analysis/CostModel/LoongArch load-store.ll

[LoongArch][NFC] Pre-commit tests for sub-128-bit vector load/store costs (#234456)
DeltaFile
+95-0llvm/test/Analysis/CostModel/LoongArch/load-store.ll
+95-01 files

LLVM/project f2b0558 — llvm/lib/Target/Mips Mips16ISelDAGToDAG.cpp MipsSEISelDAGToDAG.cpp, llvm/test/CodeGen/Mips newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+267-0llvm/test/CodeGen/Mips/newpm-pipeline.ll
+117-0llvm/lib/Target/Mips/MipsCodeGenPassBuilder.cpp
+21-0llvm/lib/Target/Mips/MipsPassRegistry.def
+16-0llvm/lib/Target/Mips/Mips.h
+9-2llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
+7-2llvm/lib/Target/Mips/Mips16ISelDAGToDAG.cpp
+437-45 files not shown
+449-1211 files

LLVM/project c454f00 — llvm/lib/Target/Mips MipsSEISelDAGToDAG.h Mips16ISelDAGToDAG.h

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

Created using spr 1.3.7

[skip ci]
DeltaFile
+16-0llvm/lib/Target/Mips/Mips.h
+9-2llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
+7-2llvm/lib/Target/Mips/Mips16ISelDAGToDAG.cpp
+2-2llvm/lib/Target/Mips/MipsTargetMachine.cpp
+0-3llvm/lib/Target/Mips/MipsSEISelDAGToDAG.h
+0-3llvm/lib/Target/Mips/Mips16ISelDAGToDAG.h
+34-126 files

LLVM/project 59798fc — llvm/lib/Transforms/Vectorize VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize cse-replicate-poison-generating.ll

[VPlan] Drop poison generating flags from replicated clones (#234901)

Only noticed this after already reviewing #234613, we also need to drop
the flags for much the same reason.
DeltaFile
+1-2llvm/test/Transforms/LoopVectorize/cse-replicate-poison-generating.ll
+1-0llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+2-22 files

LLVM/project 6f3f9c7 — clang/test lit.cfg.py CMakeLists.txt, clang/test/CIR/Tools cir-offload-merge.cir

[CIR] Add the cir-offload-merge tool

Add a standalone tool that moves CIR modules into and out of an offload
container:

* `-combine` takes a host CIR module and one or more device CIR modules,
  each paired with its offload bundle ID through `-targets`, and nests them
  in a module marked `cir.offload.container`. The host module goes first, as
  the container verifier requires. Each nested module is tagged with
  `cir.offload.kind` and `cir.offload.bundle_id`.

* `-split` takes a container and writes each requested target's module to
  its own file. Modules are matched to the requested targets by their
  bundle ID, using clang-offload-bundler's target ID compatibility rules.
  Each split module is printed as a top-level module, so its type aliases
  are kept.

The tool runs no passes on the container. It is driven by hand for now:
driver integration and the passes that work on the container are left to

    [9 lines not shown]
DeltaFile
+374-0clang/tools/cir-offload-merge/cir-offload-merge.cpp
+218-0clang/test/CIR/Tools/cir-offload-merge.cir
+23-0clang/tools/cir-offload-merge/CMakeLists.txt
+2-0clang/test/CMakeLists.txt
+1-0clang/tools/CMakeLists.txt
+1-0clang/test/lit.cfg.py
+619-06 files

LLVM/project 7d9856a — clang/include/clang/CIR/Dialect/IR CIRDialect.td CIRAttrs.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Add cir.offload.bundle_id attribute

A follow-up tool combines per-target CIR modules into an offload container
and splits them back out. Splitting needs to know which compilation each
nested module came from, and `cir.offload.kind` only says host or device.
The target triple is not enough either: a multi-arch HIP build produces
several device modules with the same triple that only differ in their
target ID, e.g. `gfx90a:xnack+` and `gfx90a:xnack-`.

Add `cir.offload.bundle_id`, a string attribute carrying the module's
offload bundle ID in the format clang-offload-bundler uses
(`<offload kind>-<target triple>[-<target ID>]`).

The verifier checks that the attribute is a non-empty string attached to
a `builtin.module`, and that bundle IDs are unique within an offload
container. The attribute is optional, so existing containers stay valid.
DeltaFile
+41-0clang/test/CIR/IR/invalid-offload-container.cir
+27-3clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+23-0clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+16-0clang/test/CIR/IR/offload-container.cir
+1-0clang/include/clang/CIR/Dialect/IR/CIRDialect.td
+108-35 files

LLVM/project 4ca31be — llvm/lib/IR Verifier.cpp, llvm/test/Verifier/RISCV vsetvli-rv32.ll

[Verifier][RISCV] Reject i64 vsetvli intrinsics on rv32

The scalar types need to fit in XLEN. i32 intrinsics on rv64 seem to work fine.
Fixes #237048.

Assisted-by: Claude Opus 5.5
DeltaFile
+15-0llvm/test/Verifier/RISCV/vsetvli-rv32.ll
+3-0llvm/lib/IR/Verifier.cpp
+18-02 files

LLVM/project fc06190 — mlir/lib/Dialect/SCF/Transforms LoopRangeFolding.cpp, mlir/test/Dialect/SCF loop-range.mlir

[mlir][scf] Revisit affected loops during range folding (#230961)

Folding an outer loop can expose a range-folding opportunity in an inner
loop that has already been visited. Convert loop-range folding to an
`OpRewritePattern<scf::ForOp>` and use `applyPatternsGreedily` on the
pass root so the greedy driver revisits affected loops within one pass
invocation.

Fixes #228463
DeltaFile
+83-73mlir/lib/Dialect/SCF/Transforms/LoopRangeFolding.cpp
+48-0mlir/test/Dialect/SCF/loop-range.mlir
+131-732 files

LLVM/project 1787c8b — clang/lib/CodeGen CodeGenModule.cpp, clang/test/CodeGen debugger-tuning-flag.c

clang: Emit the "debugger-tuning" module flag (#235050)

Co-authored-by: Claude Sonnet 5 <noreply at anthropic.com>
DeltaFile
+21-0clang/test/CodeGen/debugger-tuning-flag.c
+3-0clang/lib/CodeGen/CodeGenModule.cpp
+24-02 files

LLVM/project 51db360 — llvm/lib/Target/Mips MipsSEISelDAGToDAG.h Mips16ISelDAGToDAG.h

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+16-0llvm/lib/Target/Mips/Mips.h
+9-2llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
+7-2llvm/lib/Target/Mips/Mips16ISelDAGToDAG.cpp
+2-2llvm/lib/Target/Mips/MipsTargetMachine.cpp
+0-3llvm/lib/Target/Mips/MipsSEISelDAGToDAG.h
+0-3llvm/lib/Target/Mips/Mips16ISelDAGToDAG.h
+34-126 files

LLVM/project 7d23c4b — lldb/bindings/python CMakeLists.txt

[LLDB] Use `-fastproxy` when building swig bridge without limited python API (Reland) (#236247)

Per [swig
docs](https://www.swig.org/Doc4.4/Python.html#Python_fastproxy).
Additionally, the `-olddefs` option is included so that the doc comments
still function. The latter change makes importing the LLDB module a bit
slower, but makes every method call a good bit faster.

Depends on: #235909

Co-authored-by: Walnut <walnut356dev at gmail.com>
Co-authored-by: Jonas Devlieghere <jonas at devlieghere.com>
DeltaFile
+4-0lldb/bindings/python/CMakeLists.txt
+4-01 files

LLVM/project b124fbc — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/lib/Transforms/Vectorize/SLPVectorizer SLPCompatibilityAnalysis.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+34-127llvm/test/Transforms/SLPVectorizer/X86/sese-region-non-schedulable.ll
+91-29llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+76-3llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPCompatibilityAnalysis.cpp
+29-40llvm/test/Transforms/SLPVectorizer/X86/sese-region-non-schedulable-copyable.ll
+13-25llvm/test/Transforms/SLPVectorizer/X86/sese-region-non-schedulable-revec.ll
+9-21llvm/test/Transforms/SLPVectorizer/X86/sese-region-non-schedulable-non-power-of-2.ll
+252-2453 files not shown
+283-2549 files

LLVM/project f98b616 — llvm/tools/llvm-ir2vec llvm-ir2vec.cpp

[llvm-ir2vec] Parse library options into LLVMContext (#237056)

Migrate away from the to-be-deprecated ParseCommandLineOptions, which
sets the global values.
DeltaFile
+9-4llvm/tools/llvm-ir2vec/llvm-ir2vec.cpp
+9-41 files

LLVM/project f1549d1 — llvm/test/Transforms/LoopVectorize cse-replicate-poison-generating.ll

Remove FIXME
DeltaFile
+0-1llvm/test/Transforms/LoopVectorize/cse-replicate-poison-generating.ll
+0-11 files

LLVM/project 6a97db8 — lld/MachO ExportTrie.cpp

[lld-macho] Build the export trie by edges, not bytes (#236626)

Emit singleton suffixes directly and scan common prefixes in one pass,
avoiding repeated byte-wise partitioning. This speeds up builds that
emit large export tries.

Reland of #234857, which was accidentally merged into a stale stack
branch instead of main. Same diff, already reviewed there.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
DeltaFile
+28-0lld/MachO/ExportTrie.cpp
+28-01 files

LLVM/project 9e5165b — llvm/lib/Target/LoongArch LoongArchLASXInstrInfo.td LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch/lasx vec-shuffle-lane-crossing.ll

[LoongArch] Use XVPERMI.Q for lane-crossing LASX shuffles (#232209)

Introduce XVPERMI.Q ISD node in TableGen for add lowering for 256-bit
lane shuffle.
Also extend lowerVECTOR_SHUFFLEAsLanePermuteAndShuffle to support dual
input permute and shuffle, so that splice like this:
```
%2 = shufflevector <8 x i32> %0, <8 x i32> %1,
                   <8 x i32> <i32 7, i32 8, i32 9, i32 10,
                              i32 11, i32 12, i32 13, i32 14>
```
could be lowered to:
```
    (XVBSLL_V  $xr2, $xr1, 4)
    (XVPERMI_Q $xr1, $xr0, 33)
    (XVBSRL_V  $xr0, $xr1, 12)
    (XVOR_V    $xr0, $xr2, $xr0)
```
All permute that destination lane comes from maximum of two source lanes

    [3 lines not shown]
DeltaFile
+195-0llvm/test/CodeGen/LoongArch/lasx/vec-shuffle-lane-crossing.ll
+98-24llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+93-0llvm/test/CodeGen/LoongArch/lasx/ir-instruction/shuffle-as-xvpermi-q.ll
+5-6llvm/test/CodeGen/LoongArch/lasx/ir-instruction/fix-xvshuf.ll
+2-6llvm/test/CodeGen/LoongArch/lasx/ir-instruction/shuffle-as-xvshuf.ll
+6-0llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td
+399-361 files not shown
+400-377 files

LLVM/project 8c6426b — llvm/include/llvm/IR Module.h, llvm/lib/CodeGen/AsmPrinter DwarfDebug.cpp

Actually resolve the default in Module
DeltaFile
+2-1llvm/include/llvm/IR/Module.h
+0-2llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+1-1llvm/lib/IR/Module.cpp
+3-43 files

LLVM/project b60f150 — clang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver lto-aix.c

CodeGen: Replace TargetOptions::DebuggerTuning with module flag

Read the debugger tuning from the module's "debugger-tuning" flag instead of
TargetOptions. Delete the now-dead -debugger-tune= cl::opt and the
TargetOptions::DebuggerTuning field.

Update the tests relying on it to directly use the module flag. The cases
that exercise multiple values do a text substitution to swap the value.
Alternatively this could be changed to synthesize the module flag in the
llc flag like some of the other widely used module flags do.

Co-authored-by: Claude Sonnet 5 <noreply at anthropic.com>
DeltaFile
+24-19llvm/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir
+6-16llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+12-9llvm/test/DebugInfo/X86/convert-debugloc.ll
+6-14clang/test/Driver/lto-aix.c
+13-5llvm/test/DebugInfo/X86/debugger-tune.ll
+0-17clang/lib/Driver/ToolChains/CommonArgs.cpp
+61-8058 files not shown
+243-25164 files

LLVM/project d1c808a — clang/lib/CodeGen CodeGenModule.cpp, clang/test/CodeGen debugger-tuning-flag.c

clang: Emit the "debugger-tuning" module flag

Co-authored-by: Claude Sonnet 5 <noreply at anthropic.com>
DeltaFile
+21-0clang/test/CodeGen/debugger-tuning-flag.c
+3-0clang/lib/CodeGen/CodeGenModule.cpp
+24-02 files

LLVM/project 5661d4f — llvm/docs HowToSubmitABug.md

[docs] Add AI policy to HowToSubmitABug (#236946)

We've been getting a lot of AI-generated bug reports lately; we should
have a clear description of expectations for anyone submitting such
reports.

This reflects the current version of the policy, not the one proposed in
the "Forbid AI-generated communication" RFC. We can adjust the text when
that is approved.
DeltaFile
+12-0llvm/docs/HowToSubmitABug.md
+12-01 files

LLVM/project 3648d51 — compiler-rt/lib/asan/tests asan_str_test.cpp

[ASan][test] Disable StrArgsOverlapTest on Android AArch64 (#237043)

Temporarily disable `AddressSanitizer.StrArgsOverlapTest` on Android
AArch64 while waiting for #237000.

On Android 17 (API 37) AArch64, Bionic's `strcat` calls `strcpy at plt(dst
+ strlen(dst), src)`, so `strcat(str, str + 10)` in `StrArgsOverlapTest`
re-enters `INTERCEPTOR(strcpy)` with `to == from` and fails with
`strcpy-param-overlap` on
https://lab.llvm.org/staging/#/builders/sanitizer-x86_64-linux-android.

Assisted-by: Gemini
DeltaFile
+10-1compiler-rt/lib/asan/tests/asan_str_test.cpp
+10-11 files

LLVM/project 4bf016c — llvm/lib/CodeGen MachineVerifier.cpp

[MachineVerifier] Track defs inside bundles

Reuse LivePhysDefs instead of rescanning the bundle, and skip the
undefined-register check on BUNDLE header uses.
DeltaFile
+16-39llvm/lib/CodeGen/MachineVerifier.cpp
+16-391 files

LLVM/project d8b3a4d — llvm/utils/gn/secondary/clang/lib/Headers BUILD.gn

[gn] port 6006957c522e (#237042)
DeltaFile
+1-0llvm/utils/gn/secondary/clang/lib/Headers/BUILD.gn
+1-01 files

LLVM/project 1497c92 — llvm/include/llvm/Support KnownFPClass.h, llvm/lib/Analysis ValueTracking.cpp

[KnownFPClass][NFC] Remove isKnownNeverZero helper to encourage proper denormal handling (#236625)

Removes `isKnownNeverZero()`, `isKnownNeverPosZero()`, and
`isKnownNeverNegZero()` which only compare against the literal `+-0.0`,
`+0.0`, and `-0.0` respectively. This encourages the use of
`isKnownNeverLogicalZero(Mode)` and friends which properly account for
the input denormal mode.

If input denormals are properly handled, you can still compare against
`+-0.0` literals via the generic `isKnownNever(fcZero)`.
DeltaFile
+9-9llvm/lib/Support/KnownFPClass.cpp
+1-12llvm/include/llvm/Support/KnownFPClass.h
+3-1llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+1-1llvm/lib/Analysis/ValueTracking.cpp
+14-234 files

LLVM/project 12be482 — llvm/lib/Target/AMDGPU SIInstrInfo.h SIShrinkInstructions.cpp, llvm/test/CodeGen/AMDGPU shrink-instructions-fold-imm-subreg.mir

AMDGPU: Fold global address into subregister use with lo/hi relocation

Split 64-bit relocations into the 32-bit halves when applying a
subregister extract, similar to how immediates are modified when
folding. The same split is applied when 64-bit mov pseudos are
expanded.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+64-42llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+14-9llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
+5-8llvm/test/CodeGen/AMDGPU/shrink-instructions-fold-imm-subreg.mir
+9-0llvm/lib/Target/AMDGPU/SIInstrInfo.h
+92-594 files

LLVM/project 3a025e4 — lldb/include/lldb/Breakpoint ScriptedBreakpointOverrideResolver.h, lldb/include/lldb/Target Target.h

[lldb] Copy valid breakpoint overrides from the dummy target (#235834)

`Target::PrimeFromDummyTarget` copied a breakpoint override into a new target only when `Validate` failed, because an `llvm::Error` converts to true on failure. Overrides registered on the dummy target therefore never reached later targets. Copy the overrides that validate, and log the error of those that don't.

Rename `Validate` to `HasErrors`, still returning an `llvm::Error`, so call sites read the right way round. It now also checks that the override's class exists, so adding an override with a missing class fails with a useful error instead of failing on every matching breakpoint.

Test both: an override on the dummy target applies to targets created later, and `test_bad_values` now covers a missing class.
DeltaFile
+53-11lldb/test/API/functionalities/breakpoint/scripted_bkpt/overrides_resolver/TestOverridesResolver.py
+9-3lldb/source/Breakpoint/ScriptedBreakpointOverrideResolver.cpp
+6-2lldb/source/Target/Target.cpp
+3-2lldb/include/lldb/Target/Target.h
+1-1lldb/include/lldb/Breakpoint/ScriptedBreakpointOverrideResolver.h
+72-195 files