LLVM/project 1b9ed2b — offload/liboffload/API Queue.td, offload/plugins-nextgen/host/src rtl.cpp

[Offload] Report no pending work for host plugin queues (#240927)

The host plugin runs every operation synchronously, but
hasPendingWorkImpl returned true unconditionally. As a result
OL_QUEUE_INFO_EMPTY was always false on the host device, and
olDestroyQueue parked every host queue on the context's outstanding list
until the context was destroyed.

Return false instead, so a host queue reports as empty and is released
when it is destroyed. All backends now report the real queue status, so
drop the "may be unconditionally false" caveat from the
OL_QUEUE_INFO_EMPTY documentation.

Assisted-by: Claude
DeltaFile
+2-1offload/plugins-nextgen/host/src/rtl.cpp
+1-1offload/liboffload/API/Queue.td
+3-22 files

LLVM/project fd5f0a8 — lldb/source/Core FormatEntity.cpp, lldb/test/API/functionalities/return-value-synthetic Makefile synthetic.py

[lldb] Show synthetic children in the return value of the thread description (#241323)

ValueObject::Dump without options uses synthetic children only for
synthetic value objects.

assisted by claude
DeltaFile
+26-0lldb/test/API/functionalities/return-value-synthetic/TestReturnValueSynthetic.py
+14-0lldb/test/API/functionalities/return-value-synthetic/main.c
+9-0lldb/test/API/functionalities/return-value-synthetic/synthetic.py
+7-1lldb/source/Core/FormatEntity.cpp
+3-0lldb/test/API/functionalities/return-value-synthetic/Makefile
+59-15 files

LLVM/project 2f9eef9 — clang/lib/CIR/Lowering/DirectToLLVM CMakeLists.txt LowerToLLVM.cpp

[CIR][NFC] Separate shared metadata lowering from OpenCL conversions (#240990)

Extract function metadata dispatch and aggregation into
`LowerToLLVMMetadata`, including the maximum work-group size conversion
introduced in #227715. Keep OpenCL-specific conversions in
`LowerToLLVMOpenCLMetadata`.

Assisted-by: Codex / GPT-6
DeltaFile
+84-0clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVMMetadata.h
+2-80clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVMOpenCLMetadata.cpp
+60-0clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVMMetadata.cpp
+4-16clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVMOpenCLMetadata.h
+4-3clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+1-0clang/lib/CIR/Lowering/DirectToLLVM/CMakeLists.txt
+155-996 files

LLVM/project b8c9fba — libc/utils/docgen netdb.yaml langinfo.yaml, libc/utils/docgen/sys shm.yaml types.yaml

[libc][docs] Add remaining C23 and POSIX docgen header catalogues (#241564)

Twenty-four C23 and POSIX headers currently lack docgen status
catalogues, while float.h and other freestanding headers in
CLANG_FREESTANDING_HEADERS short-circuit to implemented instead of
checking LLVM-libc's own macro and type headers. Purely compiler-owned
freestanding headers (such as stdarg.h, stdatomic.h, stddef.h, and
tgmath.h) live in Clang or GCC rather than libc, so docgen cannot
truthfully report per-symbol coverage for them.

Remove CLANG_FREESTANDING_HEADERS and provider overrides so float.h,
limits.h, stdckdint.h, and stdint.h evaluate directly against
libc/include/ (including typedefs in macro headers), note the
compiler-provided headers on libc/docs/headers/index.md, and add docgen
YAML catalogues for limits.h, stdckdint.h, stdint.h, and the 21
remaining POSIX headers.

Assisted-by: Automated tooling, human reviewed.
DeltaFile
+340-0libc/utils/docgen/stdint.yaml
+131-0libc/utils/docgen/limits.yaml
+122-0libc/utils/docgen/langinfo.yaml
+106-0libc/utils/docgen/netdb.yaml
+100-0libc/utils/docgen/sys/types.yaml
+90-0libc/utils/docgen/sys/shm.yaml
+889-024 files not shown
+1,430-4130 files

LLVM/project e115dd3 — lldb/include/lldb/Target StackID.h, lldb/source/API SBFrame.cpp

[lldb] Give tail call frames distinct, ordered StackIDs (#240665)

Synthesized tail call frames all had an invalid CFA, so the tail call
frames of one function shared a `StackID` and broke the order that
`StackFrameList::GetFrameWithStackID` relies on. On a stack that repeats
a tail call, `SBFrame` calls could resolve to the wrong frame, and
lookups fell back to a linear scan, making a full stack walk quadratic.

Give each tail call frame the CFA of the younger frame that replaced it,
plus a depth that orders the frames sharing that CFA. The borrowed CFA
only identifies the frame: `SBFrame::GetCFA` and `DW_OP_call_frame_cfa`
still treat it as having none.
DeltaFile
+57-0lldb/test/API/functionalities/tail_call_frames/frame_identity/TestTailCallFrameIdentity.py
+41-0lldb/test/API/functionalities/tail_call_frames/frame_identity/main.cpp
+30-0lldb/unittests/Target/StackIDTest.cpp
+8-2lldb/source/API/SBFrame.cpp
+10-0lldb/include/lldb/Target/StackID.h
+9-0lldb/source/Target/StackID.cpp
+155-24 files not shown
+169-510 files

LLVM/project 8f63ff6 — llvm/lib/Target/LoongArch LoongArchISelLowering.cpp

[LoongArch][NFC] Replace manual v2i128 check with MVT::v2i128 (#241726)

Now that v2i128 is a legal MVT, the manual v2i128 check and the
associated stale comment are no longer needed. Compare against
MVT::v2i128 directly instead.
DeltaFile
+2-7llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+2-71 files

LLVM/project 0038cb8 — mlir/lib/Dialect/Complex/IR ComplexOps.cpp, mlir/test/Dialect/Complex canonicalize.mlir

[mlir][Complex] Don't require nsz for complex exp(log) fold (#240812)
DeltaFile
+11-13mlir/test/Dialect/Complex/canonicalize.mlir
+6-6mlir/lib/Dialect/Complex/IR/ComplexOps.cpp
+17-192 files

LLVM/project 4cb42b4 — libcxx/lib/abi arm64-apple-darwin.libcxxabi.v1.stable.noexceptions.nonew.abilist, llvm/lib/Target/Hexagon HexagonDepInstrInfo.td

Merge branch 'main' into users/vpykhtin/amdgpu-vgpr32-from-lo16-helper
DeltaFile
+5,423-1,585llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
+3,285-20llvm/lib/Target/Hexagon/HexagonDepInstrInfo.td
+2,968-0llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/is_fpclass.ll
+1,483-1,439llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+1,335-1,300llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+2,631-0libcxx/lib/abi/arm64-apple-darwin.libcxxabi.v1.stable.noexceptions.nonew.abilist
+17,125-4,3447,995 files not shown
+217,351-98,4288,001 files

LLVM/project 047c70d — llvm/test/CodeGen/AArch64 bitinsert-vector.ll bitextract-vector.ll

[AArch64] Use `-global-isel=0` in vector `bitinsert`/`bitextract` test
DeltaFile
+1-1llvm/test/CodeGen/AArch64/bitinsert-vector.ll
+1-1llvm/test/CodeGen/AArch64/bitextract-vector.ll
+2-22 files

LLVM/project 7660aa3 — llvm/lib/CodeGen/GlobalISel IRTranslator.cpp, llvm/test/CodeGen/AArch64 bitextract-vector.ll bitinsert-vector.ll

[GlobalISel] Lower vector `bitinsert` and `bitextract`
DeltaFile
+111-50llvm/test/CodeGen/AArch64/bitinsert-vector.ll
+19-9llvm/test/CodeGen/AArch64/bitextract-vector.ll
+13-12llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+143-713 files

LLVM/project b7bb0c9 — llvm/test/CodeGen/AMDGPU bitinsert-vector.ll bitinsert-bitextract-vector.ll, llvm/test/CodeGen/RISCV/rvv fixed-vectors-bitinsert-bitextract.ll

[SelectionDAG] Split vector `bitinsert` and `bitextract` tests
DeltaFile
+0-928llvm/test/CodeGen/AMDGPU/bitinsert-bitextract-vector.ll
+0-779llvm/test/CodeGen/X86/bitinsert-bitextract-vector.ll
+744-0llvm/test/CodeGen/AMDGPU/bitinsert-vector.ll
+549-0llvm/test/CodeGen/X86/bitinsert-vector.ll
+0-240llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitinsert-bitextract.ll
+235-0llvm/test/CodeGen/X86/bitextract-vector.ll
+1,528-1,94712 files not shown
+2,165-2,14618 files

LLVM/project 93df9d8 — llvm/lib/Target/AMDGPU AMDGPURegisterBankInfo.cpp AMDGPULegalizerInfo.cpp, llvm/test/CodeGen/AMDGPU stacksave_stackrestore.ll

[AMDGPU][GISel] Capture the stack pointer at stacksave
DeltaFile
+254-190llvm/test/CodeGen/AMDGPU/stacksave_stackrestore.ll
+15-8llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
+8-1llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+6-2llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-stacksave-stackrestore.mir
+0-3llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
+283-2045 files

LLVM/project d649741 — llvm/test/CodeGen/AMDGPU stacksave_stackrestore.ll

Pre-commit tests for the stackrestore fix
DeltaFile
+1,529-0llvm/test/CodeGen/AMDGPU/stacksave_stackrestore.ll
+1,529-01 files

LLVM/project 76841e2 — llvm/lib/Target/AMDGPU SIInstrInfo.cpp, llvm/test/CodeGen/AMDGPU/GlobalISel regbankselect-amdgpu-wave-address.mir inst-select-amdgpu-wave-address.mir

Relax the verifier to accept VRegs for G_AMDGPU_WAVE_ADDRESS
DeltaFile
+20-15llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-amdgpu-wave-address.mir
+5-9llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-amdgpu-wave-address.mir
+3-2llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+28-263 files

LLVM/project 20e9e51 — llvm/test/CodeGen/AMDGPU/GlobalISel regbankselect-amdgpu-wave-address.mir inst-select-amdgpu-wave-address.mir

Pre-commit tests for relaxing verifier
DeltaFile
+43-2llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-amdgpu-wave-address.mir
+20-1llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-amdgpu-wave-address.mir
+63-32 files

LLVM/project 7ba0608 — libc/test/src/unistd copy_file_range_test.cpp

[libc][test] Fix dangling CString paths in copy_file_range_test (#241787)

Fixes the `aarch64` / overlay failure in
`libc.test.src.unistd.copy_file_range_test` introduced by #240018.

### Root Cause
1. `libc_make_test_file_path(...)` returns an owning `CString`
(non-copyable, non-movable). Storing it into `const char *in_path` /
`out_path` in `SetUp()` destroyed the temporary `CString` immediately,
leaving dangling pointers for `open()` and `unlink()` and causing
`ENOENT` in `SetUp()` (cascading into `EBADF` in `CopyNoOffsets` and
`CopyWithOffsets`).
2. `LlvmLibcCopyFileRangeTest::SetUp()` and `TearDown()` overrode
`ErrnoCheckingTest::SetUp()` / `TearDown()` without invoking the base
class methods.

### Changes
- Initialize `in_path` and `out_path` directly as fixture members using
`decltype(libc_make_test_file_path(...))` so the `CString` objects stay

    [8 lines not shown]
DeltaFile
+8-8libc/test/src/unistd/copy_file_range_test.cpp
+8-81 files

LLVM/project c1ebc15 — llvm/lib/CodeGen/SelectionDAG SelectionDAGBuilder.cpp, llvm/test/CodeGen/AArch64 arm64_32-byte.ll

[SelectionDAG] Use the pointer memory type when lowering byte casts
DeltaFile
+215-0llvm/test/CodeGen/AArch64/arm64_32-byte.ll
+46-5llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+261-52 files

LLVM/project 507e108 — flang/lib/Lower ConvertVariable.cpp, flang/test/Lower/MIF coarray_host_associated.f90

[flang] Fix incorrect reallocation for host-associated main-program coarrays #231233 (#233361)

This fix resolves the issue #231233 involving incorrect reallocation of
a coarray when it is accessed via host association in a nested
procedure.

---------

Co-authored-by: Dan Bonachea <dobonachea at lbl.gov>
DeltaFile
+63-0flang/test/Lower/MIF/coarray_host_associated.f90
+15-6flang/lib/Lower/ConvertVariable.cpp
+78-62 files

LLVM/project f7a437c — llvm/lib/Target/Hexagon HexagonFrameLowering.h HexagonRegisterInfo.cpp, llvm/test/CodeGen/Hexagon hlx-vtcm-stack.ll

[Hexagon] Add local VTCM frames for HLX objects (#241650)

Move local HLX objects to a separate VTCM frame, address them through
VSP, and allocate and release the frame with vallocframe and
vdeallocframe.
Co-authored-by: Yashas Andaluri <yandalur at qti.qualcomm.com>
DeltaFile
+88-2llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
+61-0llvm/test/CodeGen/Hexagon/hlx-vtcm-stack.ll
+27-0llvm/lib/Target/Hexagon/HexagonMachineFunctionInfo.cpp
+20-0llvm/lib/Target/Hexagon/HexagonMachineFunctionInfo.h
+11-0llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp
+5-0llvm/lib/Target/Hexagon/HexagonFrameLowering.h
+212-21 files not shown
+213-27 files

LLVM/project bb6c2f3 — flang/lib/Semantics check-coarray.cpp, flang/test/Semantics form_team01.f90 notifywait03.f90

[flang][Semantics] Adding check integer kind on STAT= specifier #230463 (#231103)

This PR adds a pedantic warning to check whether the specified STAT is
an integer of at least 16-bit because
flang currently silently accepts 8-bit integers to `STAT=`: and F2023
9.7.4 says:

> R946 _stat-variable_ is _scalar-int-variable_
>
> A stat-variable should have a decimal exponent range of at least four;
otherwise the
> processor-dependent error code might not be representable in the
variable.
DeltaFile
+31-34flang/lib/Semantics/check-coarray.cpp
+44-0flang/test/Semantics/check-stat.f90
+14-14flang/test/Semantics/lockstmt03.f90
+8-8flang/test/Semantics/notifywait03.f90
+8-8flang/test/Semantics/event02b.f90
+6-4flang/test/Semantics/form_team01.f90
+111-684 files not shown
+135-7010 files

LLVM/project cdd9130 — llvm/lib/Target/SPIRV SPIRVPreLegalizer.cpp, llvm/test/CodeGen/SPIRV/debug-info debug-line-inline-asm.ll

[SPIRV] Keep source location on OpAsmCallINTEL

insertInlineAsmProcess builds OpAsmCallINTEL with a MachineIRBuilder
whose debug location is empty.
The call therefore had no location, so the NonSemantic
debug handler emitted no debug line information.
DeltaFile
+59-0llvm/test/CodeGen/SPIRV/debug-info/debug-line-inline-asm.ll
+1-0llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp
+60-02 files

LLVM/project 041eb01 — clang/test/SemaCXX warn-consumed-analysis.cpp

[Clang][NFC] Re-enable consumed analysis test for chained logical OR (#240849)

Re-enable the three-way logical OR test in `testComplexConditionals1` by
removing its `#if 0` guard and stale FIXME. The operands start in the
unknown consumed state. Keep all six existing expected warnings in the
true and false branches unchanged.

Prepared with assistance from Codex.
DeltaFile
+0-3clang/test/SemaCXX/warn-consumed-analysis.cpp
+0-31 files

LLVM/project d9ff2ae — clang/test/SemaTemplate instantiate-static-local.cpp

[Clang][NFC] Re-enable local-class static member diagnostic test (#240834)

Re-enable the local-class static data member example in
`clang/test/SemaTemplate/instantiate-static-local.cpp`. Keep its
existing `expected-error {{static}}`, remove the `#if 0` guard and stale
crash FIXME, and remove the conflicting `expected-no-diagnostics`
marker.

The crash was fixed by e2def106757534b07a2d3ff15ddd48e14b69a66d
(#182707). A targeted AArch64 snapshot search followed by native X86
assertions-on builds confirms the boundary: the parent
c1c4a5a870eb668fec480771c4d002e17362ed18 crashes in
`LocalInstantiationScope::findInstantiationOf` on both attempts, while
the fix emits only the expected illegal-static-member diagnostic and
exits normally on both attempts.

Prepared with assistance from Codex.
DeltaFile
+0-4clang/test/SemaTemplate/instantiate-static-local.cpp
+0-41 files

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

[CIR] Use `cir.vec.fcmp` op for AArch64 builtins (#241404)

I've been splitting integer and floating comparisons and stumbled upon
these.

claude updated the test.
DeltaFile
+26-10clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
+4-4clang/test/CodeGen/AArch64/neon/intrinsics.c
+30-142 files

LLVM/project 402f032 — libcxx/include generator

[libc++] Fix generator dependencies for Clang modules

Include the internal headers that declare size_t and ptrdiff_t directly so generator can use both types when building the std Clang module.
DeltaFile
+2-0libcxx/include/generator
+2-01 files

LLVM/project f3980a1 — libc/src/unistd/linux exec_utils.h, libc/test/integration/src/unistd execlp_test.cpp

[libc] Support execution of scripts without shebangs in execvpe (#240040)

Per POSIX.1-2024, if `execve` fails with `ENOEXEC`,
`execvpe`/`execvp`/`execlp` must execute the file using the system shell
(`/bin/sh`) with the file as the first argument and the remaining
arguments appended.

### Changes
- Implements `execve_with_shell_fallback` in
`libc/src/unistd/linux/exec_utils.h`.
- Falls back to `/bin/sh` on `ENOEXEC` both for direct slash paths and
`PATH` searches.
- Adds integration tests in
`libc/test/integration/src/unistd/execlp_test.cpp`.

Fixes #232374.
DeltaFile
+56-0libc/test/integration/src/unistd/execlp_test.cpp
+42-11libc/src/unistd/linux/exec_utils.h
+7-0libc/test/integration/src/unistd/testdata/CMakeLists.txt
+105-113 files

LLVM/project f2fa758 — llvm/test/CodeGen/AMDGPU packed-fp32.ll fpext-f16-extract-hi-O0.ll

[AMDGPU] Pre-commit tests for isExtractHiElt with wide sources

Add tests where the high half of a pair is selected from a source wider
than 32 bits: f16 fpext, fma_mix and D16 loads at -O0, and packed f32
broadcasts of odd elements.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+1,232-0llvm/test/CodeGen/AMDGPU/fpext-f16-extract-hi-O0.ll
+456-0llvm/test/CodeGen/AMDGPU/packed-fp32.ll
+1,688-02 files

LLVM/project ebb7dfd — llvm/include/llvm/IR Attributes.h, llvm/lib/Linker IRMover.cpp

[IR][NFC] Make AttrKind unsigned (#241774)

Minor compile-time improvements, especially in non-LTO builds.

stage1-O3: -0.23%
stage1-O0-g: -0.05%
stage2-O3: -0.02%


https://llvm-compile-time-tracker.com/compare.php?from=2034dbe97220c044d6a4f4488e0379d43ea41bd8&to=8e1c4c0e1a8bf5b3b0fe3fcc085720f867a3975c&stat=instructions:u

This is an alternative approach to
e16f096a493324ce26335737bf59166204472bce.
DeltaFile
+6-6llvm/include/llvm/IR/Attributes.h
+1-1llvm/lib/Transforms/Utils/ValueMapper.cpp
+1-1llvm/lib/Linker/IRMover.cpp
+8-83 files

LLVM/project cd524b5 — llvm/lib/CodeGen InterferenceCache.cpp

[RegAlloc] Find first interference start once in InterferenceCache (NFC) (#240064)

InterferenceCache::Entry::update rescans all regunit iterators for the
earliest interference start in each interference-free block it
precomputes, but the iterators don't move in that loop. Compute the
earliest start once before the loop.

stage1-O3: -0.10%
stage1-ReleaseThinLTO: -0.09%
stage1-ReleaseLTO-g: -0.09%
stage1-aarch64-O3: -0.14%
stage2-O3: -0.09%
stage2-clang: -0.05%


https://llvm-compile-time-tracker.com/compare.php?from=9fadd0df057adb0489b91c7efb02c6f32ce8b8d6&to=7b94287220946edc86f6308e04521c4ec7709566&stat=instructions:u

Found by Opus 5.5

PR: https://github.com/llvm/llvm-project/pull/240064
DeltaFile
+16-24llvm/lib/CodeGen/InterferenceCache.cpp
+16-241 files

LLVM/project 1adfb5e — llvm/lib/Transforms/Utils SimplifyIndVar.cpp, llvm/test/Transforms/IndVarSimplify iv-widen-elim-ext.ll

[IndVarSimplify] Use context to prove a narrow IV def non-negative

When IndVars widens an IV, it checks for each narrow def
(the IV and values computed from it) whether it is
non-negative on every iteration.

If it is, zext and sext of it are equal. Then when IndVars
idens the def's users, they can choose to use either
the sext or zext of the def.

Previously, we didn't use context to prove the non-negativity of def.

Now ask SCEV about the def non-negativity at its context -
the def instruction itself.
This allows SCEV to infer facts from the dominating guards and assumes.

This in turn allows eliminating unnecessary truncs/zexts. E.g. in

  if (m > 0)

    [9 lines not shown]
DeltaFile
+19-28llvm/test/Transforms/IndVarSimplify/iv-widen-elim-ext.ll
+2-2llvm/lib/Transforms/Utils/SimplifyIndVar.cpp
+1-1llvm/test/Transforms/LoopFlatten/invalidate-scev-pr203176.ll
+22-313 files