LLVM/project 7410007 — libc CMakeLists.txt, libc/cmake/modules LLVMLibCTestRules.cmake

[libc] Allow hermetic tests to use external startup objects (#212557)

Adds LLVM_LIBC_HERMETIC_TEST_USE_INTERNAL_STARTUP to control whether
libc hermetic tests link against LLVM libc’s own crt1.o.

When the option is OFF, hermetic tests no longer require or link
libc.startup.${LIBC_TARGET_OS}.crt1. This allows baremetal
configurations to provide startup externally through
LIBC_TEST_LINK_OPTIONS_DEFAULT while still running hermetic tests.

For baremetal external-startup mode, the patch also adds the required
process startup/termination dependencies and ensures exit uses the
public packaging object, since external startup code may reference the
public C exit symbol.

Tested on Arm Toolchain for Embedded:
https://github.com/arm/arm-toolchain

Assisted-by: Codex
DeltaFile
+55-10libc/cmake/modules/LLVMLibCTestRules.cmake
+20-0libc/test/src/__support/CMakeLists.txt
+8-0libc/test/src/__support/external_startup_link_test.cpp
+7-0libc/test/src/__support/minimal_external_crt1_for_test.cpp
+3-0libc/CMakeLists.txt
+93-105 files

LLVM/project 7ac4051 — llvm/lib/Transforms/Vectorize VPlanUtils.h VPlanValue.h

[VPlan] Add getLastOperand helper (NFC). (#229354)

In a few places we need to get the last operand of a recipe. Add helper,
as suggested in https://github.com/llvm/llvm-project/pull/196845.

PR: https://github.com/llvm/llvm-project/pull/229354
DeltaFile
+9-12llvm/lib/Transforms/Vectorize/VPlan.h
+3-4llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+3-3llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+2-3llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-2llvm/lib/Transforms/Vectorize/VPlanUtils.h
+3-0llvm/lib/Transforms/Vectorize/VPlanValue.h
+21-246 files

LLVM/project 3da80c1 — llvm/lib/CodeGen RegisterCoalescer.cpp, llvm/test/CodeGen/X86 rematerialize-sub-super-reg-dead-flags.mir

RegisterCoalescer: Keep remat def dead if it's a copy destination superregister

This is a refinement of #226037, which was too strict.

When rematerializing into a physical register that is not exactly the copy's
destination, the def should only stay live if it is a sub-register of the copy
destination, i.e. part of the live value. Checking register unit coverage also
kept the def live when it is a super-register with the same units as the copy
destination, such as $rax for a copy into $eax on x86_64:

  dead $rax = MOV64ri32 -11, implicit-def $eax

Only the $eax part is used, so the $rax def is dead. This matches what
LiveVariables produces for a full def with partial uses.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+5-8llvm/lib/CodeGen/RegisterCoalescer.cpp
+3-2llvm/test/CodeGen/X86/rematerialize-sub-super-reg-dead-flags.mir
+8-102 files

LLVM/project 8fc70c5 — mlir/include/mlir/IR MLIRContext.h, mlir/lib/IR MLIRContext.cpp

[mlir] Avoid parallel code in single-threaded builds (#229794)

We hit this while building MLIR 23.1.2 for wasm32 and wasm64 in
emscripten-forge (this is an effort towards
[RFC](https://discourse.llvm.org/t/rfc-bringing-interactive-mlir-compilation-and-execution-to-webassembly/91566/3))
with `LLVM_ENABLE_THREADS=OFF`. `libMLIRIR.a` still retained
`pthread_create` and `pthread_setspecific` references from libc++ async
machinery, causing our package checks to fail.

`failableParallelForEach` only checks whether threading is enabled at
runtime, so the unused thread-pool code still reaches code generation.

We also need to check `LLVM_ENABLE_THREADS`, allowing the compiler to
discard that path in single-threaded builds !
DeltaFile
+3-3mlir/lib/IR/MLIRContext.cpp
+5-0mlir/include/mlir/IR/MLIRContext.h
+8-32 files

LLVM/project 62a04f9 — llvm/include/llvm/IR IRBuilder.h, llvm/lib/Transforms/IPO ExpandVariadics.cpp

[IR] Deprecate Instruction::getStableDebugLoc() (#230016)

In favor of getDebugLoc(). Since the migration from debuginfo intrinsics
to records, these are equivalent.
DeltaFile
+4-4llvm/lib/Transforms/Utils/LowerMemIntrinsics.cpp
+3-3llvm/lib/Transforms/IPO/ExpandVariadics.cpp
+2-2polly/lib/Analysis/ScopDetectionDiagnostic.cpp
+2-2mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+2-2llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+2-2llvm/include/llvm/IR/IRBuilder.h
+15-154 files not shown
+19-1810 files

FreeBSD/src 7cf0216 — sys/dev/virtio/gpu virtio_gpu.c

virtio_gpu: use an X8R8G8B8 resource on big-endian guests

The virtio-gpu resource formats are defined by byte order in memory,
while vt(4) and the X server (through vt_fb and the fb mmap) write
native 32-bit 0x00RRGGBB pixels into the shadow framebuffer.  On a
big-endian guest such as powerpc64 those pixels land in memory as
00 RR GG BB, which the host interprets under B8G8R8X8 with red and
blue swapped and the padding byte taken as blue: white renders yellow
and blue renders black.

Request X8R8G8B8 on big-endian guests instead, which is also what the
Linux driver does (DRM_FORMAT_HOST_XRGB8888).  Reproduced with a colour
test pattern on a powerpc64 QEMU pseries guest using the identically
coded out-of-tree fork of this driver (graphics/virtio-gpu-qemu-kmod);
little-endian guests are unchanged.

Differential Revision:  https://reviews.freebsd.org/D60085
Approved by:    jhibbits
MFC after:      1 week
DeltaFile
+7-1sys/dev/virtio/gpu/virtio_gpu.c
+7-11 files

LLVM/project 65210c6 — flang/test/Transforms licm-acc-atomic.fir, mlir/include/mlir/Dialect/OpenACC OpenACCOps.td

[mlir][acc] Declare the memory effects of acc.atomic.write

The operation wrote the location designated by `x` but declared no memory
effects, so it did not implement MemoryEffectOpInterface at all and every
memory analysis had to treat it as unknown. fir::AliasAnalysis::getModRef
returns ModAndRef for such an operation, so a loop containing one blocked
the hoisting of any load, however unrelated.

Declare the write on `x`. `expr` is a value rather than a location and
carries no effect.

This completes the set: acc.atomic.update already declared MemRead and
MemWrite on `x`, acc.atomic.read declares its effects since #228899, and
acc.atomic.capture derives its effects from its body.

The relaxed-ordering contract is stated in the operation description and
tested the same way as for acc.atomic.read: an unrelated load is hoisted
out of a loop across the write, and a load of `x` is not.
DeltaFile
+35-0flang/test/Transforms/licm-acc-atomic.fir
+11-1mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
+12-0mlir/test/Dialect/OpenACC/side-effects.mlir
+58-13 files

OpenBSD/ports k2I9md0 — telephony/sngrep Makefile distinfo, telephony/sngrep/patches patch-src_capture_c

   update to sngrep-1.9.0
VersionDeltaFile
1.11.2.1+2-2telephony/sngrep/distinfo
1.8.4.1+1-1telephony/sngrep/patches/patch-src_capture_c
1.13.2.1+1-1telephony/sngrep/Makefile
+4-43 files

OpenBSD/ports VOndv2j — sysutils/freeipmi Makefile distinfo

   update to freeipmi-1.6.20
VersionDeltaFile
1.28.2.1+2-2sysutils/freeipmi/distinfo
1.58.2.1+1-1sysutils/freeipmi/Makefile
+3-32 files

OpenBSD/ports r5TJuwV — sysutils/freeipmi Makefile distinfo

   update to freeipmi-1.6.20
VersionDeltaFile
1.29+2-2sysutils/freeipmi/distinfo
1.59+1-1sysutils/freeipmi/Makefile
+3-32 files

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

[Offload][omp] Add own Error class to libomptarget (#229711)

Add a new class for Errors generated within libomptarget to break the
dependence with the Error class defined inside the plugins.

Assisted by Claude.
DeltaFile
+65-0offload/include/OmpAccError.h
+26-28offload/libompaccsupport/device.cpp
+43-0offload/libompaccsupport/OmpAccError.cpp
+6-5offload/libompaccsupport/PluginManager.cpp
+4-3offload/include/PluginManager.h
+1-1offload/liboffload/src/OffloadImpl.cpp
+145-371 files not shown
+146-377 files

FreeBSD/ports 8fdca2d — math/mumps Makefile, math/mumps/files patch-src_Makefile

math/mumps: add missing SONAME
DeltaFile
+11-0math/mumps/files/patch-src_Makefile
+1-0math/mumps/Makefile
+12-02 files

LLVM/project 1e22be9 — llvm/include/llvm/IR IntrinsicsPISA.td

Remove Commutative from int_pisa_smad (otherwise rejects three explicit ternary immediate patterns as unreachable)
DeltaFile
+1-1llvm/include/llvm/IR/IntrinsicsPISA.td
+1-11 files

LLVM/project d5de35f — llvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp, llvm/test/Transforms/InstCombine/AMDGPU llvm.amdgcn.sudot.ll llvm.amdgcn.dot.ll

[AMDGPU] Fold add of a variable into a zero dot accumulator

When the dot intrinsic has a zero accumulator, no clamp and a single
add user, fold the add operand into the accumulator:
```llvm
  %dot = call i32 @llvm.amdgcn.sdot4(i32 %a, i32 %b, i32 0, i1 false)
  %r = add i32 %dot, %x
=>
  %r = call i32 @llvm.amdgcn.sdot4(i32 %a, i32 %b, i32 %x, i1 false)
```
If %x is defined after the dot in the same block, the dot is moved
down to the add. The fold is skipped across blocks to avoid sinking
the dot into a loop.
DeltaFile
+112-0llvm/test/Transforms/InstCombine/AMDGPU/llvm.amdgcn.dot.ll
+25-11llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+2-4llvm/test/Transforms/InstCombine/AMDGPU/llvm.amdgcn.sudot.ll
+139-153 files

OpenBSD/ports MUZhzbZ — net/py-websockets Makefile distinfo

   update to py3-websockets-17.2
VersionDeltaFile
1.5+2-2net/py-websockets/distinfo
1.11+1-1net/py-websockets/Makefile
+3-32 files

OpenBSD/ports 55LbgTV — security/py-spnego Makefile distinfo

   update to py3-spnego-0.12.4
VersionDeltaFile
1.6+2-2security/py-spnego/distinfo
1.8+1-1security/py-spnego/Makefile
+3-32 files

OpenBSD/ports 9LFnTq6 — databases/postgresql-plr Makefile distinfo, databases/postgresql-plr/pkg PLIST

   update to postgresql-plr-8.4.8.9
VersionDeltaFile
1.9+5-2databases/postgresql-plr/pkg/PLIST
1.9+2-2databases/postgresql-plr/distinfo
1.14+1-1databases/postgresql-plr/Makefile
+8-53 files

LLVM/project cb83974 — llvm/include/llvm/Analysis LoopAccessAnalysis.h, llvm/lib/Analysis VectorUtils.cpp LoopAccessAnalysis.cpp

[LAA] Strip Assume API of getPtrStride (NFC) (#229836)

Migrate the remaining users to the variant accepting Predicates, and
strip the API.
DeltaFile
+1-16llvm/lib/Analysis/LoopAccessAnalysis.cpp
+0-9llvm/include/llvm/Analysis/LoopAccessAnalysis.h
+1-1llvm/lib/Analysis/VectorUtils.cpp
+2-263 files

LLVM/project fdc0b7b — llvm/include/llvm/MC TargetRegistry.h

MC: Error if target did not register null streamer

Without this the AsmPrinter would see a null pointer
for the target streamer. More than likely this is just
going to crash. Only 5 of the in tree targets properly
registered a null streamer before I started looking into this.
The rest had randomly, inconsistent null checks for the streamer.

There are still a few targets not registering this, which should
update (some of which seem to not make use of the TargetStreamer).
There's no reason to leave this as a silently hazardous edge case.
DeltaFile
+1-1llvm/include/llvm/MC/TargetRegistry.h
+1-11 files

OpenBSD/ports EkSaHi1 — security/yubico/yubikey-manager Makefile distinfo, security/yubico/yubikey-manager/patches patch-pyproject_toml

   update to yubikey-manager-5.9.2
VersionDeltaFile
1.21+2-2security/yubico/yubikey-manager/distinfo
1.39+1-1security/yubico/yubikey-manager/Makefile
1.3+0-0security/yubico/yubikey-manager/patches/patch-pyproject_toml
+3-33 files

LLVM/project 7733db3 — llvm/test/CodeGen/AMDGPU fract.ll fsub64.ll

AMDGPU: Stop relying on -amdgpu-scalarize-global-loads=false in more tests (#230013)

Convert operation tests to functions taking their inputs as arguments, and index loads by 
workitem id in kernels where the stores matter.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+59-131llvm/test/CodeGen/AMDGPU/fma.f64.ll
+67-104llvm/test/CodeGen/AMDGPU/llvm.amdgcn.sbfe.ll
+22-32llvm/test/CodeGen/AMDGPU/fract.f64.ll
+19-31llvm/test/CodeGen/AMDGPU/immv216.ll
+15-31llvm/test/CodeGen/AMDGPU/fsub64.ll
+16-23llvm/test/CodeGen/AMDGPU/fract.ll
+198-3524 files not shown
+228-40810 files

LLVM/project 630c125 — llvm/docs AMDGPUUsage.rst AMDGPUDMAOperations.md

informational note about combining requests; use general words like "load" and "memory"
DeltaFile
+68-52llvm/docs/AMDGPUDMAOperations.md
+4-5llvm/docs/AMDGPUUsage.rst
+72-572 files

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

[Offload][omp] Use olGetDeviceInfo to get device info (#229693)

Use olGetDeviceInfo instead of obtain_device_info. Reimplement
libomptarget printDeviceInfo using olGetDeviceInfo. Remove from the
plugin interafce the print_device_info and obtain_device_info support.

Assisted by Claude.
DeltaFile
+4-73offload/plugins-nextgen/common/include/PluginInterface.h
+0-29offload/plugins-nextgen/common/src/PluginInterface.cpp
+4-12offload/include/device.h
+4-6offload/libomptarget/interface.cpp
+0-6offload/libompaccsupport/device.cpp
+12-1265 files

LLVM/project 86a48da — clang-tools-extra/clangd ModulesBuilder.cpp, clang-tools-extra/clangd/test prebuilt_module_file_reuse.test

[clangd] [C++20] [Modules] Don't reuse prebuilt module files on windows (#193426)

Fix https://github.com/clangd/clangd/issues/2497

Note that this only works for --experimental-modules-support. Otherwise,
it is a natural fallback by the design clang based tools.
DeltaFile
+57-0clang-tools-extra/clangd/test/prebuilt_module_file_reuse.test
+20-0clang-tools-extra/clangd/ModulesBuilder.cpp
+77-02 files

OpenBSD/ports VWsmatm — net/py-idna distinfo Makefile

   update to py3-idna-3.20, add missing TDEP
VersionDeltaFile
1.21+2-2net/py-idna/distinfo
1.35+3-1net/py-idna/Makefile
+5-32 files

LLVM/project bbb160b — clang/include/clang/CodeGenUtils ItaniumCXXABIUtils.h, clang/lib/CIR/CodeGen CIRGenItaniumCXXABI.cpp

[CIR][CodeGen] Share isStandardLibraryRTTIDescriptor

Deduplicates `isStandardLibraryRTTIDescriptor` between CIR and classic CodeGen
into `ItaniumCXXABIUtils.h`, taking the classic implementation. The two copies
have been equivalent since #227781 filled in the builtin types CIR was missing.

Assisted-by: Claude Code (Claude Fable 5.1).
DeltaFile
+3-155clang/lib/CodeGen/ItaniumCXXABI.cpp
+1-154clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
+148-0clang/lib/CodeGenUtils/ItaniumCXXABIUtils.cpp
+4-0clang/include/clang/CodeGenUtils/ItaniumCXXABIUtils.h
+156-3094 files

LLVM/project dfccef6 — clang/include/clang/CodeGenUtils TargetUtils.h, clang/lib/CIR/CodeGen TargetInfo.h TargetInfo.cpp

[CIR][CodeGen][NFC] Share requiresAMDGPUProtectedVisibility

Deduplicates `requiresAMDGPUProtectedVisibility` between CIR and classic CodeGen
into `TargetUtils.h`. The shared version takes a bool for "currently hidden" in
place of the `llvm::GlobalValue` and `cir::VisibilityKind` the two callers
passed.

Assisted-by: Claude Code (Claude Fable 5.1).
DeltaFile
+3-15clang/lib/CodeGen/Targets/AMDGPU.cpp
+18-0clang/lib/CodeGenUtils/TargetUtils.cpp
+0-14clang/lib/CIR/CodeGen/Targets/AMDGPU.cpp
+10-0clang/include/clang/CodeGenUtils/TargetUtils.h
+6-2clang/lib/CIR/CodeGen/TargetInfo.cpp
+0-4clang/lib/CIR/CodeGen/TargetInfo.h
+37-356 files

LLVM/project 24647b0 — clang/include/clang/CodeGenUtils TargetUtils.h, clang/lib/CIR/CodeGen CIRGenBuiltinAArch64.cpp

[CIR][CodeGen][NFC] Share hasExtraNeonArgument

Deduplicates `hasExtraNeonArgument` between CIR and classic CodeGen into
`TargetUtils.h`.

Assisted-by: Claude Code (Claude Fable 5.1).
DeltaFile
+2-38clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
+3-34clang/lib/CodeGen/TargetBuiltins/ARM.cpp
+25-0clang/lib/CodeGenUtils/TargetUtils.cpp
+6-0clang/include/clang/CodeGenUtils/TargetUtils.h
+36-724 files

LLVM/project 2b9f282 — clang/include/clang/CodeGenUtils TargetUtils.h, clang/lib/CIR/CodeGen/Targets AArch64.cpp

[CIR][CodeGen][NFC] Share the Arm SME inlinability check

Deduplicates `ArmSMEInlinability` and `getArmSMEInlinability` between CIR and
classic CodeGen into a new `TargetUtils.h`.

Assisted-by: Claude Code (Claude Fable 5.1).
DeltaFile
+18-60clang/lib/CodeGen/Targets/AArch64.cpp
+3-52clang/lib/CIR/CodeGen/Targets/AArch64.cpp
+54-0clang/lib/CodeGenUtils/TargetUtils.cpp
+52-0clang/include/clang/CodeGenUtils/TargetUtils.h
+1-0clang/lib/CodeGenUtils/CMakeLists.txt
+128-1125 files

LLVM/project fb61bca — clang/include/clang/CodeGenUtils EHPersonality.h, clang/lib/CIR/CodeGen CIRGenException.cpp

[CIR][CodeGen] Share the EH personality selection logic

Deduplicates the EH personality selection (`getEHPersonality`,
`getCXXEHPersonality`) between CIR and classic CodeGen, taking the classic
implementation. CIR's copy lacked the z/OS, Wasm and GNUstep-on-CygMing cases;
none are reachable in CIR today, so no test changes.

Assisted-by: Claude Code (Claude Fable 5.1).
DeltaFile
+4-127clang/lib/CodeGen/CGException.cpp
+131-0clang/lib/CodeGenUtils/EHPersonality.cpp
+2-116clang/lib/CIR/CodeGen/CIRGenException.cpp
+19-0clang/include/clang/CodeGenUtils/EHPersonality.h
+156-2434 files