LLVM/project 7c31d55llvm/test/tools/llubi gep.ll, llvm/tools/llubi/lib Context.cpp

[llubi] Fix GEP return type on the fast path (#214235)

Closes https://github.com/llvm/llvm-project/issues/214144.
DeltaFile
+12-6llvm/tools/llubi/lib/Context.cpp
+3-0llvm/test/tools/llubi/gep.ll
+15-62 files

LLVM/project d16d1a6llvm/test/Transforms/LoopVectorize vplan-based-stride-mv.ll vplan-based-stride-mv-btc.ll

[NFC][VPlan] Extract BTC-related test into `vplan-based-stride-mv-btc.ll`

...and add RUN lines with scalable vectors there.
DeltaFile
+1,488-0llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv-btc.ll
+2-800llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv.ll
+1,490-8002 files

LLVM/project 3260715lldb/source/ValueObject DILEval.cpp, lldb/test/API/commands/frame/var-dil/expr/Comparison main.cpp TestFrameVarDILExprComparison.py

Fix array to array comparison
DeltaFile
+7-6lldb/test/API/commands/frame/var-dil/expr/Comparison/TestFrameVarDILExprComparison.py
+4-6lldb/source/ValueObject/DILEval.cpp
+4-1lldb/test/API/commands/frame/var-dil/expr/Comparison/main.cpp
+15-133 files

LLVM/project e791d91llvm/lib/Target/AMDGPU AMDGPUInsertDelayAlu.cpp, llvm/test/CodeGen/AMDGPU insert-delay-alu-wmma.mir insert-delay-alu-wmma-xdl.mir

[AMDGPU] Skip s_delay_alu for WMMA C-reuse chains (#214101)

Consecutive wmma/swmmac ops accumulating into the same matrix C register
reuse the accumulator in place, so the tied srcC read is omitted and no
delay is needed. AMDGPUInsertDelayAlu did not model this and emitted an
s_delay_alu that stalls the reuse chain.

Detect a C-reuse edge (tied srcC exactly matches the previous wmma/
swmmac dest, with no intervening instruction) and skip the delay for
that operand. This applies on all wmma-capable targets (gfx11+).
DeltaFile
+70-0llvm/test/CodeGen/AMDGPU/insert-delay-alu-wmma-xdl.mir
+33-0llvm/test/CodeGen/AMDGPU/insert-delay-alu-wmma.mir
+21-0llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
+124-03 files

LLVM/project b870d4fclang-tools-extra/clangd/unittests HoverTests.cpp, clang/lib/Parse ParseHLSL.cpp

[clangd][ParseHLSL] Fix register attribute source range for hover inside arguments (#212881)

Hovering on the slot identifier inside `register(t1)` (e.g. on `t1`)
previously produced no tooltip, only hovering on the `register` keyword
itself worked.

`HLSLResourceBindingAttr`'s `SourceRange` was zero-width: both the start
and end pointed to the start of the `register` keyword.
`ParseHLSLAnnotations` called `Attrs.addNew` with a single
`SourceLocation` instead of a full `SourceRange`. Since clangd's
`SelectionTree` only matches when the cursor falls inside an attribute's
range, a zero-width range never matched positions inside the argument.

Capture the closing `)` location before it's consumed in the
`AT_HLSLResourceBinding` case, and pass a full `SourceRange` (from the
attribute start to the closing paren) to `addNew`.

Fixes #212749
DeltaFile
+19-0clang-tools-extra/clangd/unittests/HoverTests.cpp
+7-0clang/test/AST/HLSL/resource_binding_attr.hlsl
+4-1clang/lib/Parse/ParseHLSL.cpp
+30-13 files

LLVM/project a80d93fmlir/include/mlir/Dialect/Bufferization/Transforms Bufferize.h, mlir/lib/Dialect/Bufferization/Transforms Bufferize.cpp

[mlir][bufferization] Bufferize all edges to a repeated successor (#214368)

bufferizeBlockSignature only rewrote the first successor index that
matched the target block. Branch ops such as cf.cond_br can list the
same destination more than once, but the later edges were left as
tensors and broke multi-block bufferization.

Now we simply iterate the block's BlockOperands so each successor edge
is handled once.
DeltaFile
+24-0mlir/test/Dialect/ControlFlow/one-shot-bufferize.mlir
+7-7mlir/lib/Dialect/Bufferization/Transforms/Bufferize.cpp
+1-1mlir/include/mlir/Dialect/Bufferization/Transforms/Bufferize.h
+32-83 files

LLVM/project 08d27f0clang/include/clang/Basic SPIRVTypes.def, clang/lib/AST ASTContext.cpp

[Clang][SPIRV] Add __spirv_event_t builtin type (#207077)

Add a new builtin type __spirv_event_t for SPIR-V targets. It represents
SPIR-V's OpTypeEvent and lowers to the target("spirv.Event") extension
type.

We would like to expose SPIR-V instructions to users via builtins (not
yet
implemented). The builtins return an event type.

Assisted by Claude Opus 4.8 for writing tests.
DeltaFile
+80-0clang/test/SemaCXX/spirv-event.cpp
+55-0clang/test/CodeGenCXX/spirv-event-type.cpp
+30-0clang/include/clang/Basic/SPIRVTypes.def
+29-0clang/test/Modules/spirv-event.cpp
+22-0clang/test/Sema/spirv-event.c
+17-0clang/lib/AST/ASTContext.cpp
+233-026 files not shown
+351-132 files

LLVM/project 19c5732llvm/test/Transforms/LoopVectorize/VPlan vplan-based-stride-mv.ll

Revert all changes
DeltaFile
+0-284llvm/test/Transforms/LoopVectorize/VPlan/vplan-based-stride-mv.ll
+0-2841 files

LLVM/project d89d134clang/test/CodeGen/AArch64 neon-intrinsics.c, clang/test/CodeGen/AArch64/neon store.c

Merge remote-tracking branch 'origin/main' into stride-mv-vscale-test
DeltaFile
+3,980-3,687llvm/test/CodeGen/AMDGPU/llvm.amdgcn.permlane.ll
+1,584-1,584llvm/test/Transforms/LoopVectorize/AArch64/partial-reduce-dot-product.ll
+2,340-0clang/test/CodeGen/AArch64/neon/store.c
+0-2,233clang/test/CodeGen/AArch64/neon-intrinsics.c
+1,130-583llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.gfx950.bf16.ll
+1,025-625llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fcopysign.mir
+10,059-8,7121,805 files not shown
+74,494-40,5581,811 files

LLVM/project 75de22fllvm/test/tools/llvm-objcopy/ELF binary-output-target.test cross-arch-headers.test

[llvm-objcopy] Address reviewer feedback on AMDGPU test cleanups

- Remove unused -DMACHINE yaml2obj template variable in cross-arch-headers.test,
  hardcode Machine: EM_NONE directly in the YAML instead
- Remove unused Flags: [[FLAGS=<none>]] template variable in cross-arch-headers.test
- Add comment in binary-output-target.test explaining that Arch: unknown is
  intentional when converting from binary (e_flags=0, no EF_AMDGPU_MACH set)
DeltaFile
+2-3llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+2-0llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
+4-32 files

LLVM/project cce7288llvm/test/tools/llvm-objcopy/ELF binary-output-target.test

[llvm-objcopy] Add AMDGPU case to binary-output-target.test

Add test coverage for converting binary input to elf64-amdgpu format,
verifying the output has the correct format string, arch (amdgpu),
and machine type (EM_AMDGPU 0xE0). Follows the same pattern as all
other architectures in this test file.
DeltaFile
+6-0llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
+6-01 files

LLVM/project 393e75allvm/docs/CommandGuide llvm-objcopy.rst

[llvm-objcopy] Add elf64-amdgpu to supported formats in command guide

Update the llvm-objcopy command guide's "Supported formats" section to
include elf64-amdgpu, added in the preceding commit.
DeltaFile
+1-0llvm/docs/CommandGuide/llvm-objcopy.rst
+1-01 files

LLVM/project 7bab786llvm/test/tools/llvm-objcopy/ELF cross-arch-headers.test

[llvm-objcopy] Address review feedback for AMDGPU test in cross-arch-headers

Per reviewer feedback, use the existing non-AMDGPU input (%t.o, EM_NONE)
to test conversion to elf64-amdgpu. This properly demonstrates that
--output-format changes the machine type, consistent with all other cases
in this test file.

The output reports Arch: unknown because converting from a non-AMDGPU ELF
produces e_flags=0 (no EF_AMDGPU_MACH set); added a comment explaining
this. Flag control is a separate concern for a follow-on PR.
DeltaFile
+5-3llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+5-31 files

LLVM/project 3552648llvm/test/tools/llvm-objcopy/ELF cross-arch-headers.test, llvm/tools/llvm-objcopy ObjcopyOptions.cpp

[AMDGPU] Add AMDGPU support for llvm-objcopy

Co-authored-by: Aakanksha Patil <paakan at amd.com>
DeltaFile
+11-2llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+2-0llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+13-22 files

LLVM/project 4f812a0llvm/test/tools/llvm-objcopy/ELF cross-arch-headers.test

[llvm-objcopy] Fix AMDGPU arch string in test: amdgpu not amdgcn

llvm-readobj reports 'Arch: amdgpu' for EM_AMDGPU ELF files
(the generic AMDGPU ELF format used by elf64-amdgpu). The test
was incorrectly expecting 'amdgcn', which is the AMDGCN-specific
arch string used by ROCm HSA code objects.
DeltaFile
+1-1llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+1-11 files

LLVM/project a1acdc0llvm/test/tools/llvm-objcopy/ELF binary-output-target.test

[llvm-objcopy] Fix AMDGPU arch checks in tests

ELFObjectFile.h getArch() for EM_AMDGPU returns Triple::UnknownArch
when e_flags & EF_AMDGPU_MACH is 0 (no GPU target specified). Only
when a MACH flag in the AMDGCN range is present does it return
Triple::amdgpu.

- cross-arch-headers.test: restore EF_AMDGPU_MACH_AMDGCN_GFX900 flag
  on the input ELF so that after format conversion the output correctly
  reports Arch: amdgpu.

- binary-output-target.test: expect Arch: unknown since converting
  from raw binary input (-I binary) produces an ELF with e_flags=0
  (no MACH flags), giving UnknownArch. This is correct behavior.
DeltaFile
+1-1llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
+1-11 files

LLVM/project bd586ddlldb/source/Plugins/Process/wasm ThreadWasm.cpp ProcessWasm.cpp, lldb/test/API/functionalities/gdb_remote_client TestWasm.py

[lldb] Use the standard GDB remote thread for a non-Wasm process (#214380)

CanDebug returns true whenever the plugin is requested by name, and the
architecture is not known until the stub reports it after connecting.
This means that a non-Wasm process can end up with a ThreadWasm whose
register context and unwinder have nothing to operate on.

Create the plain ThreadGDBRemote once the architecture is known, and add
a helper so that the check covers wasm64 as well as wasm32.

rdar://182229301
DeltaFile
+49-0lldb/test/API/functionalities/gdb_remote_client/TestWasm.py
+4-2lldb/source/Plugins/Process/wasm/ProcessWasm.cpp
+1-2lldb/source/Plugins/Process/wasm/ThreadWasm.cpp
+54-43 files

LLVM/project 79bc079llvm/lib/Transforms/IPO MergeFunctions.cpp, llvm/test/Transforms/MergeFunc merge-functions-select-weights.ll merge-functions-reordered-blocks-branch-weights.ll

Reland "[MergeFunctions] Preserve instruction-level profile metadata during merging" (#208009) (#210138)

This relands #208009, which was reverted in #209987 after an ASan
heap-use-after-free surfaced in MergeFunctionsTest.TrueOutputModuleTest.

The failure was caused by MergeFunctionsTest destroying
FunctionAnalysisManager before ModuleAnalysisManager, while MAM holds a
cached proxy result that calls FAM.clear() on destruction. This PR adds
a commit reordering those members, so they are destroyed in the correct
order, fixing the use-after-free.

Original PR: #208009
Revert PR: #209987
DeltaFile
+239-0llvm/test/Transforms/MergeFunc/merge-functions-branch-weights.ll
+211-15llvm/lib/Transforms/IPO/MergeFunctions.cpp
+142-0llvm/test/Transforms/MergeFunc/merge-functions-value-profile.ll
+121-0llvm/test/Transforms/MergeFunc/merge-functions-reordered-blocks-branch-weights.ll
+50-27llvm/unittests/Transforms/IPO/MergeFunctionsTest.cpp
+50-0llvm/test/Transforms/MergeFunc/merge-functions-select-weights.ll
+813-421 files not shown
+815-447 files

LLVM/project 05ecef4llvm/test/CodeGen/AMDGPU/GlobalISel regbankcombiner-merge-readanylane.mir

[AMDGPU][GlobalISel] Pre-commit tests for readanylane merge regbank combine (NFC) (#214355)

Add regbank-combiner tests covering a copy to vgpr whose source is a
merge or
build_vector of `G_AMDGPU_READANYLANE` results mixed with uniform
values.

These currently keep the round trip through sgprs. The tests also cover
the two
cases where the transform must not fire:

- the sgpr merge has another user, so it has to be kept;
- all merge sources are uniform, so moving the copy to the sources would
not
  remove any readanylane.

Pre-commit only, no functional change. The combine that removes the
round trip
is in the stacked PR.

    [6 lines not shown]
DeltaFile
+103-0llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir
+103-01 files

LLVM/project 2b32e13llvm/lib/CodeGen/SelectionDAG LegalizeDAG.cpp, llvm/test/CodeGen/AMDGPU fabs-vector-truncate.ll

[SDAG] Handle vector expansion when expanding FABS (#214341)

Before this, vector FABS that were scheduled for expansion would hit the
getSignAsIntValue() case and either assert there or fail later for lock
of instruction selection for a bitcast that's only looking at the scalar
size.

Now, we unroll to scalars as needed.

Test pre-committed in #214288
DeltaFile
+14-1llvm/test/CodeGen/AMDGPU/fabs-vector-truncate.ll
+3-0llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+17-12 files

LLVM/project 5159a83flang/test/Lower/OpenMP motion-iterator.f90

Strengthen two-dimensional descriptor iterator checks
DeltaFile
+52-8flang/test/Lower/OpenMP/motion-iterator.f90
+52-81 files

LLVM/project 1250c3ellvm/include/llvm/Object GOFFObjectFile.h, llvm/lib/Object GOFFObjectFile.cpp ArchiveWriter.cpp

[llvm-ar][GOFF] Implement symbol attributes for GOFF archives

z/OS archive symbol table entries contain a 32-bit attribute word
alongside each member offset. The low three bits encode:
  bit 2 (0x4): 64-bit addressing (AMODE 64)
  bit 1 (0x2): XPLink calling convention
  bit 0 (0x1): Writable Static Area (WSA)

Previously in e2c8fa0, llvm-ar wrote zero for
these attributes. This patch reads them from GOFF ESD records and stores them
in a SymbolAttrs vector parallel to the existing Symbols vector in
MemberData to emit the correct word per symbol.

These attributes are tested using `llvm-nm --print-armap` implemented in
#212830 within the LIT test.
DeltaFile
+73-0llvm/test/tools/llvm-ar/zos-symattrs.test
+37-14llvm/lib/Object/ArchiveWriter.cpp
+35-0llvm/lib/Object/GOFFObjectFile.cpp
+6-0llvm/include/llvm/Object/GOFFObjectFile.h
+151-144 files

LLVM/project b517b03llvm/test/CodeGen/AMDGPU minimumnum.ll maximumnum.ll

update check lines
DeltaFile
+4,934-6,672llvm/test/CodeGen/AMDGPU/maximumnum.ll
+4,824-6,562llvm/test/CodeGen/AMDGPU/minimumnum.ll
+9,758-13,2342 files

LLVM/project 1180bdcflang/lib/Lower/OpenMP ClauseProcessor.cpp, flang/test/Lower/OpenMP/Todo declare-mapper-iterator-external-array.f90

Reject external iterator locators in declare mappers
DeltaFile
+15-0flang/test/Lower/OpenMP/Todo/declare-mapper-iterator-external-array.f90
+7-3flang/lib/Lower/OpenMP/ClauseProcessor.cpp
+22-32 files

LLVM/project c7044b7llvm/include/llvm/Object Archive.h, llvm/lib/Object Archive.cpp

[llvm-nm][GOFF] Display archive attributes in GOFF archives through --print-armap

GOFF archive symbol table entries contain an attribute word in addition
to the archive member offset. The low three bits describe whether the symbol is
64-bit, uses XPLink, or belongs to the WSA namespace (which was briefly mentioned
in e2c8fa09872cfacba7f73599dcf8557971ebe865).

This patch extends `llvm-nm --print-armap` to print the attribute value (in hex) and
its decoded description beside a symbol and its corresponding member when processing
a GOFF archive. This will functionality will be used to help validate full support for writing
GOFF archives in a subsequent llvm-ar patch.

The output for non-z/OS archives is unchanged.
DeltaFile
+44-5llvm/tools/llvm-nm/llvm-nm.cpp
+42-0llvm/test/tools/llvm-nm/zos-armap.test
+12-0llvm/lib/Object/Archive.cpp
+10-0llvm/include/llvm/Object/Archive.h
+108-54 files

LLVM/project 4e95a2dllvm/lib/CodeGen/SelectionDAG LegalizeTypes.h LegalizeVectorTypes.cpp, llvm/test/CodeGen/AArch64 fixed-vector-interleave-deinterleave-no-neon.ll

[CodeGen] Add scalarization for vector (de)interleave (#212547)

This is required when NEON is disabled with -mattr=-neon.
DeltaFile
+122-0llvm/test/CodeGen/AArch64/fixed-vector-interleave-deinterleave-no-neon.ll
+16-0llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+1-0llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
+139-03 files

LLVM/project 3705e63flang/lib/Semantics compute-offsets.cpp, flang/test/Lower common-block-char0.f90

[flang] Fix incorrect offset for zero-size COMMON block members. (#214174)

Fixes #214171 

`ComputeOffsetsHelper::DoSymbol()` in
`flang/lib/Semantics/compute-offsets.cpp` returned early without calling
`symbol.set_offset()` when a symbol had zero size (e.g. CHARACTER*0). As
a result, every zero-size symbol in a COMMON block retained its default
offset of 0 — the block base address — instead of its correct sequential
position.

This incorrect offset caused two observable bugs:

1. **Wrong storage address**: LOC() and lowering always returned the
block base address for zero-size members instead of their actual
sequential position.

2. **False "cannot backward-extend" error**: When a zero-size COMMON
block member appeared in an EQUIVALENCE association, the backward-extend

    [18 lines not shown]
DeltaFile
+36-0flang/test/Lower/common-block-char0.f90
+35-0flang/test/Semantics/common-block-char0.f90
+6-0flang/lib/Semantics/compute-offsets.cpp
+77-03 files

LLVM/project b2ba87alldb/include/lldb/Target DynamicLoader.h, lldb/source/Core DynamicLoader.cpp

[lldb] Split DynamicLoader binary loading into locate and load (NFCI) (#214372)

LoadBinaryWithUUIDAndAddress both searched for a binary and registered
it with the Target. Split it into LocateBinaries, which only searches,
and LoadBinaryInTarget, which mutates the Target, with
LocateAndLoadBinary keeping the single binary case a one-liner.

The eight binary parameters and the results of the search are bundled in
a new BinarySpec struct, and both entry points return an llvm::Expected.

The motivation is a follow-up that runs LocateBinaries in parallel on
the thread pool. NFC, except for some small improvements to the error
handling because we don't write to the async output stream directly (and
fixed the newline).
DeltaFile
+180-145lldb/source/Core/DynamicLoader.cpp
+124-58lldb/include/lldb/Target/DynamicLoader.h
+38-29lldb/source/Plugins/Process/mach-core/ProcessMachCore.cpp
+22-19lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+21-8lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+385-2595 files

LLVM/project 02b0838mlir/include/mlir/Dialect/LLVMIR LLVMIntrinsicOps.td, mlir/test/Target/LLVMIR llvmir-intrinsics.mlir

[mlir][llvm] Add more constrained FP operations (#213745)

This change adds special constrained forms of transcendental operations
for the remaining cases that lower to contrained fp intrinsic calls. It
also adds fast-math flag support to the constrained operations, which is
needed to handle combinations of Clang command-line options such as
"-ffinite-math-only -ftrapping-math".

Assisted-by: Cursor / various models
DeltaFile
+530-0mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
+441-0mlir/test/Target/LLVMIR/Import/intrinsic.ll
+195-3mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td
+8-8mlir/test/Target/LLVMIR/Import/intrinsic-unregistered.ll
+1,174-114 files

LLVM/project 3bace22clang/lib/CIR/CodeGen CIRGenBuiltinAArch64.cpp, clang/test/CodeGen/AArch64/neon intrinsics.c

[CIR][AArch64] Update builtin handlers to use emitNeonCallToOp (#214075)

This is another change to prepare AArch64 builtin handling for the
transition to constrained FP handling. It replaces a number of places
where we were creating CIR operations directly with calls to
emitNeonCallToOp so that we will be able to centralize the constrained
FP handling.

This also updates the vrndns_f32 to eliminate a redundant load of the
operand, which is the only part of this change with a visible difference
in the output.

Assisted-by: Cursor / Grok 4.5
DeltaFile
+41-17clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
+0-1clang/test/CodeGen/AArch64/neon/intrinsics.c
+41-182 files