LLVM/project f193d19llvm/lib/Target/SPIRV SPIRVInstructionSelector.cpp, llvm/test/CodeGen/SPIRV/hlsl-resources/NonUniformIdx RWBufferNonUniformIdxLoop.ll

[SPIR-V] Fix OpDecorate insertion point for non-PHI defs in decorateUsesAsNonUniform (#212524)

Inserting before the defining instruction placed the decoration ahead of
its own operand, breaking dominance for the loop-carried case

Fix machine code errors from
https://github.com/llvm/llvm-project/pull/208224#issuecomment-5095074660
DeltaFile
+2-1llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp
+1-1llvm/test/CodeGen/SPIRV/hlsl-resources/NonUniformIdx/RWBufferNonUniformIdxLoop.ll
+3-22 files

LLVM/project 83ed1d0llvm/lib/Target/SPIRV SPIRVGlobalRegistry.h SPIRVGlobalRegistry.cpp

[NFC][SPIR-V] Add constrainSelectedInstRegOperands helper to dedup repeating pattern in global registry (#208703)
DeltaFile
+13-24llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
+2-0llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h
+15-242 files

LLVM/project 9ba969cllvm/lib/Target/SPIRV SPIRVBuiltins.cpp, llvm/test/CodeGen/SPIRV get-global-id-non-integer-dim.ll

[SPIR-V] Reject builtin calls if mangled argument types do not match the IR (#208152)
DeltaFile
+84-0llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
+12-12llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_tensor_float32_conversion/tf32-conv.ll
+18-0llvm/test/CodeGen/SPIRV/get-global-id-non-integer-dim.ll
+114-123 files

LLVM/project 8c5193blldb/test/Shell/Settings TestCxxFrameFormatRecursive.test

[lldb][test] Use C++ frontend for building C++ test file (#212611)
DeltaFile
+1-1lldb/test/Shell/Settings/TestCxxFrameFormatRecursive.test
+1-11 files

LLVM/project a7b2a20clang/include/clang/Basic DiagnosticASTKinds.td, clang/lib/AST ExprConstant.cpp

[clang] Improve diagnostics around constexpr limits (#212091)

1) Mention the limit in the "constexpr evaluation hit maximum step
limit" diagnostic as well
2) Move the "use -fconstexpr-steps" instruction to its own note so we
can reuse it for two different diagnostics

For
```c++
struct S {
  constexpr S() {}
};
constexpr S foo[1'500'000] = {};
```
we used to emit
```console
array.cpp:1028:13: error: constexpr variable 'foo' must be initialized by a constant expression
 1028 | constexpr S foo[1'500'000] = {};
      |             ^                ~~

    [21 lines not shown]
DeltaFile
+10-5clang/test/SemaCXX/constexpr-function-recovery-crash.cpp
+7-3clang/lib/AST/ExprConstant.cpp
+6-3clang/test/SemaCXX/cxx2a-constexpr-dynalloc-limits.cpp
+4-3clang/include/clang/Basic/DiagnosticASTKinds.td
+4-2clang/test/AST/ByteCode/dynalloc-limits.cpp
+4-2clang/test/AST/ByteCode/constexpr-steps.cpp
+35-186 files not shown
+50-2112 files

LLVM/project 3df3102lld/test/ELF ppc32-call-stub-nopic.s ppc64-ifunc.s

[test] Migrate Hexagon/PowerPC thunk tests to the default thunk order (#212693)

Drop -z nosort-thunks (added by #211721 to keep creation order) and
update expectations to the default order: forward thunks sorted by
descending destination.
DeltaFile
+39-32lld/test/ELF/ppc32-call-stub-pic.s
+22-20lld/test/ELF/ppc32-long-thunk.s
+16-16lld/test/ELF/ppc64-call-reach.s
+13-13lld/test/ELF/ppc64-long-branch.s
+12-12lld/test/ELF/ppc64-ifunc.s
+10-10lld/test/ELF/ppc32-call-stub-nopic.s
+112-1033 files not shown
+135-1269 files

LLVM/project 9d3cf1dclang/include/clang/Basic ABIVersions.def, clang/lib/Basic/Targets X86.h X86.cpp

[Clang][X86] Introduce Clang ABI Gate for MSVC alignment (#210305)

On x86_64-windows-msvc after 8ecec455183f, clang applies the MSVC
size-based global-alignment scheme (Microsoft64BitMinGlobalAlign) and
does not apply the Sys V "large array" alignment increase. Users may
want to preserve the earlier ABI for compatibility with objects produced
by older clang releases.

Gate this behavior on the Clang ABI compatibility level. When
`-fclang-abi-compat=22` (or lower) is in effect,
MicrosoftX86_64TargetInfo restores LargeArrayMinWidth/LargeArrayAlign to
128 and getMinGlobalAlign skips the Microsoft64BitMinGlobalAlign step,
matching the older alignment choices.

Assisted by Claude (Anthropic).

(cherry picked from commit cb383a37440d27238f8a01eee05228910d65d63e)
DeltaFile
+19-0clang/lib/Basic/Targets/X86.cpp
+7-2clang/include/clang/Basic/ABIVersions.def
+8-0clang/test/CodeGenCXX/ms-constexpr-static-data-member.cpp
+8-0clang/lib/Basic/Targets/X86.h
+2-0clang/test/CodeGen/align-x68_64.c
+44-25 files

LLVM/project 5bc047bllvm/lib/Target/AArch64 AArch64Subtarget.h, llvm/test/CodeGen/AArch64 ragreedy-local-interval-cost.ll aarch64-no-mov-spill-chain.ll

Revert "[AArch64] Enable Spillage Copy Elimination by default" (#211572)

Reverts llvm/llvm-project#186093

Issue https://github.com/llvm/llvm-project/issues/206839 shows that
EliminateSpillageCopies is not currently ready to be enabled by default
on AArch64. https://github.com/llvm/llvm-project/pull/207169 was raised
to fix the issue, but concerns were raised around complexity of the
function and change. Until a suitable solution can be found,
EliminateSpillageCopy will be disabled on AArch64 by default.

For those who wish to still use the pass, `-enable-spill-copy-elim=true`
will ensure the pass is run.

(cherry picked from commit debd8a7f889b29551dff7897f807e17f90eeee1d)
DeltaFile
+0-403llvm/test/CodeGen/AArch64/aarch64-no-mov-spill-chain.ll
+31-21llvm/test/CodeGen/AArch64/ragreedy-local-interval-cost.ll
+0-1llvm/lib/Target/AArch64/AArch64Subtarget.h
+31-4253 files

LLVM/project 21eaea4llvm/lib/Target/AArch64 AArch64ISelLowering.h AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 sve-fixed-length-masked-64-128bit-stores.ll sve-fixed-length-masked-64-128bit-loads.ll

[AArch64][SVE] Support lowering masked loads/stores of <4 x bf16> and <8 x bf16> (#208744)

Add support for lowering masked loads/stores of <4 x bf16> and <8 x
bf16> when target features contain "+sve" and "+bf16".

Fixes: #201149
(cherry picked from commit b9869c8c920a7dfa983e215bc30729b13d8b353b)
DeltaFile
+148-0llvm/test/CodeGen/AArch64/sve-fixed-length-masked-64-128bit-loads.ll
+143-0llvm/test/CodeGen/AArch64/sve-fixed-length-masked-64-128bit-stores.ll
+13-7llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+4-1llvm/lib/Target/AArch64/AArch64ISelLowering.h
+308-84 files

LLVM/project 08ac985llvm/docs/_static custom.css

[Docs] don't stylize syntax errors in code blocks

When a code block in the documentation contains (almost) pseudocode, the
Pygments parses flags erros and renders them with red-bordered boxes. This is
unnecessarily ugly. We can see examples of this in the LangRef with LLVM code
blocks.

Instead set the style to just render them as plain text. This still stands out
as unrecognized syntax, but does not distract the reader from reading the actual
example.

Assisted-by: Claude Opus 4.8
DeltaFile
+8-0llvm/docs/_static/custom.css
+8-01 files

LLVM/project 7c08016llvm/lib/Target/AMDGPU SILoadStoreOptimizer.cpp, llvm/test/CodeGen/AMDGPU merge-tbuffer-gfx12.mir merge-tbuffer-gfx10.mir

[AMDGPU] Gate TBUFFER merging on relaxed OOB mode
DeltaFile
+75-0llvm/test/CodeGen/AMDGPU/merge-tbuffer-gfx11.mir
+57-0llvm/test/CodeGen/AMDGPU/merge-tbuffer-gfx9.mir
+56-0llvm/test/CodeGen/AMDGPU/merge-tbuffer-gfx12.mir
+56-0llvm/test/CodeGen/AMDGPU/merge-tbuffer-gfx10.mir
+6-0llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
+250-05 files

LLVM/project fe1201cllvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 sve-fixed-length-masked-scatter.ll sve-fixed-length-masked-gather.ll

[AArch64] Add lowering for fixed-vector bf16 masked gather/scatter. (#210273)

Similar to #208744, this makes sure that bf16 masked gather and scatter
work with fixed-length sve enabled. Without +bf16 the operations are
currently expanded pre-isel, but that will not be fixed in this patch as
it is a larger change and this patch is intended to be ported to the
branch.

(cherry picked from commit 32221d9ff8f4772972193ebf7b8ba4974cd8458f)
DeltaFile
+155-2llvm/test/CodeGen/AArch64/sve-fixed-length-masked-gather.ll
+145-4llvm/test/CodeGen/AArch64/sve-fixed-length-masked-scatter.ll
+5-4llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+305-103 files

LLVM/project 5c647f2llvm/lib/Target/RISCV RISCVInstrInfoZilx.td

Reword comments

Created using spr 1.3.6-beta.1
DeltaFile
+8-7llvm/lib/Target/RISCV/RISCVInstrInfoZilx.td
+8-71 files

LLVM/project 52f6c88llvm/include/llvm/CodeGen ValueTypes.h, llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp

[Codegen] Replace any_of with is_contained. NFC (#212289)

A new operator== for SVT and EVT was apparently needed with reverse
operands.
DeltaFile
+6-7llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+1-1llvm/lib/Transforms/Utils/LoopUnroll.cpp
+1-1llvm/lib/Target/X86/X86ISelLowering.cpp
+1-1llvm/lib/Target/NVPTX/NVPTXUtilities.h
+1-1llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+2-0llvm/include/llvm/CodeGen/ValueTypes.h
+12-116 files

LLVM/project b67c5a8llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 sve-fixed-length-partial-reduce.ll

[AArch64][SVE] Fix v16i8 -> v2i64 partial_reduce for VL > 128 (#204938)

A fixed-length `llvm.vector.partial.reduce.add` reducing `<16 x i8>`
into `<2 x i64>` is lowered on `+sve` by converting the reduction to a
scalable one and finishing with `convertFromScalableVector`. The i8 ->
i64 fold splits the `(nx)v4i32` dot before converting it back to fixed
length, but splitting a scalable container is not equivalent to
splitting the fixed vector it holds: at vscale=2 an `nxv4i32` container
splits into two `nxv2i32`, each holding four i32s, not the two-lane
halves of the underlying `v4i32`. The high partial sums land in lanes
that `convertFromScalableVector` then discards, so any runtime VL > 128
silently drops them — on a 256-bit machine (e.g. Neoverse V1) exactly
half the result is lost (#204939; downstream miscompile
rust-lang/rust#158144).

Convert the dot back to a fixed-length i32 vector before splitting, so
the split, widen and accumulate all happen in fixed length and no lanes
are dropped. The fixed dot width is derived from the result (two i32
lanes per i64 result lane) so the wider, VL-pinned `<4 x i64> <- <32 x

    [6 lines not shown]
DeltaFile
+532-126llvm/test/CodeGen/AArch64/sve-fixed-length-partial-reduce.ll
+26-16llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+558-1422 files

LLVM/project faa811cllvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/RISCV truncate-to-minimal-bitwidth-cost.ll strided-access-wide-stride.ll

[VPlan] zext canonical IV in convertToStridedAccesses (#212291)

Currently we sext it which isn't correct at TCs > UINT32_MAX. Makes
DeltaFile
+4-4llvm/test/Transforms/LoopVectorize/RISCV/strided-accesses-narrow-iv.ll
+2-2llvm/test/Transforms/LoopVectorize/RISCV/strided-accesses.ll
+1-1llvm/test/Transforms/LoopVectorize/RISCV/truncate-to-minimal-bitwidth-cost.ll
+1-1llvm/test/Transforms/LoopVectorize/RISCV/strided-access-wide-stride.ll
+1-1llvm/test/Transforms/LoopVectorize/RISCV/dead-ops-cost.ll
+1-1llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+10-106 files

LLVM/project e1f2703lldb/source/Plugins/Language/ObjC ObjCLanguage.cpp, lldb/source/Plugins/LanguageRuntime/ObjC ObjCLanguageRuntime.cpp

[LLDB] Hide unresolvable children from ObjC tagged pointers  (#211936)

Foundation's small value inline representations have valid summaries and
sometimed synthetic children, but LLDB cannot access any ivars from
their base classes (such as [NSObject isa]).

Use a synthetic child provider to hide them.

rdar://182434208

Assisted-by: claude
(cherry picked from commit 4f02e1e45c2711a94dae0eac2051ad7c2e5ca8c2)
DeltaFile
+115-0lldb/test/API/lang/objc/tagged-pointer-children/TestTaggedPointerChildren.py
+39-0lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp
+32-0lldb/test/API/lang/objc/tagged-pointer-children/tagged_synth_provider.py
+19-0lldb/test/API/lang/objc/tagged-pointer-children/main.m
+17-0lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.cpp
+4-0lldb/test/API/lang/objc/tagged-pointer-children/Makefile
+226-02 files not shown
+231-08 files

LLVM/project ef9887bclang/lib/Parse ParseDecl.cpp, clang/lib/Sema DeclSpec.cpp

[Clang] Avoid querying tag definitions for invalid DeclSpecs (#210085)

Guard hasTagDefinition() against invalid type-specifier state so
recovery from invalid auto/tag combinations does not assert.
Fixes #210014

---------

Signed-off-by: Osama Abdelkader <osama.abdelkader at gmail.com>
(cherry picked from commit de4b1f5572f8ff5a38a17655584ae200774551c6)
DeltaFile
+7-1clang/lib/Parse/ParseDecl.cpp
+5-0clang/test/SemaCXX/auto-cxx0x.cpp
+1-1clang/lib/Sema/DeclSpec.cpp
+13-23 files

LLVM/project 9cdb421mlir/test/IR invalid-ops.mlir, mlir/test/lib/Dialect/Test TestOpsSyntax.td

[MLIR] Validate directly parsed optional operand types (#212493)

Commit 6c51938067fa ([MLIR] Guard optional operand resolution in
generated op parsers) guarded resolution of every optional operand to
avoid indexing an empty inferred type range. The guard also skipped
resolveOperands when an optional operand was absent but an independently
optional type directive was present. This accepted malformed assembly
and silently discarded the orphan type when printing the operation.

Keep the guard for inferred type resolutions, which may access an empty
optional type vector, but always resolve directly parsed type ranges so
resolveOperands validates operand/type cardinality. Add coverage for
both valid forms and a type-only negative reproducer.
DeltaFile
+12-5mlir/tools/mlir-tblgen/OpFormatGen.cpp
+10-0mlir/test/lib/Dialect/Test/TestOpsSyntax.td
+6-0mlir/test/mlir-tblgen/op-format.mlir
+5-0mlir/test/IR/invalid-ops.mlir
+33-54 files

LLVM/project 02a26cbclang/lib/Driver/ToolChains Hexagon.cpp, clang/test/Driver hexagon-toolchain-linux.c

[Hexagon] Link static PIE executables against rcrt1.o (#210125)

We always selected crt1.o as the CRT start file, regardless of link
mode.

Select rcrt1.o - the self-relocating static-PIE start file when -static
and PIE are active

(cherry picked from commit c45b4e4d00bed488d6ece5608560561732ae5b9e)
DeltaFile
+43-0clang/test/Driver/hexagon-toolchain-linux.c
+8-5clang/lib/Driver/ToolChains/Hexagon.cpp
+51-52 files

LLVM/project ad300a7llvm/include/llvm/IR Instruction.h, llvm/lib/IR Instruction.cpp

[IR] Remove deprecated InsertPosition(Instruction*) constructor (#212640)

This implicit constructor has been marked deprecated since almost 2
years in favor of constructing an InsertPosition from a
BasicBlock::iterator.
Remove it now that in-tree users no longer rely on it.

Co-authored-by: Claude <noreply at anthropic.com>
DeltaFile
+0-3llvm/lib/IR/Instruction.cpp
+0-3llvm/include/llvm/IR/Instruction.h
+0-62 files

LLVM/project 4d9c130clang/cmake/caches hexagon-unknown-linux-musl-clang-dylib-dist.cmake hexagon-unknown-linux-musl-clang-dist.cmake

[Hexagon] Fix compiler-rt install dir type, scope sanitizers (#209375)

COMPILER_RT_INSTALL_LIBRARY_DIR must be CACHE STRING, not CACHE PATH: a
relative PATH-typed cache entry resolves against the runtimes sub-build
directory instead of CMAKE_INSTALL_PREFIX, misplacing sanitizer libs.

Replace the explicit COMPILER_RT_BUILD_* ON list with
COMPILER_RT_SANITIZERS_TO_BUILD=all, since those options already default
ON upstream and infeasible sanitizers self-exclude via their own
ALL_<X>_SUPPORTED_ARCH lists.

Add FORCE to the dylib overrides so they take effect after
hexagon-unknown-linux-musl-clang-dist.cmake has already cached them OFF.

(cherry picked from commit 34aefe9744fa83fa222d7f28e073c693c2c4ff5b)
DeltaFile
+12-8clang/cmake/caches/hexagon-unknown-linux-musl-clang-dist.cmake
+3-3clang/cmake/caches/hexagon-unknown-linux-musl-clang-dylib-dist.cmake
+15-112 files

LLVM/project 0bb4a64llvm/lib/Target/RISCV RISCVInstrInfo.cpp, llvm/test/CodeGen/RISCV/rvv vmerge-peephole.mir

[RISCV] Don't move memory instructions across calls in isSafeToMove (#212236)

RISCVInstrInfo::isSafeToMove scans the instructions between From and To
to decide whether a memory instruction can be moved, but it only treated
mayStore() instructions as barriers. Calls on RISC-V are modeled with
isCall() and a register mask rather than mayStore(), so a load could be
moved across a call even though the callee may clobber the loaded
memory.

RISCVVectorPeephole::foldVMergeToMask uses this helper via ensureDominates()
to sink a load into a masked load when folding it into a vmerge, which
produced wrong code when the load was sunk past a call.

Instead of hand-rolling the barrier check, call MachineInstr::isSafeToMove
on each intervening instruction to populate SawStore. That is the same
helper used on From below, and it already treats calls (as well as PHIs
and ordered memory references) as stores.

This fixes #212226.

    [3 lines not shown]
DeltaFile
+24-0llvm/test/CodeGen/RISCV/rvv/vmerge-peephole.mir
+2-3llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
+26-32 files

LLVM/project fc8295fllvm/docs ReleaseNotes.md

[lldb][Windows] Add missing release notes
DeltaFile
+7-0llvm/docs/ReleaseNotes.md
+7-01 files

LLVM/project 471d32fclang/lib/Headers ptrauth.h

[PAC][Headers] Fix incorrect comment in ptrauth.h (#207265)

The discriminator which is used to sign pointers to v-tables
is not always zero.

(cherry picked from commit 26643a89ddf98e48e986d25ceb10f673735bc7d7)
DeltaFile
+1-2clang/lib/Headers/ptrauth.h
+1-21 files

LLVM/project f4382bellvm/lib/Target/ARM ARMAsmPrinter.cpp, llvm/test/CodeGen/ARM elf-preemption.ll

[ARM] Exclude TLS symbols from the .reloc/R_ARM_REL32 path (#212549)

The .reloc branch in emitMachineConstantPoolValue fired for any
isWeakForLinker() + isDSOLocal() symbol, including TLS (thread_local)
weak symbols. R_ARM_REL32 is wrong for TLS: TLS symbols need
TLS-specific relocations (R_ARM_TLS_GD32 etc.). Using R_ARM_REL32 for a
TLS symbol produces a wrong address at runtime.

This broke the 2-stage ARM 32-bit buildbots: stage 1 (with the .reloc
branch) miscompiled stage 2's BPF codegen (BTFDebug.cpp references
llvm::sys::sandbox::Enabled, an inline thread_local weak variable),
causing a SIGSEGV in the BPF Assembly Printer.

Add a regression test (tls_weak_var in elf-preemption.ll) verifying that
TLS weak symbols get TLSGD/TPOFF, not R_ARM_REL32.

Fix #212545
DeltaFile
+35-0llvm/test/CodeGen/ARM/elf-preemption.ll
+5-4llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+40-42 files

LLVM/project 40f95afutils/bazel/llvm-project-overlay/llvm BUILD.bazel

[Bazel] Fixes c2fa412 (#212688)

This fixes c2fa4128681863d92b2fe1615beb73e2ed62876f (#212353).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=c2fa4128681863d92b2fe1615beb73e2ed62876f

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+12-0utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+12-01 files

LLVM/project 161f2f7clang/lib/Basic/Targets AMDGPU.cpp, clang/lib/Driver OffloadBundler.cpp

Fixes and merge
DeltaFile
+8-4clang/lib/Basic/Targets/AMDGPU.cpp
+4-3clang/lib/Driver/OffloadBundler.cpp
+12-72 files

LLVM/project 0629daaclang/include/clang/Basic TargetID.h, clang/lib/Basic TargetID.cpp

clang: Use TargetID parsing from AMDGPUTargetParser

We had grown 2 parallel parsing implementations for
triple+gpu name+feature flag target ID strings. Mostly
eliminate the redundant clang version.

Co-authored-by: Claude (Opus 4.8)
DeltaFile
+30-165clang/lib/Basic/TargetID.cpp
+48-50clang/lib/Driver/ToolChains/AMDGPU.cpp
+27-41clang/lib/Driver/OffloadBundler.cpp
+7-33clang/include/clang/Basic/TargetID.h
+18-14clang/lib/Basic/Targets/AMDGPU.h
+17-14clang/lib/Basic/Targets/AMDGPU.cpp
+147-3175 files not shown
+172-34111 files

LLVM/project 848eac2clang/test/OffloadTools/clang-offload-bundler basic.c

test
DeltaFile
+11-0clang/test/OffloadTools/clang-offload-bundler/basic.c
+11-01 files