LLVM/project 63bd686 — llvm/lib/Target/AMDGPU SIISelLowering.cpp

Drop the zero shift check in the and fold
DeltaFile
+1-1llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+1-11 files

LLVM/project 77a4364 — llvm/test/CodeGen/AMDGPU sign_extend.ll load-global-i8.ll

Regenerate load-global-i8.ll and sign_extend.ll after rebase
DeltaFile
+141-141llvm/test/CodeGen/AMDGPU/load-global-i8.ll
+5-6llvm/test/CodeGen/AMDGPU/sign_extend.ll
+146-1472 files

LLVM/project 9813540 — llvm/lib/Target/AMDGPU SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU idot4s.ll idot4-test.ll

[AMDGPU] Extract byte lanes of a split vector from the 32-bit source

After a <4 x i8> is split into i16 halves, a byte lane is extended
from an i16 shift of a truncate. Rewrite it on the 32-bit source as an
and of srl or a sign_extend_inreg of srl, which select to a single bit
field extract.

Uniform zero and any extends are left alone, their i16 shift is already
promoted to i32.
DeltaFile
+203-292llvm/test/CodeGen/AMDGPU/v4i8-byte-lane-ext.ll
+108-134llvm/test/CodeGen/AMDGPU/idot4u.ll
+79-87llvm/test/CodeGen/AMDGPU/min.ll
+47-62llvm/test/CodeGen/AMDGPU/idot4-test.ll
+33-48llvm/test/CodeGen/AMDGPU/idot4s.ll
+64-0llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+534-6234 files not shown
+564-65710 files

LLVM/project 201f3aa — llvm/test/CodeGen/AMDGPU v4i8-byte-lane-ext.ll

