LLVM/project 8d1b38fllvm/lib/Target/PowerPC PPCISelLowering.cpp, llvm/test/CodeGen/PowerPC ppc32-f128-abi.ll

Fix `fp128` reaching `llvm_unreachable` on 32-bit PowerPC (#216613)

`fp128` is a legal type that is passed in vector registers when `vsx` is
enabled on 32-bit PowerPC: the switch statement didn't account for that,
causing an LLVM assertion.

Fixes #213355

cc @folkertdev
DeltaFile
+9-0llvm/test/CodeGen/PowerPC/ppc32-f128-abi.ll
+1-4llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+10-42 files

LLVM/project 107f244libcxx/include/__memory assume_aligned.h, lld/test/MachO U-dynamic-lookup.s

Merge branch 'main' into users/hidekisaito/vopd-same-parity-drain
DeltaFile
+80-110llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCLFIRewriter.cpp
+9-0llvm/docs/LangRef.md
+4-4lld/test/MachO/U-dynamic-lookup.s
+6-0llvm/test/Bitcode/attributes.ll
+2-1libcxx/include/__memory/assume_aligned.h
+2-0llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+103-1156 files

LLVM/project 7a3c125llvm/lib/Target/AMDGPU SIInsertWaitcnts.cpp, llvm/test/CodeGen/AMDGPU buffer-fat-pointer-atomicrmw-fmin.ll buffer-fat-pointer-atomicrmw-fmax.ll

[AMDGPU][SIInsertWaitcnts] Fix soft wait removal with loop-carried deps

The code that checked if a soft waitcnt (such as the one insterted by
a release fence on LDS) was redundant didn't correctly account for the
fact that that, for example, the previous iteration of a loop could
have introduced memory traffic that needs to be waited on. This bug
appeared to be fairly rare in practice (probably due to the
instruction scheduler shuffling around code in t bad form) but it can
happen.

The fix is that, instad of immediately erasing "redundant" waits, we
add them to a set of waits to be erased, and then remove them from the
set if they prove to be truly redundant.

This has the side effect of fixing a correctness issue around the CAS
loops we emit on gfx1250 - the global_inv we emit after the
`s_loadcnt 0x0` is itself a `loadcnt`-able event, and so needs to be
forced to completion before the next iteration of the CAS loop.


    [5 lines not shown]
DeltaFile
+43-11llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+41-0llvm/test/CodeGen/AMDGPU/local-atomicrmw-fsub.ll
+31-0llvm/test/CodeGen/AMDGPU/local-atomicrmw-fmin.ll
+31-0llvm/test/CodeGen/AMDGPU/local-atomicrmw-fmax.ll
+20-8llvm/test/CodeGen/AMDGPU/buffer-fat-pointer-atomicrmw-fmin.ll
+20-8llvm/test/CodeGen/AMDGPU/buffer-fat-pointer-atomicrmw-fmax.ll
+186-278 files not shown
+229-3114 files

LLVM/project 81dc060llvm/docs LangRef.md

[LangRef] Add hybrid_patchable attribute description (#219806)
DeltaFile
+9-0llvm/docs/LangRef.md
+9-01 files

LLVM/project 91bd18ellvm/lib/Bitcode/Reader BitcodeReader.cpp, llvm/test/Bitcode attributes.ll

[IR] Support hybrid_patchable attribute in bitcode reader (#219804)

Missing in #92965.
DeltaFile
+6-0llvm/test/Bitcode/attributes.ll
+2-0llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+8-02 files

LLVM/project 5f3e8f3libcxx/include/__memory assume_aligned.h

[libc++] Add _LIBCPP_NO_SANITIZE for std::__assume_aligned (#220296)

std::assume_aligned takes void* from __builtin_assume_aligned and
converts it _Tp* that causes cfi-unrelated-cast to consider it a
downcast leading to CFI checks. Since std::find_if calls
std::assume_aligned on __last, it will lead to a CFI check that
dereferences __last causing a failure. Based on discussion, we can just
add _LIBCPP_NO_SANITIZE for cfi-unrelated-cast because the check rejects
well-defined behavior.

Fix: https://github.com/llvm/llvm-project/issues/219306
DeltaFile
+2-1libcxx/include/__memory/assume_aligned.h
+2-11 files

LLVM/project 4004b0bllvm/test/CodeGen/AMDGPU waitcnt-loop-carried-fence-drain.mir waitcnt-loop-carried-fence-drain-gfx12.mir

[AMDGPU] Pre-commit tests for loop-carried memory waits

SIInsertWaitcnts is currently dropping waits in a
(fence; read; write; branch) loop in some cases. Pre-commit tests to
show the problem.

AI disclosure: test generated by AI, but I poked them into not being terrible.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply at anthropic.com>
DeltaFile
+57-0llvm/test/CodeGen/AMDGPU/waitcnt-loop-carried-fence-drain-gfx12.mir
+53-0llvm/test/CodeGen/AMDGPU/waitcnt-loop-carried-fence-drain.mir
+110-02 files

LLVM/project df8b53dlld/test/MachO U-dynamic-lookup.s

[lld-macho][NFC] Change _baz to _qux in test (#220337)

These assertions are very broad and when running these tests in bazel
there is a file path log that gets incorrectly matched with _baz.
DeltaFile
+4-4lld/test/MachO/U-dynamic-lookup.s
+4-41 files

LLVM/project 6bfabcdllvm/include/llvm/Transforms/Vectorize/SandboxVectorizer VecUtils.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes BundleVec.cpp

[SandboxVectorizer] Hoist getInsertPointAfterInstrs into VecUtils

Move BottomUpVec.cpp's file-local getInsertPointAfterInstrs() into
VecUtils, next to the getLowest()/getLastPHIOrSelf() primitives it's
built from. It has no BottomUpVec-specific state; the next commit adds a
second caller in LoadStoreVec.

Not hoisting BottomUpVec::createPack() itself here: it asserts a single
common scalar type (VecUtils::getCommonScalarType), which doesn't fit
LoadStoreVec's mixed-type ("enable-diff-types") requirement. That needs
its own extended packer, kept local to LoadStoreVec.cpp rather than
force-fitting the shared version.

No functional change: check-llvm Transforms/SandboxVectorizer passes
(28/28).

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+6-18llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BundleVec.cpp
+13-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h
+19-182 files

LLVM/project 8953244llvm/lib/Target/AArch64/MCTargetDesc AArch64MCLFIRewriter.cpp

[LFI][AArch64] Refactor LFI rewriter to use MCInstBuilder (#219890)

This refactors the LFI rewriter to use the `MCInstBuilder` API to
construct new `MCInst` objects.
DeltaFile
+80-110llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCLFIRewriter.cpp
+80-1101 files

LLVM/project 504cae1clang/test/OpenMP parallel_for_codegen.cpp, llvm/docs/CommandGuide llvm-debuginfo-analyzer.md llvm-debuginfo-analyzer.rst

Merge branch 'main' into users/hidekisaito/vopd-same-parity-drain
DeltaFile
+2,115-2,484llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+0-2,905llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w64.ll
+0-2,456llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w32.ll
+0-2,234llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+2,217-0llvm/docs/CommandGuide/llvm-debuginfo-analyzer.md
+1,049-1,049clang/test/OpenMP/parallel_for_codegen.cpp
+5,381-11,1283,002 files not shown
+121,353-70,7253,008 files

LLVM/project 4c982f7llvm/lib/Target/AMDGPU SIRegisterInfo.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.mfma.anti-hints.mir

Merge branch 'users/mssefat/anti-hints-pr3-amdgpu-apply' into users/mssefat/anti-hints-pr4-amdgpu-pre-ra
DeltaFile
+313-106llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.anti-hints.mir
+18-6llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
+331-1122 files

LLVM/project 787e27allvm/docs/CommandGuide llvm-debuginfo-analyzer.md llvm-debuginfo-analyzer.rst, llvm/lib/Frontend/OpenMP OMPDescriptors.inc

Rebase

Created using spr 1.3.7
DeltaFile
+2,115-2,484llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+0-2,234llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+2,217-0llvm/docs/CommandGuide/llvm-debuginfo-analyzer.md
+788-788llvm/lib/Frontend/OpenMP/OMPDescriptors.inc
+611-829llvm/test/CodeGen/AMDGPU/calling-conventions.ll
+1,368-3mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc
+7,099-6,3381,852 files not shown
+65,234-33,1181,858 files

LLVM/project c21db69clang/lib/Sema SemaOpenMP.cpp, clang/test/Modules reentered-header-duplicate.m

include

Created using spr 1.3.7
DeltaFile
+788-788llvm/lib/Frontend/OpenMP/OMPDescriptors.inc
+387-0llvm/test/Transforms/LoopVectorize/epilog-vectorization-anyof-no-rdx-result.ll
+382-0lldb/unittests/Target/ReExportedSymbolTest.cpp
+218-0clang/test/Modules/reentered-header-duplicate.m
+92-89flang/lib/Semantics/check-omp-structure.cpp
+66-61clang/lib/Sema/SemaOpenMP.cpp
+1,933-938114 files not shown
+3,934-1,347120 files

LLVM/project 49bce67clang/lib/Sema SemaOpenMP.cpp, clang/test/Modules reentered-header-duplicate.m

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+788-788llvm/lib/Frontend/OpenMP/OMPDescriptors.inc
+387-0llvm/test/Transforms/LoopVectorize/epilog-vectorization-anyof-no-rdx-result.ll
+382-0lldb/unittests/Target/ReExportedSymbolTest.cpp
+218-0clang/test/Modules/reentered-header-duplicate.m
+92-89flang/lib/Semantics/check-omp-structure.cpp
+66-61clang/lib/Sema/SemaOpenMP.cpp
+1,933-938114 files not shown
+3,934-1,347120 files

LLVM/project 23ec467clang/lib/Sema SemaOpenMP.cpp, clang/test/Modules reentered-header-duplicate.m

include

Created using spr 1.3.7
DeltaFile
+788-788llvm/lib/Frontend/OpenMP/OMPDescriptors.inc
+387-0llvm/test/Transforms/LoopVectorize/epilog-vectorization-anyof-no-rdx-result.ll
+382-0lldb/unittests/Target/ReExportedSymbolTest.cpp
+218-0clang/test/Modules/reentered-header-duplicate.m
+92-89flang/lib/Semantics/check-omp-structure.cpp
+66-61clang/lib/Sema/SemaOpenMP.cpp
+1,933-938114 files not shown
+3,934-1,347120 files

LLVM/project eb8c0ccllvm/include/llvm/TargetParser AMDGPUTargetParser.h, llvm/lib/Target/AMDGPU R600Subtarget.h GCNSubtarget.h

AMDGPU: Move flat work group size constants to AMDGPUTargetParser

getMinFlatWorkGroupSize and getMaxFlatWorkGroupSize are constants that
do not depend on the subtarget. Move them from IsaInfo to
AMDGPUTargetParser so they can be queried without an MCSubtargetInfo.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+0-9llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
+9-0llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+2-2llvm/tools/llvm-calc-occupancy/llvm-calc-occupancy.cpp
+2-2llvm/lib/Target/AMDGPU/R600Subtarget.h
+2-2llvm/lib/Target/AMDGPU/GCNSubtarget.h
+0-2llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+15-171 files not shown
+16-187 files

LLVM/project a424cf9llvm/docs/CommandGuide llvm-debuginfo-analyzer.md llvm-debuginfo-analyzer.rst, llvm/lib/Frontend/OpenMP OMPDescriptors.inc

Rebase

Created using spr 1.3.7
DeltaFile
+2,115-2,484llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+0-2,234llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+2,217-0llvm/docs/CommandGuide/llvm-debuginfo-analyzer.md
+788-788llvm/lib/Frontend/OpenMP/OMPDescriptors.inc
+611-829llvm/test/CodeGen/AMDGPU/calling-conventions.ll
+1,368-3mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc
+7,099-6,3381,836 files not shown
+64,559-33,0931,842 files

LLVM/project 47d8d5dllvm/lib/Target/AMDGPU SIRegisterInfo.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.mfma.anti-hints.mir

Addressed reveiw
DeltaFile
+23-10llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.anti-hints.mir
+18-6llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
+41-162 files

LLVM/project 1c47506offload/plugins-nextgen/amdgpu/src rtl.cpp

implement feedback
DeltaFile
+12-26offload/plugins-nextgen/amdgpu/src/rtl.cpp
+12-261 files

LLVM/project c04aac6llvm/lib/Target/AMDGPU AMDGPUInsertDelayAlu.cpp, llvm/test/CodeGen/AMDGPU vopd-src2acc-delay.mir

[AMDGPU] Fix for GFX11 VOPD interlock hazard
DeltaFile
+96-1llvm/test/CodeGen/AMDGPU/vopd-src2acc-delay.mir
+52-10llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
+148-112 files

LLVM/project bd5b1f5lldb/unittests/Target MemoryTest.cpp

[lldb] [unittests] [nfc] Assert the requests the memory cache tests make, not the read budget (#220171)

`TesetMemoryCacheRead`, `TestReadStopsAtAnInvalidRange` and
`TestReadMemoryRangesUsesL2Cache` showed which memory a read fetched by
checking `process->m_bytes_left`, a cumulative byte budget. Any request
of
at least the asserted size drains it, so the check held for a wrong
request
just as well: it cannot see the address asked for, and it cannot tell
one
request from two.

Log every `DoReadMemory` request in the mock process as (address, size)
and
assert that list instead.  The straddling read at 0x4001 in
`TesetMemoryCacheRead` shows what this buys. It crosses a line boundary,
and
`MemoryCache::Read` serves it one line at a time, so the list is
`(0x4000, line)` then `(0x4000+line, line)`: two requests for two

    [3 lines not shown]
DeltaFile
+86-21lldb/unittests/Target/MemoryTest.cpp
+86-211 files

LLVM/project c59f377llvm/include/llvm/TargetParser AMDGPUTargetParser.h, llvm/lib/TargetParser AMDGPUTargetParser.cpp

AMDGPU: Add getSubArchFromGPUName utility (#220328)

Add a utility function to map a GPU name to the correct subarch.
This provides the minimum effort mapping for frontends to convert their
current target name system to produce a subarch triple.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+27-0llvm/unittests/TargetParser/TargetParserTest.cpp
+5-0llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+4-0llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+36-03 files

LLVM/project e99ecf3llvm/lib/CodeGen/GlobalISel GISelValueTracking.cpp

[GlobalISel][NFC] Use TyBits in computeNumSignBits (#220324)

Found some inefficiency while trying to make pr #220317. 

DstTyBits are already computed as TyBits, so let's use that instead of
recomputing the value.

## AI disclosure

I made AI write it because this is not the first issue, but I understand
what I'm doing.
DeltaFile
+3-4llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp
+3-41 files

LLVM/project 17742acllvm/test/CodeGen/AMDGPU llvm.amdgcn.mfma.anti-hints.mir

Addressed review: Added test
DeltaFile
+300-106llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.anti-hints.mir
+300-1061 files

LLVM/project abc9e50clang/docs ReleaseNotes.md, clang/lib/Sema SemaExpand.cpp

[Clang] Fix crash when expanding an expansion statement after a fatal error (#220042)

Fixes #214917

When the error limit is reached, clang emits `fatal error: too many
errors emitted` but keeps parsing with diagnostics suppressed. If it
then reaches a well-formed `template for`, `FinishCXXExpansionStmt`
tries to instantiate the body for each element. The
`InstantiatingTemplate` it constructs deliberately refuses to push a
`CodeSynthesisContext` after a fatal error and marks itself invalid —
but unlike every other instantiation site, this one never checked
`isInvalid()` and called `SubstStmt` anyway, hitting the "Cannot perform
an instantiation without some context on the instantiation stack"
assertion. The junk in the fuzzer reproducer only matters for pushing
the error count past the limit; the expansion statement itself is fine,
since `V` destructures through its public members.

The fix adds the standard `if (Inst.isInvalid()) return StmtError();`
guard before the substitution, so the expansion bails out cleanly like

    [5 lines not shown]
DeltaFile
+43-0clang/test/SemaCXX/GH214917.cpp
+3-0clang/docs/ReleaseNotes.md
+2-0clang/lib/Sema/SemaExpand.cpp
+48-03 files

LLVM/project 079040bllvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 sme-za-tailcall-fpdiff-align.ll

Revert "[llvm][AArch64] Ensure stack alignment in non-sibcall tail calls with…"

This reverts commit 234ce03692ede13ffd2fcb35570d801c1e332814.
DeltaFile
+0-79llvm/test/CodeGen/AArch64/sme-za-tailcall-fpdiff-align.ll
+10-18llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+10-972 files

LLVM/project ce1a7aellvm/lib/Target/Sparc/AsmParser SparcAsmParser.cpp, llvm/test/MC/Sparc sparc-unary-not.s

[SPARC] Parse unary complement immediates (#219970)

Accept the tilde operand for unary complement of assembler immediates.
DeltaFile
+4-0llvm/test/MC/Sparc/sparc-unary-not.s
+1-0llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
+5-02 files

LLVM/project c9a9ff2flang/docs Extensions.md, flang/lib/Semantics check-namelist.cpp check-io.cpp

Enhanced the check for enumerations in namelist objects at declaration time and remove the I/O time check.  This captures the C8109 restrictions completely.  Added test cases from reviewer to demonstrate the fix.
DeltaFile
+60-5flang/test/Semantics/enumeration-type-io.f90
+8-26flang/lib/Semantics/check-io.cpp
+20-1flang/lib/Semantics/check-namelist.cpp
+9-0flang/docs/Extensions.md
+4-4flang/test/Semantics/enumeration-type-io-pdt-order.f90
+101-365 files

LLVM/project 875b213libc/src/__support/OSUtil/linux/syscall_wrappers getpgid.h setpgid.h, libc/src/unistd/linux CMakeLists.txt

[libc] Add <unistd.h> functions for process group management. (#220044)

* Add POSIX functions `getpgid`, `getpgrp`, and `setpgid` that get/set
process group IDs. Define them in `<unistd.h>`
  header and add entrypoints on Linux platforms;
* Implement these functions on Linux as `getpgid`/`setpgid` syscall
wrappers.
* Add unit test to sanity-check returned values and validate the
expected `errno` values for invalid arguments. Given the
simplicity of implementation, don't write fork-based tests to validate
that the process group management works as
  expected on Linux machines.

Assisted by automated tooling, human-verified.
DeltaFile
+39-0libc/test/src/unistd/CMakeLists.txt
+38-0libc/test/src/unistd/getpgid_test.cpp
+35-0libc/src/unistd/linux/CMakeLists.txt
+34-0libc/src/__support/OSUtil/linux/syscall_wrappers/getpgid.h
+34-0libc/test/src/unistd/setpgid_test.cpp
+34-0libc/src/__support/OSUtil/linux/syscall_wrappers/setpgid.h
+214-014 files not shown
+497-020 files