LLVM/project 92b97e7 — utils/bazel/llvm-project-overlay/flang/lib/Optimizer/Dialect BUILD.bazel

[Bazel] Fix MLIR bazel build (#229217)

Fixes commit 2fc577681ca1c896597252941593da9b61e0960b
DeltaFile
+1-0utils/bazel/llvm-project-overlay/flang/lib/Optimizer/Dialect/BUILD.bazel
+1-01 files

LLVM/project b2d3fdc — llvm/lib/Analysis ScalarEvolution.cpp

[SCEV] Exit early for all-canonical ops in computeAndSetCanonical (NFC) (#229036)

Currently in most cases, all operands will be canonical. Add an early
exit for the common case, to avoid building a SmallVector and throwing
it away later.

This gives a small compile-time win (-0.02% for most configs)

https://llvm-compile-time-tracker.com/compare.php?from=382204024fbc87729cd5060275bfd1c700b9fad0&to=cf11ec83f287c1369014d98ccad00c38f85a1938&stat=instructions:u

The main motivation is to offset some of the extra work for an updated
variant of https://github.com/llvm/llvm-project/pull/227458.

PR: https://github.com/llvm/llvm-project/pull/229036
DeltaFile
+3-8llvm/lib/Analysis/ScalarEvolution.cpp
+3-81 files

LLVM/project e2d78b3 — llvm/docs AMDGPUUsage.rst, llvm/lib/Target/AMDGPU/Disassembler AMDGPUDisassembler.cpp

[AMDGPU] Reserve ENABLE_WAVEFRONT_SIZE32 on gfx125

Wave32-only targets (gfx1250, gfx1250-strict, gfx1251, gfx12-5-generic)
reserve the kernel descriptor's ENABLE_WAVEFRONT_SIZE32; it must be 0.
The compiler set it to 1.

The wave size is selectable only on targets with both supports-wave32
and supports-wave64. Elsewhere, clear the bit, stop printing
.amdhsa_wavefront_size32, and reject the directive in the assembler.

The disassembler now rejects a set bit on every target without a
selectable wave size. This replaces the gfx9-only check and also covers
GFX6-GFX8, matching the documentation.

Document which targets select the wave size through this bit.

Change-Id: I0c3942272f03ff5aba04a15ca063b7a02e6fed06
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply at anthropic.com>
DeltaFile
+9-9llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
+6-8llvm/test/MC/AMDGPU/hsa-gfx1251-v4.s
+6-8llvm/test/MC/AMDGPU/hsa-gfx1250-v4.s
+8-6llvm/test/MC/AMDGPU/hsa-diag-v4.s
+5-5llvm/docs/AMDGPUUsage.rst
+5-1llvm/test/CodeGen/AMDGPU/hsa-generic-target-features.ll
+39-377 files not shown
+60-4413 files

LLVM/project 00078d2 — utils/bazel/llvm-project-overlay/libc BUILD.bazel, utils/bazel/llvm-project-overlay/libc/test/src/stdlib BUILD.bazel

[libc][bazel] Bazel fixes for 57732ac15d3e2305803c45ca748e4e1443bdcddc (#229210)
DeltaFile
+19-13utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+11-0utils/bazel/llvm-project-overlay/libc/test/src/stdlib/BUILD.bazel
+30-132 files

LLVM/project 917b086 — llvm/lib/CodeGen/SelectionDAG LegalizeTypes.cpp LegalizeFloatTypes.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.raw.ptr.buffer.store.nxv2i32.fail.ll

DAG: Fix error message casing to match style policy

The developer guidelines suggests that diagnostic messages should start with a
lowercase letter and not end in a period

Co-authored-by: Claude <noreply at anthropic.com>
DeltaFile
+4-4llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+3-3llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
+2-2llvm/test/CodeGen/AMDGPU/llvm.amdgcn.raw.ptr.buffer.store.nxv2i32.fail.ll
+2-2llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
+2-2llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+1-1llvm/test/CodeGen/X86/expand-integer-x86_64-intrinsic-error.ll
+14-148 files not shown
+22-2214 files

LLVM/project a2a3aab — offload/include OmpAccError.h, offload/libompaccsupport PluginManager.cpp Program.cpp

[offload][omp] Add own Error class to libomptarget
DeltaFile
+64-0offload/include/OmpAccError.h
+26-32offload/libompaccsupport/device.cpp
+43-0offload/libompaccsupport/OmpAccError.cpp
+13-14offload/libompaccsupport/Program.cpp
+6-5offload/libompaccsupport/PluginManager.cpp
+1-0offload/libomptarget/CMakeLists.txt
+153-516 files

LLVM/project be5092b — offload/include device.h, offload/libompaccsupport device.cpp

[offload][omp] Use olMemRegister for memory locking
DeltaFile
+0-80offload/plugins-nextgen/common/src/PluginInterface.cpp
+63-6offload/libompaccsupport/device.cpp
+0-43offload/plugins-nextgen/common/include/PluginInterface.h
+9-9offload/libomptarget/omptarget.cpp
+15-0offload/include/device.h
+87-1385 files

LLVM/project acb413e — offload/include Program.h, offload/libompaccsupport PluginManager.cpp device.cpp

[offload][omp] Load and resolve device binaries through liboffload

Migrate DeviceTy::loadBinary and global/kernel symbol resolution off
GenericPluginTy::load_binary/get_global/get_function onto liboffload's
Program/Symbol API, encapsulated in a new ProgramTy abstraction that wraps
an ol_program_handle_t. Kernel symbol resolution still needs the plugin's
opaque GenericKernelTy* handle for the legacy launch path, obtained via a
temporary __ol_tgt_GetKernelFromSymbol helper rather than new public
liboffload API surface. Removes the now-dead __tgt_device_binary type and
the corresponding GenericPluginTy methods and exports entries.
DeltaFile
+0-73offload/plugins-nextgen/common/src/PluginInterface.cpp
+69-0offload/libompaccsupport/Program.cpp
+43-22offload/libompaccsupport/device.cpp
+47-0offload/include/Program.h
+19-11offload/libompaccsupport/PluginManager.cpp
+0-12offload/plugins-nextgen/common/include/PluginInterface.h
+178-1184 files not shown
+192-12410 files

LLVM/project b67c031 — offload/libompaccsupport device.cpp, offload/plugins-nextgen/common/include PluginInterface.h

[offload][omp] Implement printDeviceInfo through liboffload
DeltaFile
+181-2offload/libompaccsupport/device.cpp
+0-19offload/plugins-nextgen/common/src/PluginInterface.cpp
+0-6offload/plugins-nextgen/common/include/PluginInterface.h
+181-273 files

LLVM/project 26ac46d — offload/include device.h, offload/plugins-nextgen/common/include PluginInterface.h

[offload][omp] Query device info directly through liboffload

Route DeviceTy::getInfo through olGetDeviceInfo instead of the
plugin's obtain_device_info, and drop the now-unused
GenericPluginTy::obtain_device_info wrapper and its liboffload
export.
DeltaFile
+4-9offload/include/device.h
+0-10offload/plugins-nextgen/common/src/PluginInterface.cpp
+0-3offload/plugins-nextgen/common/include/PluginInterface.h
+4-223 files

LLVM/project e400a78 — offload/liboffload/API Memory.td, offload/liboffload/src OffloadImpl.cpp

[offload][omp] Manage memory allocation through liboffload

Migrate DeviceTy::allocData/deleteData off GenericPluginTy::data_alloc/
data_delete onto liboffload's olMemAlloc*/olMemFree, migrate
targetLockExplicit/targetUnlockExplicit off data_lock/data_unlock onto
olMemRegister/olMemUnregister (fixing a latent bug where these passed
the OpenMP-visible device number instead of the plugin device id), and
migrate DeviceTy::isAccessiblePtr onto a new olMemIsAccessible API
(added with a unit test) since liboffload had no equivalent for
querying accessibility of arbitrary, not-necessarily-liboffload-
allocated pointers. Removes the now-dead GenericPluginTy::data_alloc/
data_delete/data_lock/data_unlock/is_accessible_ptr wrappers and their
exports entries.
DeltaFile
+44-0offload/unittests/OffloadAPI/memory/olMemIsAccessible.cpp
+0-16offload/plugins-nextgen/common/src/PluginInterface.cpp
+15-0offload/liboffload/API/Memory.td
+10-0offload/liboffload/src/OffloadImpl.cpp
+6-1offload/libompaccsupport/device.cpp
+2-1offload/unittests/OffloadAPI/CMakeLists.txt
+77-181 files not shown
+77-217 files

LLVM/project 0fa2091 — offload/libomptarget omptarget.cpp, offload/plugins-nextgen/common/include PluginInterface.h

[offload][omp] Remove data_fence

All supported backends execute enqueued work on a given queue in
submission order (CUDA, AMDGPU, and Host queues are always in-order;
Level Zero's default and non-default in-order/synchronous command
modes are as well), so the explicit data-fence used to order a
pointer-attachment after prior data transfers is unnecessary. Remove
the DeviceTy/GenericDeviceTy/GenericPluginTy dataFence chain and the
now-unused olQueueBarrier liboffload API added to support it.
DeltaFile
+4-17offload/libomptarget/omptarget.cpp
+0-12offload/plugins-nextgen/common/src/PluginInterface.cpp
+0-8offload/plugins-nextgen/level_zero/src/L0Device.cpp
+0-8offload/plugins-nextgen/common/include/PluginInterface.h
+0-7offload/plugins-nextgen/host/src/rtl.cpp
+0-7offload/plugins-nextgen/cuda/src/rtl.cpp
+4-594 files not shown
+4-7510 files

LLVM/project 772de76 — offload/include device.h, offload/libompaccsupport device.cpp

[offload][omp] Manage events through liboffload
DeltaFile
+0-73offload/plugins-nextgen/common/src/PluginInterface.cpp
+35-18offload/libompaccsupport/device.cpp
+0-21offload/plugins-nextgen/common/include/PluginInterface.h
+4-5offload/include/device.h
+39-1174 files

LLVM/project 804d383 — clang-tools-extra/clangd FindTarget.cpp, clang-tools-extra/clangd/unittests FindTargetTests.cpp

[clangd] Handle template template parameter pack indexes correctly in TargetFinder::VisitTemplateSpecializationType (#228996)

The code was already handling template template parameters, but it used
TemplateName::getAsTemplateDecl() which does not work for a template
template parameter referenced inside a pack index.

Fixes https://github.com/clangd/clangd/issues/2712
DeltaFile
+24-12clang-tools-extra/clangd/unittests/FindTargetTests.cpp
+1-2clang-tools-extra/clangd/FindTarget.cpp
+25-142 files

LLVM/project 6033262 — offload/libompaccsupport AsyncInfo.cpp PluginManager.cpp, offload/libomptarget/OpenMP API.cpp

[offload][omp] memory operations through liboffload
DeltaFile
+0-90offload/plugins-nextgen/common/src/PluginInterface.cpp
+69-11offload/libompaccsupport/device.cpp
+42-5offload/libompaccsupport/PluginManager.cpp
+12-24offload/libomptarget/OpenMP/API.cpp
+0-31offload/plugins-nextgen/common/include/PluginInterface.h
+25-4offload/libompaccsupport/AsyncInfo.cpp
+148-1655 files not shown
+180-17011 files

LLVM/project 0572cee — offload/include device.h omptarget.h, offload/libompaccsupport PluginManager.cpp device.cpp

Remove isDataExchangable and any associated code
Rename helper
DeltaFile
+0-10offload/libompaccsupport/device.cpp
+0-5offload/plugins-nextgen/common/src/PluginInterface.cpp
+2-2offload/include/omptarget.h
+0-3offload/plugins-nextgen/common/include/PluginInterface.h
+0-3offload/libompaccsupport/PluginManager.cpp
+0-3offload/include/device.h
+2-261 files not shown
+3-277 files

LLVM/project 26677d6 — offload/liboffload exports, offload/libompaccsupport device.cpp PluginManager.cpp

restore export file
DeltaFile
+0-56offload/liboffload/exports
+4-3offload/libompaccsupport/PluginManager.cpp
+0-6offload/libompaccsupport/device.cpp
+4-653 files

LLVM/project 6fc908f — offload/liboffload exports

remove two export lines
DeltaFile
+56-0offload/liboffload/exports
+56-01 files

LLVM/project a6d0210 — offload/include PluginManager.h, offload/libompaccsupport PluginManager.cpp

move lambda to helper
DeltaFile
+84-88offload/libompaccsupport/PluginManager.cpp
+8-0offload/include/PluginManager.h
+92-882 files

LLVM/project a6ce40f — offload/include device.h PluginManager.h, offload/libompaccsupport device.cpp PluginManager.cpp

[offload][omp] Use olIterateCompatibleDevices for device init and image registration
DeltaFile
+118-100offload/libompaccsupport/PluginManager.cpp
+9-8offload/libompaccsupport/device.cpp
+0-15offload/plugins-nextgen/common/src/PluginInterface.cpp
+5-8offload/include/PluginManager.h
+0-6offload/plugins-nextgen/common/include/PluginInterface.h
+4-1offload/include/device.h
+136-1381 files not shown
+140-1387 files

LLVM/project f6a258c — llvm/lib/Frontend/OpenMP OMPIRBuilder.cpp, llvm/unittests/Frontend OpenMPIRBuilderTest.cpp

[mlir][OpenMP] Allow multi-block omp.iterator regions

Frontends lower a locator inside an omp.iterator region like any other
expression, so the region can contain control flow. For example, Flang
lowers LEN_TRIM in `depend(iterator(i=1:n), in: a(i+len_trim(s)))` to a
loop, and later passes inline SUM or COUNT as loops. After control-flow
conversion the region has several blocks, which the single-block
omp.iterator rejects:

  %it = omp.iterator(%i: i64) = (%c1 to %n step %c1) {
    llvm.br ^scan(%slen : i64)
  ^scan(%k: i64):            // LEN_TRIM skips trailing blanks
    ...
    llvm.cond_br %blank, ^scan(%km1 : i64), ^done
  ^done:
    ...                      // address of a(i+len_trim(s))
    omp.yield(%addr : !llvm.ptr)
  } -> !omp.iterated<!llvm.ptr>


    [9 lines not shown]
DeltaFile
+152-0mlir/test/Target/LLVMIR/openmp-iterator-multi-block.mlir
+83-1llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+70-1mlir/test/Dialect/OpenMP/invalid.mlir
+38-16mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+42-12llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+37-7mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+422-373 files not shown
+460-439 files

LLVM/project cf67ba6 — llvm/lib/Target/SPIRV SPIRVBuiltins.td SPIRVBuiltins.cpp, llvm/test/CodeGen/SPIRV/transcoding/OpenCL sub_group_barrier-non-constant.ll sub_group_barrier.ll

[SPIRV] Lower OpenCL sub_group_barrier to OpControlBarrier (#228963)

Recognize the one- and two-argument forms of sub_group_barrier.
Support constant flags and scopes, and diagnose runtime operands instead
of asserting.
Runtime operand lowering remains unsupported.
DeltaFile
+101-0llvm/test/CodeGen/SPIRV/transcoding/OpenCL/sub_group_barrier.ll
+29-0llvm/test/CodeGen/SPIRV/transcoding/OpenCL/sub_group_barrier-non-constant.ll
+22-1llvm/lib/Target/SPIRV/SPIRVBuiltins.cpp
+1-0llvm/lib/Target/SPIRV/SPIRVBuiltins.td
+153-14 files

LLVM/project 75c28b0 — clang/lib/Sema SemaStmt.cpp

[Clang][Sema] Refactor checks on for/while loops (NFC) (#226101)

This is an NFC refactor of `clang/lib/Sema/SemaStmt.cpp` based on
@Sirraide's suggestion in
https://github.com/llvm/llvm-project/pull/225748#discussion_r4083103871.

- For both `Sema::ActOnForStmt` and `Sema::ActOnWhileStmt`,
`CommaVisitor` visiting and empty loop handling have been factored out
into a new `CheckConditionalLoop()` function to reduce duplication.

- Also added clarifying comments to explain the need for
`setHasEmptyLoopBodies()` usage in the specific cases of `for`/`while`
loops.

This PR is intended to be merged prior to #225748, which will benefit
from this refactor by having the redundant-defer checks for both
`for`/`while` loops in the same `CheckConditionalLoop()` function
instead of duplicating them.
DeltaFile
+35-16clang/lib/Sema/SemaStmt.cpp
+35-161 files

LLVM/project 16e830c — llvm/test/Transforms/SLPVectorizer/RISCV can-split-reduction.ll

[SLP] Add new test to expose SLP bug in canBuildSplitNode() (#229190)

Test for #220014.

Creates a tree from a store chain. Afterwards, analyzes a reduction for
possibly being a split-node. Decides a split node would not be
profitable because the shuffle to combine the nodes would be primitively
expensive. However, a shuffle is not needed since the split node is
feeding a reduction. Because the tree wasn't clear from the store chain,
`canBuildSplitNode` incorrectly thinks that this is feeding a store.
DeltaFile
+199-0llvm/test/Transforms/SLPVectorizer/RISCV/can-split-reduction.ll
+199-01 files

LLVM/project 84e94e1 — llvm/utils profcheck-xfail.txt

[ProfCheck] Remove fixed tests (#229192)

These tests are passing in the profcheck configuration now. Remove them
so that we can detect any regressions. Also sort one or two tests that
were not alphabetized properly.
DeltaFile
+1-6llvm/utils/profcheck-xfail.txt
+1-61 files

LLVM/project 1d074ee — flang/lib/Optimizer/CodeGen BoxedProcedure.cpp, flang/test/Fir boxproc-execstack-module-flag.fir

Revert "Revert "[CodeGen] Take the executable stack from a module flag" (#218…"

This reverts commit 8aa53b87070b0ad72ec7de7eef7b4dfbcdd3a8a2.
DeltaFile
+113-0flang/test/Fir/boxproc-execstack-module-flag.fir
+46-1flang/lib/Optimizer/CodeGen/BoxedProcedure.cpp
+29-0llvm/test/CodeGen/X86/execstack-module-flag.ll
+18-4llvm/docs/LangRef.md
+8-7llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+4-4llvm/test/CodeGen/RISCV/rv64-trampoline.ll
+218-164 files not shown
+229-1910 files

LLVM/project fbd747f — llvm/lib/CodeGen MachineBasicBlock.cpp, llvm/lib/CodeGen/MIRParser MILexer.h MILexer.cpp

MIR: Serialize MachineBasicBlock::IsCleanupFuncletEntry

Co-authored-by: Claude Sonnet 5 <noreply at anthropic.com>
DeltaFile
+16-0llvm/test/CodeGen/MIR/Generic/machine-basic-block-cleanup-funclet-entry.mir
+6-0llvm/lib/CodeGen/MIRParser/MIParser.cpp
+5-0llvm/lib/CodeGen/MachineBasicBlock.cpp
+1-0llvm/lib/CodeGen/MIRParser/MILexer.h
+1-0llvm/lib/CodeGen/MIRParser/MILexer.cpp
+29-05 files

LLVM/project 3337ce5 —

[Support] Replace sprintf with snprintf in z/OS strsignal implementation (#224487)
DeltaFile
+0-00 files

LLVM/project 81b1f16 — llvm/include/llvm/CodeGen TargetPassConfig.h, llvm/include/llvm/Support CodeGen.h

Replace the machine verify bools with a MachineVerifierMode enum
DeltaFile
+14-5llvm/lib/CodeGen/TargetPassConfig.cpp
+10-0llvm/include/llvm/Support/CodeGen.h
+3-3llvm/include/llvm/CodeGen/TargetPassConfig.h
+2-2llvm/tools/llc/lib/NewPMDriver.cpp
+2-2llvm/include/llvm/Target/CGPassBuilderOption.h
+1-2llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
+32-142 files not shown
+34-178 files

LLVM/project ba6cb5e — llvm/test/DebugInfo/Generic linear-dbg-value.ll

Disable MIR output verification in linear-dbg-value.ll
DeltaFile
+3-2llvm/test/DebugInfo/Generic/linear-dbg-value.ll
+3-21 files