[NFC][AMDGPU] Precommit test for byte lane extension after vector split (#228423)

Assisted-by: Claude Code Opus 5
DeltaFile
+907-0llvm/test/CodeGen/AMDGPU/v4i8-byte-lane-ext.ll
+907-01 files

LLVM/project 52bdac3 — llvm/test/Transforms/InstCombine/AArch64 crc32-const-fold.ll, llvm/test/Transforms/InstCombine/ARM crc32-const-fold.ll

[InstCombine] Remove redundant CRC32 intrinsic declarations from tests (#230926)

Based on review suggestion comment in
https://github.com/llvm/llvm-project/pull/230751#discussion_r4240611585
DeltaFile
+0-9llvm/test/Transforms/InstCombine/AArch64/crc32-const-fold.ll
+0-7llvm/test/Transforms/InstCombine/ARM/crc32-const-fold.ll
+0-5llvm/test/Transforms/InstCombine/X86/crc32-const-fold.ll
+0-2llvm/test/Transforms/InstCombine/X86/x86-crc32-demanded.ll
+0-234 files

LLVM/project c2768ff — llvm/test/CodeGen/AMDGPU isel-amdgpu-cs-chain-cc.ll, llvm/test/CodeGen/AMDGPU/GlobalISel irtranslator-call-abi-attribute-hints.ll dereferenceable-declaration.ll

AMDGPU/GlobalISel: Mark scc dead on call frame and pc-relative pseudos

Co-authored-by: Claude Opus 4.8 <noreply at anthropic.com>
DeltaFile
+186-186llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-call.ll
+100-100llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-call-return-values.ll
+54-54llvm/test/CodeGen/AMDGPU/isel-amdgpu-cs-chain-cc.ll
+40-40llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-call-implicit-args.ll
+20-20llvm/test/CodeGen/AMDGPU/GlobalISel/dereferenceable-declaration.ll
+12-12llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-call-abi-attribute-hints.ll
+412-41214 files not shown
+487-47920 files

LLVM/project 00fcd7a — llvm/lib/Target/X86/GISel X86InstructionSelector.cpp, llvm/test/CodeGen/X86/GlobalISel select-fcmp.mir isel-fcmp-i686.mir

X86/GlobalISel: Mark unused FP compare flag defs dead

Fix not marking FPSW and EFLAGS clobbers as dead in the manual fcmp
selection.

Co-authored-by: Claude Opus 4.8 <noreply at anthropic.com>
DeltaFile
+16-16llvm/test/CodeGen/X86/GlobalISel/isel-fcmp-i686.mir
+10-5llvm/lib/Target/X86/GISel/X86InstructionSelector.cpp
+4-4llvm/test/CodeGen/X86/GlobalISel/select-fcmp.mir
+30-253 files

LLVM/project dd56edb — llvm/lib/Target/AMDGPU R600.td R600Processors.td

AMDGPU: Move R600 subtarget features to R600Features.td

Split the R600 SubtargetFeature definitions and
R600FrontendVisibleFeatures out of R600Processors.td, mirroring
GCNFeatures.td.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+80-0llvm/lib/Target/AMDGPU/R600Features.td
+0-73llvm/lib/Target/AMDGPU/R600Processors.td
+1-0llvm/lib/Target/AMDGPU/R600.td
+81-733 files

LLVM/project 61455cd — llvm/lib/Target/AMDGPU AMDGPU.td GCNFeatures.td

AMDGPU: Move GCN subtarget features to GCNFeatures.td

Move the GCN SubtargetFeature definitions, the FeatureISAVersion lists
and AMDGPUFrontendVisibleFeatures out of AMDGPU.td, so they can be used
without parsing the instruction, register and intrinsic definitions.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+2,840-0llvm/lib/Target/AMDGPU/GCNFeatures.td
+1-2,832llvm/lib/Target/AMDGPU/AMDGPU.td
+2,841-2,8322 files

LLVM/project e2f4802 — llvm/lib/Target/AMDGPU SISchedule.td AMDGPUSchedModels.td

AMDGPU: Move scheduling model defs to AMDGPUSchedModels.td

Split the SchedMachineModel definitions out of SISchedule.td so the
processor definitions can be parsed without the InstRW and other
instruction-dependent scheduling information.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+38-0llvm/lib/Target/AMDGPU/AMDGPUSchedModels.td
+1-26llvm/lib/Target/AMDGPU/SISchedule.td
+39-262 files

LLVM/project 6c27fc9 — llvm/lib/Transforms/InstCombine InstructionCombining.cpp, llvm/test/Transforms/InstCombine sink-align-assume.ll

[InstCombine] Fix InstCombine pass to sink llvm.assume calls (#229658)

When trying to sink a GEP instruction into the loop preheader the
InstCombine pass ignores and deletes an llvm.assume call that sets the
alignment for the pointer of the GEP instruction which later passes
depend on. This patch sinks such llvm.assume calls while sinking a
dependent instruction.

Fixes https://github.com/llvm/llvm-project/issues/226698.
DeltaFile
+110-0llvm/test/Transforms/InstCombine/sink-align-assume.ll
+14-5llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+124-52 files

LLVM/project 308aa0c — clang/lib/StaticAnalyzer/Checkers/WebKit RawPtrRefLocalVarsChecker.cpp, clang/test/Analysis/Checkers/WebKit unretained-local-vars.mm

[alpha.webkit.UnretainedLocalVarsChecker] Treat the collection of a fast enumeration as the origin of its element (#230818)

alpha.webkit.UnretainedLocalVarsChecker reported every element variable
of an Objective-C fast enumeration such as "for (T *x in collection)"
since the variable has no initializer, even when the collection was kept
alive by a RetainPtr local variable.

The element of a fast enumeration is kept alive by its collection, which
can't be mutated during the enumeration. So treat the collection as the
initial value of the element, as in "T *x = collection;". Because the
collection is evaluated before the loop body is entered, a guardian
local variable only needs to outlive the loop body; it can be declared
in the same scope as the loop as long as the loop body doesn't mutate
it.

The collection is a full-expression of its own so a temporary smart
pointer in the collection is destroyed before the loop body is entered
and isn't considered safe.

Authored with Claude Code.
DeltaFile
+102-0clang/test/Analysis/Checkers/WebKit/unretained-local-vars.mm
+36-3clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefLocalVarsChecker.cpp
+138-32 files

LLVM/project 6ebe7cb — clang/lib/StaticAnalyzer/Checkers/WebKit RawPtrRefLocalVarsChecker.cpp, clang/test/Analysis/Checkers/WebKit unchecked-local-vars.cpp uncounted-local-vars.cpp

[alpha.webkit.UncountedLocalVarsChecker] Don't treat a const operator call on a guardian as a mutation (#230900)

GuardianVisitor treated `guardian->method()` as a mutation of the
guardian because the implicit object argument of a member operator call
had no corresponding parameter, and the check fell back to the non-const
type of the guardian itself. Skip the implicit object argument when the
operator is a const member function, and only apply the argument offset
for implicit object member operators so that arguments of non-member
operators map to the right parameters.

Also treat passing a guardian to a const reference parameter as
non-mutating by checking the constness of the referenced type instead of
the reference type.

Coded with Claude code.
DeltaFile
+22-0clang/test/Analysis/Checkers/WebKit/uncounted-local-vars.cpp
+10-2clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefLocalVarsChecker.cpp
+9-0clang/test/Analysis/Checkers/WebKit/unchecked-local-vars.cpp
+41-23 files

LLVM/project c219f17 — llvm/lib/Target/AMDGPU AMDGPUSplitModule.cpp, llvm/test/tools/llvm-split/AMDGPU non-kernels-unreachable-cycles.ll

[AMDGPU][SplitModule] Add entry points for unreachable call cycles

A function in a call cycle always has an incoming direct call, so
`SplitGraph` never makes it an entry point. If no kernel and no other
entry point reaches the cycle, the cycle is assigned to no partition.
This can hit an assertion in `verifyGraph`.

In this PR, we visit the unreached nodes in reverse post-order of the
direct call edges, and make each node that is still unreached an entry
point. Only the outermost unreached cycles get one, so their callees
are not copied into other partitions.
DeltaFile
+40-1llvm/lib/Target/AMDGPU/AMDGPUSplitModule.cpp
+15-6llvm/test/tools/llvm-split/AMDGPU/non-kernels-unreachable-cycles.ll
+55-72 files

LLVM/project df29dfd — llvm/test/tools/llvm-split/AMDGPU non-kernels-unreachable-cycles.ll

[NFC][AMDGPU] Add a test showing unreachable call cycles in module splitting

If no entry point reaches a call cycle, `AMDGPUSplitModule` creates no
entry point for it. In assertion builds, `verifyGraph()` fails. In
release builds, no partition defines the functions in the cycle.

Add a test that shows the current crash.
DeltaFile
+35-0llvm/test/tools/llvm-split/AMDGPU/non-kernels-unreachable-cycles.ll
+35-01 files

LLVM/project e170537 — flang/docs DesignGuideline.md, libcxx/docs Contributing.md

[docs] Update obsolete Phabricator references for GitHub workflows (#229542)

Use GitHub pull requests in the contribution and code-review guidance,
remove obsolete Phabricator contact handles and infrastructure listings,
and update source links to their current locations.

Assisted-by: Codex
DeltaFile
+13-11libcxx/docs/Contributing.md
+6-5flang/docs/DesignGuideline.md
+2-4llvm/docs/CodeReview.md
+2-3llvm/docs/Contributing.md
+1-2llvm/docs/SupportPolicy.md
+1-1llvm/docs/Proposals/VectorPredication.md
+25-263 files not shown
+28-299 files

LLVM/project 72f3515 — llvm/lib/Target/AMDGPU AMDGPUSplitModule.cpp, llvm/test/tools/llvm-split/AMDGPU non-kernels-unreachable-cycles.ll

[AMDGPU][SplitModule] Add entry points for unreachable call cycles

A function in a call cycle always has an incoming direct call, so
`SplitGraph` never makes it an entry point. If no kernel and no other
entry point reaches the cycle, the cycle is assigned to no partition.
This can hit an assertion in `verifyGraph`.

In this PR, we visit the unreached nodes in reverse post-order of the
direct call edges, and make each node that is still unreached an entry
point. Only the outermost unreached cycles get one, so their callees
are not copied into other partitions.
DeltaFile
+40-1llvm/lib/Target/AMDGPU/AMDGPUSplitModule.cpp
+15-6llvm/test/tools/llvm-split/AMDGPU/non-kernels-unreachable-cycles.ll
+55-72 files

LLVM/project aa8bca2 — llvm/test/tools/llvm-split/AMDGPU non-kernels-unreachable-cycles.ll

[NFC][AMDGPU] Add a test showing unreachable call cycles in module splitting

If no entry point reaches a call cycle, `AMDGPUSplitModule` creates no
entry point for it. In assertion builds, `verifyGraph()` fails. In
release builds, no partition defines the functions in the cycle.

Add a test that shows the current crash.
DeltaFile
+35-0llvm/test/tools/llvm-split/AMDGPU/non-kernels-unreachable-cycles.ll
+35-01 files

LLVM/project 7ca1269 — clang-tools-extra/docs/clang-tidy Contributing.rst

[clang-tidy][docs] Fix ExplicitConstructorCheck example links (#229932)

Point the contribution guide at the current
misc/ExplicitConstructorCheck header and implementation. Replace the
obsolete Phabricator source-browser link with the GitHub source link.

Assisted-by: Codex
DeltaFile
+4-4clang-tools-extra/docs/clang-tidy/Contributing.rst
+4-41 files

LLVM/project 7f6afc5 — llvm/unittests/DebugInfo/DWARF CMakeLists.txt

[unittests] Fix shared build. NFC (#230963)
DeltaFile
+1-0llvm/unittests/DebugInfo/DWARF/CMakeLists.txt
+1-01 files

LLVM/project 4a59f39 — llvm/test/CodeGen/MLRegAlloc dev-mode-prio-logging.ll, llvm/test/CodeGen/MLRegAlloc/Inputs reference-prio-log-noml.txt reference-log-noml.txt

[MLGO][RegAlloc] Update test expectations after #228618 (#230973)

Test fixes after #228618: SlotIndex distances and resulting LiveInterval
sizes changed.
DeltaFile
+32-32llvm/test/CodeGen/MLRegAlloc/Inputs/reference-prio-log-noml.txt
+32-32llvm/test/CodeGen/MLRegAlloc/Inputs/reference-log-noml.txt
+2-2llvm/test/CodeGen/MLRegAlloc/dev-mode-prio-logging.ll
+66-663 files

LLVM/project f365350 — llvm/lib/CodeGen CodeGenPrepare.cpp, llvm/lib/Target/AArch64 AArch64ISelLowering.cpp

[CodeGenPrepare] Handle negative GEP offsets in splitLargeGEPOffsets (#227627)

CodeGenPrepare::splitLargeGEPOffsets collects GEP candidates with large
constant offsets and rebases them to a shared common base, but only for
positive offsets (`ConstantOffset > 0`). Negative far-offset accesses
are left with independent `SUBXri` base materializations per access,
giving them different base registers and preventing the
`LoadStoreOptimizer` from pairing them into `LDP/STP`.

Relax the gate to `ConstantOffset != 0`, and extend
`AArch64TargetLowering::getPreferredLargeGEPBaseOffset` to handle
negative offsets using the same `HighPart = MinOffset & ~0xfff` rebase
as positive ones. For negative `MinOffset`, `HighPart` is the next lower
4096-aligned address, so all residuals (`Offset - HighPart`) are
non-negative and fit `LDR/STR`'s 12-bit unsigned scaled immediate. When
the residual also falls within `LDP/STP`'s 7-bit pairing range, `LSO`
pairs directly; otherwise `LSO`'s base-adjust (#223684) folds in an
extra `ADDXri` (or merges it into a preceding `SUBXri`/`ADDXri` when
adjacent), recovering the same instruction count as a direct rebase to

    [42 lines not shown]
DeltaFile
+127-0llvm/test/CodeGen/AArch64/large-neg-offset-gep.ll
+6-4llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+1-1llvm/lib/CodeGen/CodeGenPrepare.cpp
+134-53 files

LLVM/project cd9c8d0 — llvm/include/llvm/IR Instructions.h, llvm/include/llvm/Support Alignment.h

[Alignment] Add a static function to construct an `Align` from power-of-2 values (#230920)

Many call sites of the `Align` constructor uses it as `Align(1ULL << n)`, and
the constructors takes the `Log2` of the value. Add a new static function to
allow `Align::fromLog2(n)` and update old call sites. This avoids the
unnecessary `Log2(1ULL << n)` computations when constructing `Align`s.
DeltaFile
+8-5llvm/lib/Transforms/Instrumentation/TypeSanitizer.cpp
+9-4llvm/include/llvm/Support/Alignment.h
+11-0llvm/unittests/Support/AlignmentTest.cpp
+5-5llvm/include/llvm/IR/Instructions.h
+4-4llvm/lib/MC/MCParser/AsmParser.cpp
+4-4llvm/lib/CodeGen/MachineBlockPlacement.cpp
+41-2222 files not shown
+71-4928 files

LLVM/project ea5ee40 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 wide-load-absorbed-lane.ll

[SLP]Fix miscompile of absorbing lanes in flattened chains

The operand columns, peeled while flattening the associative chains,
modeled the lane with the absorbing constant as op(C, poison). Such
lanes belong to the real instructions of the flattened node, so the
poison operand is not frozen there and the lane becomes poison. Keep the
identity as the other operand for the peeled columns.

Follow-up to #228872.

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/230959
DeltaFile
+9-6llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+1-1llvm/test/Transforms/SLPVectorizer/X86/wide-load-absorbed-lane.ll
+10-72 files

LLVM/project 092914e — llvm/test/Transforms/SLPVectorizer/X86 wide-load-absorbed-lane.ll

[SLP][NFC]Add a test with incorrect vectorization, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/230958
DeltaFile
+30-0llvm/test/Transforms/SLPVectorizer/X86/wide-load-absorbed-lane.ll
+30-01 files

LLVM/project 6c3a6e0 — clang/lib/Lex PPDirectives.cpp, clang/lib/Sema SemaDeclAttr.cpp

[clang] Do not compute typo-correction suggestions for disabled diagnostics (#209694)

While benchmarking I noticed that Boost.MPL compiles with ~1.2% more
instructions
after #140629.
clang spends a fair amount of time computing typo-correction
suggestions for diagnostics that are never emitted, for example Boost
doesn't contain any
typos, so all of this work produces nothing.

We can easily avoid this overhead by checking `isIgnored()` before
computing
suggestions, and by not treating known non-conditional directives as
typos.

You can see the improvement here:

https://llvm-compile-time-tracker.com/compare.php?from=49de424f45389cb757c3cc8c50daf38d024e2314&to=89a68cd24f9fabf15897d7b20b77bb5b0bfb9c16&stat=instructions%3Au
DeltaFile
+19-7clang/lib/Lex/PPDirectives.cpp
+6-0clang/lib/Sema/SemaDeclAttr.cpp
+25-72 files

LLVM/project 9a41343 — llvm/lib/CodeGen MachineScheduler.cpp MachinePipeliner.cpp, llvm/lib/CodeGen/SelectionDAG ScheduleDAGFast.cpp ScheduleDAGRRList.cpp

[MISched] Unify SUnit formatting among users (#229756)

This patch migrates diverging SUnit formats, that form a minority in the
codebase, to a single unified format dictated by the new SUnit's
operator<<.
DeltaFile
+22-22llvm/test/CodeGen/AArch64/misched-detail-resource-booking-01.mir
+18-20llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
+15-15llvm/test/CodeGen/SystemZ/misched-prera-loads.mir
+9-10llvm/lib/CodeGen/MachinePipeliner.cpp
+8-8llvm/lib/CodeGen/MachineScheduler.cpp
+6-6llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp
+78-818 files not shown
+98-10414 files

LLVM/project a6924cb — llvm/lib/Transforms/Utils VNCoercion.cpp, llvm/test/Transforms/GVN pr14166.ll pr63059.ll

[GVN] Preserve per-lane `poison` when forwarding vectors
DeltaFile
+69-170llvm/test/Transforms/GVN/vector-poison.ll
+50-67llvm/test/Transforms/GVN/pr63059.ll
+59-2llvm/lib/Transforms/Utils/VNCoercion.cpp
+0-1llvm/test/Transforms/GVN/pr14166.ll
+178-2404 files

LLVM/project 600a5eb — llvm/test/Transforms/GVN vector-poison.ll

[GVN] Pre-commit tests for forwarding vectors with `poison` lanes
DeltaFile
+329-0llvm/test/Transforms/GVN/vector-poison.ll
+329-01 files

LLVM/project f4601bd — llvm/test/tools/llubi assume_func_addr.ll, llvm/tools/llubi/lib Context.cpp

[llubi] Don't ignore address taken by assume-like intrinsics (#230938)

The function pointer used by `llvm.assume` is still evaluated.

The test is generated by DeepSeek-V4.1-Flash.
DeltaFile
+12-0llvm/test/tools/llubi/assume_func_addr.ll
+3-1llvm/tools/llubi/lib/Context.cpp
+15-12 files