LLVM/project 9cafc5e — clang/lib/Sema SemaDeclCXX.cpp, clang/test/CXX/basic/basic.start/basic.start.main p2.cpp

[Clang] prevent instantiation of invalid friend function templates (#227038)

Fixes #226673

--- 

This patch addresses the issue in which an invalid friend function
template is instantiated as a valid declaration, leading to a crash upon
a later redeclaration.

---

This fixes a regression introduced by
https://github.com/llvm/llvm-project/pull/216555
DeltaFile
+19-0clang/test/CXX/basic/basic.start/basic.start.main/p2.cpp
+1-4clang/test/SemaTemplate/GH71595.cpp
+1-2clang/lib/Sema/SemaDeclCXX.cpp
+21-63 files

LLVM/project f7f5a96 — clang/test/CodeGen/RISCV rvp-intrinsics.c, llvm/test/CodeGen/AMDGPU global_atomics_scan_fadd.ll amdgcn.bitcast.512bit.ll

Merge branch 'main' into users/slinder1/cargo-toctree
DeltaFile
+47,307-47,314llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+9,228-9,364llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+4,893-7,581clang/test/CodeGen/RISCV/rvp-intrinsics.c
+6,086-6,026llvm/test/CodeGen/RISCV/rvv/expandload.ll
+10,602-137llvm/test/CodeGen/RISCV/rvv/vector-interleave-fixed.ll
+4,817-5,217llvm/test/CodeGen/AMDGPU/global_atomics_scan_fadd.ll
+82,933-75,6399,397 files not shown
+561,705-327,0029,403 files

LLVM/project c3460c8 — clang/include/clang/Basic Attr.td AttrDocs.td

[Clang][docs] Markup corrections for attribute documentation (#226729)

The conversion of Clang attribute documentation from reST to MyST
markdown did not transform markup correctly in all cases. Additionally,
some PRs that were originally authored for reST were merged after the
conversion resulting in reST formatted markdown getting re-introduced.
This change corrects all such cases the author was able to identify,
applies markup that was previously missing, corrects a few typos along
the way, and even adds a missing attribute documentation reference that
has prevented the `#pragma clang loop` `pipeline` and
`pipeline_initiation_interval` documentation from being published since
2019.
DeltaFile
+204-221clang/include/clang/Basic/AttrDocs.td
+1-1clang/include/clang/Basic/Attr.td
+205-2222 files

LLVM/project 08ba06e — mlir/include/mlir/Dialect/OpenACC OpenACCUtilsTiling.h, mlir/lib/Dialect/OpenACC/Transforms ACCLoopTiling.cpp

[mlir][OpenACC] Fix tile clause element bounds for descending loops (#227185)

acc.loops could have negative steps, but ACCLoopTiling computed each
element loop's bound assuming an ascending one. Both halves of that
computation were wrong for a descending dimension: the inclusive edge
subtracted one instead of adding one, and the bound was clamped with min
instead of max.

For `DO j = n, floor, -1` under `tile(32)`, the last tile's bound came
out as `min(floor, j - 33)`, which selects `j - 33` whenever it falls
below the floor. The element loop then ran past the end of the iteration
space, reading and writing outside the array.

With this change, we pick the clamp and the inclusive edge from the
step's direction. When the sign is only known at runtime, we compute
both and select on it.

The tiling tests had no coverage of negative steps or of inclusive upper
bounds. This patch adds four new tests: descending, descending with an
inclusive bound, ascending with an inclusive bound, and a runtime-signed
step.
DeltaFile
+88-0mlir/test/Dialect/OpenACC/acc-loop-tiling.mlir
+39-9mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsTiling.cpp
+4-0mlir/lib/Dialect/OpenACC/Transforms/ACCLoopTiling.cpp
+4-0mlir/include/mlir/Dialect/OpenACC/OpenACCUtilsTiling.h
+135-94 files

LLVM/project 26ecb81 — mlir/docs Remarks.md, mlir/include/mlir/IR Remarks.h

[MLIR][Remark] Make remark reporting thread-safe and order final remarks by source position

Passes nested under the multithreaded pass manager report into the same
RemarkEngine from worker threads, but nothing in the engine or the
policies was synchronized. RemarkEmittingPolicyFinal inserted into its
map from several threads at once, and under RemarkEmittingPolicyAll the
streamer, including the LLVM remark serializer, was called from several
threads at once. ThreadSanitizer reports both races in the new unit tests.

RemarkEngine now holds a lock around every call into the policy. It is a
recursive llvm::sys::SmartMutex, the same type as the DiagnosticEngine's
lock. report() takes it, and so does a new finalizePolicy(), which the
engine destructor and mlir-opt now use instead of calling finalize() on
the policy directly. For the All policy the streamer and the diagnostic
printer also run under the lock, so custom policies and streamers need no
lock of their own.

With the race fixed, the final policy's first-report order is still not
deterministic: which thread reports first depends on scheduling.

    [16 lines not shown]
DeltaFile
+187-8mlir/unittests/IR/RemarkTest.cpp
+83-9mlir/lib/IR/Remarks.cpp
+51-0mlir/test/Pass/remark-final-parallel.mlir
+32-8mlir/include/mlir/IR/Remarks.h
+30-4mlir/docs/Remarks.md
+5-4mlir/test/Pass/remark-final.mlir
+388-331 files not shown
+389-347 files

LLVM/project 452e51d — llvm/lib/Target/SPIRV SPIRVNonSemanticDebugHandler.h SPIRVNonSemanticDebugHandler.cpp, llvm/test/CodeGen/SPIRV/debug-info debug-type-pointer-to-composite-drop.ll debug-typedef-nested-drop.ll

[SPIRV] LLVM IR DIScope nodes are now emitted after their dependencies.

This allows supporting the following cases:

A pointer, array, typedef, or function type whose operand is a composite.
A nested composite member, and a typedef whose base is another typedef.
A type scoped in a function, lexical block, or namespace, and a function declaration whose parent is a composite.
Cycles are not fully supported. A back edge is not emitted: by design, a composite member that refers back to its own type is dropped, and a cycle that cannot be cut emits nothing.

Emission functions now return an EmitResult, which indicates the status of the emission.
Emitted and Unsupported results are cached. InProgress is not.
For struct S { S *p; }, the edge from p back to S returns InProgress, so member p is dropped and S is still emitted.
S* is left uncached, so a later call emits it once S exists. Caching that InProgress result would completely drop S*.
DeltaFile
+308-276llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.cpp
+128-85llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.h
+11-13llvm/test/CodeGen/SPIRV/debug-info/debug-type-composite-nested-drop.ll
+8-15llvm/test/CodeGen/SPIRV/debug-info/debug-lexical-block-namespace-in-block.ll
+11-8llvm/test/CodeGen/SPIRV/debug-info/debug-typedef-nested-drop.ll
+6-10llvm/test/CodeGen/SPIRV/debug-info/debug-type-pointer-to-composite-drop.ll
+472-4076 files not shown
+508-43212 files

LLVM/project f30100d — libcxx/utils/ci/lnt run-benchmarks dispatch-benchmarks

[libc++][NFC] Fix typos in the LNT tooling (#227347)
DeltaFile
+2-2libcxx/utils/ci/lnt/dispatch-benchmarks
+1-1libcxx/utils/ci/lnt/run-benchmarks
+3-32 files

LLVM/project 836f8f5 — 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 06673aa — 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 d251405 — 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
+20-10offload/libompaccsupport/PluginManager.cpp
+0-12offload/plugins-nextgen/common/include/PluginInterface.h
+179-1174 files not shown
+193-12310 files

LLVM/project 8ec4776 — offload/liboffload/src OffloadImpl.cpp, offload/libomptarget interface.cpp

[offload][omp] Route RPC callback registration through liboffload

Replace __tgt_register_rpc_callback's direct iteration over plugins
with olIteratePlatforms + olPlatformRegisterRPCCallback, and drop the
now-unused RPCServerTy::registerCallback export. Move the
initialized/has-devices guard that used to live in libomptarget into
olPlatformRegisterRPCCallback_impl.
DeltaFile
+7-3offload/libomptarget/interface.cpp
+5-1offload/liboffload/src/OffloadImpl.cpp
+12-42 files

LLVM/project f570e2f — offload/plugins-nextgen/common/include PluginInterface.h, offload/plugins-nextgen/common/src PluginInterface.cpp

Remove number_of_devices
DeltaFile
+0-3offload/plugins-nextgen/common/include/PluginInterface.h
+0-2offload/plugins-nextgen/common/src/PluginInterface.cpp
+0-52 files

LLVM/project 841d6e9 — 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 40f2914 — 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 a7b6af2 — 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 22130a2 — 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 be200a3 — 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 5569194 — 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 c91041b — 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
+68-16offload/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
+147-1705 files not shown
+179-17511 files

LLVM/project 6692768 — offload/liboffload exports, offload/liboffload/src OffloadImpl.cpp

restore export file
DeltaFile
+0-56offload/liboffload/exports
+5-2offload/libompaccsupport/PluginManager.cpp
+2-2offload/liboffload/src/OffloadImpl.cpp
+7-603 files

LLVM/project 735e888 — offload/liboffload exports

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

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

[offload][omp] Use olIterateCompatibleDevices for device init and image registration
DeltaFile
+115-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
+133-1381 files not shown
+137-1387 files

LLVM/project 7afc5ab — offload/liboffload/API Program.td, offload/liboffload/src OffloadImpl.cpp

[OFFLOAD] Add olIterateCompatibleDevices API
DeltaFile
+73-0offload/unittests/OffloadAPI/program/olIterateCompatibleDevices.cpp
+25-2offload/liboffload/src/OffloadImpl.cpp
+15-0offload/liboffload/API/Program.td
+1-0offload/unittests/OffloadAPI/CMakeLists.txt
+114-24 files

LLVM/project e1812a6 — offload/include PluginManager.h, offload/liboffload/src OffloadImpl.cpp

[offload][omp] Load plugins through liboffload
DeltaFile
+20-20offload/libompaccsupport/PluginManager.cpp
+7-0offload/liboffload/src/OffloadImpl.cpp
+2-1offload/include/PluginManager.h
+29-213 files

LLVM/project e6001c0 — llvm/lib/Transforms/InstCombine InstCombineSelect.cpp, llvm/test/Transforms/InstCombine truncating-saturate.ll

[InstCombine] Handle select-like i1 sext/zexts in canonicalizeClampLike
DeltaFile
+23-32llvm/test/Transforms/InstCombine/truncating-saturate.ll
+3-3llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+26-352 files

LLVM/project 91b08a5 — llvm/include/llvm/CodeGen MachinePipeliner.h ScheduleDAGInstrs.h, llvm/lib/CodeGen ScheduleDAGInstrs.cpp

[MISched](NFC) Factor control dependency construction state and logic out of `buildSchedGraph` (#226533)

Continuing the groundwork for a proper implementation of #205689, factor
the control dependency construction state and logic out of
`ScheduleDAGInstrs` into a friend class. This will also enable us to
further break up `buildSchedGraph` to make, e.g., the barrier chain
handling easier to comprehend.
DeltaFile
+192-128llvm/lib/CodeGen/ScheduleDAGInstrs.cpp
+3-58llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h
+1-0llvm/include/llvm/CodeGen/MachinePipeliner.h
+196-1863 files

LLVM/project 05a75e8 — llvm/include/llvm/ADT DenseMap.h

[ADT] Move DenseMapIterator above DenseMapBase (NFC) (#227208)

This patch moves the definition of DenseMapIterator right above
DenseMapBase so that all classes in DenseMap.h are defined in the
bottom-up order without forward declarations:

- DenseMapStorage
- SmallDenseMapStorage
- DenseMapIterator
- DenseMapBase
- DenseMap
- SmallDenseMap

Assisted-by: Antigravity
DeltaFile
+141-145llvm/include/llvm/ADT/DenseMap.h
+141-1451 files

LLVM/project 1ab60d3 — llvm/test/Transforms/InstCombine truncating-saturate.ll

Precommit test
DeltaFile
+34-0llvm/test/Transforms/InstCombine/truncating-saturate.ll
+34-01 files

LLVM/project 3272c28 — .github/workflows/test-suite aarch64.cmake

[GitHub] Fix test-suite.yml FFmpeg build with AArch64 (#227346)

On AArch64 there are assembly files that need CMAKE_ASM_COMPILER_TARGET
and CMAKE_ASM_FLAGS_INIT set
DeltaFile
+2-0.github/workflows/test-suite/aarch64.cmake
+2-01 files

LLVM/project 4840749 — llvm/docs GettingInvolved.md

docs: Remove Johannes' office hours
DeltaFile
+0-6llvm/docs/GettingInvolved.md
+0-61 files