LLVM/project 55d008cllvm/lib/Target/AMDGPU SIISelLowering.cpp AMDGPUISelLowering.cpp, llvm/test/CodeGen/AMDGPU uaddsat.ll

[AMDGPU] Lower uniform uaddsat.i16 to SALU instructions

Promote uniform i16 uadd.sat to i32 in promoteUniformOpToI32 so it
lowers to SALU (s_add_i32 + s_min_u32) instead of VALU + readfirstlane.
The saturating add on zero-extended operands reduces to
umin(add(lhs, rhs), 0xffff).

Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+64-60llvm/test/CodeGen/AMDGPU/uaddsat.ll
+10-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+1-0llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+75-623 files

LLVM/project 5961fe3llvm/test/CodeGen/AMDGPU uaddsat.ll

[AMDGPU] Add tests for uniform uaddsat.i16 (NFC)

Precommit tests covering uniform (SALU) uadd.sat for i16 and vector
i16 (v2i16, v3i16, v4i16) using the amdgpu_ps calling convention so
results are returned in SGPRs. These currently lower to VALU
(v_add_u16 clamp / v_pk_add_u16 clamp + v_readfirstlane).

Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+239-0llvm/test/CodeGen/AMDGPU/uaddsat.ll
+239-01 files

LLVM/project 9b0e63aclang/lib/CIR/Dialect/Transforms/TargetLowering CIRABIRewriteContext.cpp, clang/test/CIR/Transforms/abi-lowering indirect-byval.cir

[CIR] Rewire byref args to the incoming pointer (#210836)

The CallConvLowering body rewrite for Indirect arguments treats byval
and
byref the same way: it inserts a cir.load at function entry and reroutes
body
uses to the loaded value. For byref — a non-trivially-copyable type
passed by
pointer — that entry load is a byte-copy, so the callee works on a local
copy
instead of the caller's storage. That breaks types whose representation
embeds
self-referential pointers: libstdc++'s SSO std::string keeps _M_p
pointing at
its own _M_local_buf, and a byte-copy leaves the copy's _M_p aliasing
the
source's buffer.

This mirrors the sret return fix in insertSRetStores. For byref only,

    [15 lines not shown]
DeltaFile
+59-16clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
+61-5clang/test/CIR/Transforms/abi-lowering/indirect-byval.cir
+120-212 files

LLVM/project 30878c1utils/bazel/llvm-project-overlay/lldb BUILD.bazel

[bazel] Add os select for plugin process on Initialization target to add windows (#211276)

Another small piece of windows build support for LLDB in bazel.
Internally at Meta, our buck2 rule for this has a split for mac/linux
with PluginProcessPOSIX and windows with PluginProcessWindowsCommon. So
this should be a no-op for existing linux & mac builds while setting up
a bit more for windows.

I have no bazel build set up locally, so will wait on CI to confirm no
regression.
bazel rule creation assisted with claude
DeltaFile
+8-2utils/bazel/llvm-project-overlay/lldb/BUILD.bazel
+8-21 files

LLVM/project 9659d3amlir/lib/Dialect/OpenACC/Transforms ACCCGToGPU.cpp, mlir/test/Dialect/OpenACC acc-cg-to-gpu-privatize-threadprivate.mlir

[mlir][OpenACC] Forward dynamic boxed reduction extents (#211318)

Example:
```fortran
subroutine reduce(a, x, n)
  integer :: n, i
  real :: a(:), x(:)

  !$acc parallel loop reduction(+:a)
  do i = 1, n
    a(:) = a(:) + x(i)
  end do
end subroutine
```

`ACCCGToGPU` represents each gang/thread-private array as a dynamically
offset `memref.subview`. Converting this subview directly to a FIR
pointer-like type loses the memref offset, causing different private
copies to alias the same storage.

    [34 lines not shown]
DeltaFile
+31-0mlir/test/Dialect/OpenACC/acc-cg-to-gpu-privatize-threadprivate.mlir
+11-4mlir/lib/Dialect/OpenACC/Transforms/ACCCGToGPU.cpp
+42-42 files

LLVM/project 36684a1clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage UnsafeBufferUsageAnalysis.cpp

address comments
DeltaFile
+9-9clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
+9-91 files

LLVM/project 7f1aca5llvm/lib/Bitcode/Reader MetadataLoader.cpp, llvm/test/Bitcode DIGlobalVariableExpression.ll DIGlobalVariableExpression2.ll

[DebugInfo] Avoid duplicate DIGlobalVariableExpression during upgrade (#190616)

During bitcode upgrades, if an old DIGlobalVariable is encountered that
contained a DIExpression, a DIGlobalVariableExpression is created for
it. This could happen multiple times. As described in
https://reviews.llvm.org/D26769, it is valid for a DIGlobalVariable to
have multiple DIGlobalVariableExpressions, but the use case for this is
a location that cannot be represented in a single DIExpression, not a
redundant restatement of the same DIExpression.
DeltaFile
+21-8llvm/lib/Bitcode/Reader/MetadataLoader.cpp
+9-9llvm/test/Bitcode/DIGlobalVariableExpression.ll
+1-2llvm/test/Bitcode/DIGlobalVariableExpression2.ll
+31-193 files

LLVM/project e19eb38llvm/include/llvm/IR RuntimeLibcalls.td, llvm/lib/CodeGen TargetLoweringBase.cpp

RuntimeLibcalls: Drop artificial __aeabi_?cmpeq suffixes (#211251)

Avoid defining synthetic LibcallImpls just to match the use
case of the legalizer. __aeabi_?cmpeq returns a boolean for
ordered-equal and  was defined twice with __oeq/__une enum
suffixes so the one symbol could serve both OEQ and UNE.
Replace each pair with a single unsuffixed impl providing only
OEQ. The legalizer can directly invert it without the dummy entry.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+5-9llvm/include/llvm/IR/RuntimeLibcalls.td
+2-8llvm/lib/CodeGen/TargetLoweringBase.cpp
+9-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+4-2llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
+20-194 files

LLVM/project 58d2ec6mlir/include/mlir-c Rewrite.h, mlir/lib/Bindings/Python Rewrite.cpp

[mlir-c] Add TypeConverter materialization; use a status enum for the type conversion callback (#208934)

Continues the buildout of the dialect-conversion C bindings (follows
#206146 and #206161).

- Exposes `TypeConverter::addSourceMaterialization` and
`addTargetMaterialization` through the MLIR C API.
- Introduces `MlirTypeConverterConversionStatus`
(`Success`/`Failure`/`Declined`) and switches
`MlirTypeConverterConversionCallback` to return it, replacing the old
`MlirLogicalResult` + `MlirType{NULL}` dual sentinel. The old convention
could not distinguish the C++ decline (`std::nullopt`, try the next
conversion) and hard-failure (`failure()`, stop) states; the enum maps
cleanly to all three. The Python binding and C API test are updated
accordingly.

Assisted by: Claude
DeltaFile
+288-3mlir/test/CAPI/rewrite.c
+57-7mlir/lib/CAPI/Transforms/Rewrite.cpp
+46-6mlir/include/mlir-c/Rewrite.h
+3-3mlir/lib/Bindings/Python/Rewrite.cpp
+394-194 files

LLVM/project 045c898libcxx/test/std/ranges/range.adaptors/range.transform/iterator sentinel.pass.cpp, libcxx/test/std/ranges/range.adaptors/range.transform/sentinel sentinel.pass.cpp

[libc++][NFC] Format and move `transform_view`'s `sentinel.pass.cpp` (#211252)

As a pre-requisite to: https://github.com/llvm/llvm-project/pull/193891
DeltaFile
+64-0libcxx/test/std/ranges/range.adaptors/range.transform/sentinel/sentinel.pass.cpp
+0-64libcxx/test/std/ranges/range.adaptors/range.transform/iterator/sentinel.pass.cpp
+64-642 files

LLVM/project 03e15b9llvm/lib/Target/AMDGPU SIInsertWaitcnts.cpp, llvm/test/CodeGen/AMDGPU vsrc-simplify-asynccnt.mir

[AMDGPU] Track async events for vm_vrsc simplifications

Change-Id: Ib8f6c7f73b440b90c80da191ba52980c1f216122
DeltaFile
+2-2llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+1-0llvm/test/CodeGen/AMDGPU/vsrc-simplify-asynccnt.mir
+3-22 files

LLVM/project 82db62bllvm/test/CodeGen/AMDGPU vsrc-simplify-asynccnt.mir

Precommit test to show impact

Change-Id: Ia835c90c2087d3e7453917a1f62c0d2d7f27d531
DeltaFile
+30-0llvm/test/CodeGen/AMDGPU/vsrc-simplify-asynccnt.mir
+30-01 files

LLVM/project dbaabbclibunwind/test aix_vapi_signal_unwind.pass.cpp

[libunwind][test][AIX] Add C API test for unwinding from AIX VAPI (as signal handler) (#209662)

Further to https://github.com/llvm/llvm-project/pull/209306, test a case
where a signal handler is a Virtual API function triggered synchronously
while the VAPI is not active. Resuming an ancestor context of the signal
frame should call the VAPI return glue.

---------

Assisted-by: IBM Bob
DeltaFile
+115-0libunwind/test/aix_vapi_signal_unwind.pass.cpp
+115-01 files

LLVM/project 5546408flang/lib/Semantics check-omp-structure.cpp check-omp-structure.h, llvm/include/llvm/Frontend/OpenMP OMP.td

[flang][OpenMP] Switch TableGen generation to use llvm::EnumSet

Replace the remaining uses of the common::EnumSet-based OmpClauseSet to
llvm::omp::ClauseSet.
DeltaFile
+21-24flang/lib/Semantics/check-omp-structure.cpp
+3-8flang/lib/Semantics/check-omp-structure.h
+1-1llvm/include/llvm/Frontend/OpenMP/OMP.td
+25-333 files

LLVM/project 7c761d4flang/lib/Semantics check-directive-structure.h check-omp-structure.cpp

[flang] Provide "clause set" type as parameter to DirectiveStructureChecker

This will remove the hardcoded dependence of DirectiveStructureChecker on
the common::EnumSet class. Both consumers of it will be able to use their
own type for the clause set.

The only complication was the ClauseSetToString member function, whose
implementation depended on the specifics of common::EnumSet, namely the
IterateOverMembers member function. It was moved out of the class, and
turned into a function template to make it possible to provide different
specializations for common::EnumSet and llvm::EnumSet.
DeltaFile
+59-75flang/lib/Semantics/check-directive-structure.h
+14-1flang/lib/Semantics/check-omp-structure.cpp
+12-0flang/lib/Semantics/check-acc-structure.cpp
+5-1flang/lib/Semantics/check-acc-structure.h
+5-1flang/lib/Semantics/check-omp-structure.h
+95-785 files

LLVM/project c221cedflang/include/flang/Semantics openmp-directive-sets.h, flang/lib/Lower/OpenMP OpenMP.cpp

[flang][OpenMP] Use llvm::omp::DirectiveSet instead of common::EnumSet

Replace uses of OmpDirectiveSet (defined in terms of common::EnumSet)
with the common llvm::omp::DirectiveSet (defined via llvm::EnumSet).

The llvm::omp::DirectiveSet class will also be used in openmp-parsers,
where OmpDirectiveSet was an instance of llvm::Bitset.
DeltaFile
+58-60flang/include/flang/Semantics/openmp-directive-sets.h
+23-24flang/lib/Lower/OpenMP/OpenMP.cpp
+21-23flang/lib/Parser/openmp-parsers.cpp
+10-9flang/lib/Semantics/check-omp-structure.cpp
+2-2flang/lib/Semantics/check-omp-structure.h
+1-1flang/lib/Semantics/check-omp-loop.cpp
+115-1191 files not shown
+117-1197 files

LLVM/project 1b63b6eflang/include/flang/Semantics symbol.h, flang/lib/Semantics resolve-directives.cpp check-omp-structure.h

[flang][OpenMP] Use llvm::omp::ClauseSet instead of common::EnumSet

Replace uses of OmpClauseSet (defined in terms of common::EnumSet)
with the common llvm::omp::ClauseSet (defined via llvm::EnumSet).
DeltaFile
+18-19flang/lib/Semantics/resolve-directives.cpp
+17-14flang/include/flang/Semantics/symbol.h
+10-9flang/lib/Semantics/check-omp-structure.h
+8-9flang/lib/Semantics/symbol.cpp
+5-5flang/lib/Semantics/mod-file.cpp
+3-3flang/lib/Semantics/check-omp-structure.cpp
+61-593 files not shown
+66-619 files

LLVM/project f266ca1llvm/docs DirectXUsage.rst, llvm/docs/DirectX SemanticSignatures.md

[HLSL][Docs] Add metadata description of semantic signatures (#206804)

Adds docs of semantic signatures from the proposal.

Resolves https://github.com/llvm/llvm-project/issues/204877
DeltaFile
+127-0llvm/docs/DirectX/SemanticSignatures.md
+1-0llvm/docs/DirectXUsage.rst
+128-02 files

LLVM/project 95ffe16llvm/lib/Target/AMDGPU BUFInstructions.td SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.raw.ptr.tbuffer.load.d16.ll llvm.amdgcn.raw.ptr.tbuffer.store.d16.ll

[AMDGPU] Support i16 element types for tbuffer D16 load/store (#201420)

Detect D16 by element bit width rather than matching f16 specifically,
so integer i16 elements take the same packed/unpacked path
DeltaFile
+247-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.raw.ptr.tbuffer.load.d16.ll
+118-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.raw.ptr.tbuffer.store.d16.ll
+56-26llvm/lib/Target/AMDGPU/BUFInstructions.td
+4-4llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+425-304 files

LLVM/project 8be7044llvm/include/llvm/Frontend/OpenMP OMP.h

[OpenMP] Implement EnumSet container

This is close to flang's common::EnumSet with the difference being that
it provides forward iterators.

The reason for having an implementation that is separate from
common::EnumSet is that this is intended to be shared for all consumers
of llvm/lib/Frontend/OpenMP. This class is also planned to be one of the
core containers for representing auto-generated OpenMP data in the future.
DeltaFile
+104-0llvm/include/llvm/Frontend/OpenMP/OMP.h
+104-01 files

LLVM/project 861efe0libunwind/test aix_vapi_unw_resume.pass.cpp CMakeLists.txt, libunwind/test/configs cmake-bridge.cfg.in

[libunwind][test][AIX] Add C API test for unwinding from AIX VAPI (non-signal-handler case) (#209306)

Test detection, during stepping, of the backchain mutation introduced by
a VAPI call (see https://github.com/llvm/llvm-project/pull/209280).
Further, test resumption of contexts using cursors obtained while a VAPI
is active on the thread.

Testing is done via FileCheck inspection of trace output enabled by
`LIBUNWIND_PRINT_UNWINDING=1`. When Live Library Update is not enabled,
synthetic trace output is generated by the test program itself.

---------

Assisted-by: IBM Bob
DeltaFile
+167-0libunwind/test/aix_vapi_unw_resume.pass.cpp
+2-0libunwind/test/configs/cmake-bridge.cfg.in
+1-0libunwind/test/CMakeLists.txt
+170-03 files

LLVM/project 85fa1afllvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/lib/Transforms/Vectorize/SLPVectorizer SLPUtils.cpp SLPUtils.h

[SLP] Vectorize select-addressed loads as masked-load blends

Recognize loads whose address is chosen per lane via
select(cond, A, B) and vectorize them as two masked loads blended
by a select, instead of gathering.

Fixes case 6 from #206367

Reviewers: hiraditya, RKSimon, bababuck

Pull Request: https://github.com/llvm/llvm-project/pull/210455
DeltaFile
+15-188llvm/test/Transforms/SLPVectorizer/X86/masked-blended-loads.ll
+144-28llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+41-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPUtils.cpp
+15-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPUtils.h
+13-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPCostAnalysis.cpp
+9-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPCostAnalysis.h
+237-2166 files

LLVM/project 50a2e93libc/src/__support/printf_core float_dec_converter.h, libc/src/stdio/printf_core float_dec_converter.h

Rebase

Created using spr 1.3.7
DeltaFile
+13,068-0llvm/test/CodeGen/RISCV/GlobalISel/atomicrmw-max-min-umax-umin.ll
+1,889-0llvm/test/CodeGen/AArch64/sve-multivector-load-stores.ll
+0-1,526llvm/test/CodeGen/AArch64/sve-multivector-loads.ll
+1,248-0libc/src/__support/printf_core/float_dec_converter.h
+0-1,248libc/src/stdio/printf_core/float_dec_converter.h
+442-520llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fdot2.ll
+16,647-3,294649 files not shown
+43,550-15,188655 files

LLVM/project 03a2052flang/include/flang/Evaluate tools.h, flang/lib/Evaluate tools.cpp

[flang][Lower] Admit opaque terms to real sum reassociation

First part of follow-ups for generalisations requested in #207377.

The split-sum eligibility check rejected any RHS containing explicit
parentheses or subtraction, even though the Add flattener already
preserves every non-Add subtree as one opaque term.

Remove those blanket guards and their unused predicates. Document the
opaque-term invariant and extend the test to cover parenthesized
additions and subtractions, whole-RHS parentheses, and subtraction
terms.

Assisted-by: Codex
DeltaFile
+184-21flang/test/Lower/split-sum-expression-tree-lowering.f90
+4-32flang/lib/Evaluate/tools.cpp
+0-6flang/include/flang/Evaluate/tools.h
+188-593 files

LLVM/project badd93dclang/lib/CIR/CodeGen CIRGenExpr.cpp CIRGenValue.h

[CIR][NFC] Remove unreachable code and add missing NYIs (#211084)

Remove unreachable code and add missing NYIs for Matrix row and elt
DeltaFile
+11-4clang/lib/CIR/CodeGen/CIRGenExpr.cpp
+1-0clang/lib/CIR/CodeGen/CIRGenValue.h
+12-42 files

LLVM/project 0cd942flldb/source/Core DumpDataExtractor.cpp, lldb/test/API/functionalities/data-formatter/builtin-formats TestBuiltinFormats.py

[lldb] Fix Unicode code point formatting to use proper notation  (#211131)

- use uppercase hex digits

- only emit "U+" notation for valid code points (<= U+10FFFF),
zero-padded to a minimum of four digits.

rdar://173817553

Assisted-by: claude
DeltaFile
+11-4lldb/source/Core/DumpDataExtractor.cpp
+10-1lldb/test/API/functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py
+9-2lldb/unittests/Core/DumpDataExtractorTest.cpp
+5-5lldb/test/Shell/SymbolFile/NativePDB/globals-fundamental.cpp
+2-4lldb/test/API/lang/cpp/char1632_t/TestChar1632T.py
+37-165 files

LLVM/project 743f031libcxx/docs conf.py, libcxxabi/include cxxabi.h

[runtimes] LLVM 24 version bumps (#211262)

This patch bumps the version of libc++abi and libunwind, and libc++ in
the documentation.
DeltaFile
+2-2libcxx/docs/conf.py
+1-1libcxxabi/include/cxxabi.h
+1-1libunwind/include/__libunwind_config.h
+4-43 files

LLVM/project c416cc1flang/lib/Optimizer/Transforms/CUDA CUFAllocDelay.cpp, flang/test/Transforms/CUF cuf-alloc-delay.fir

[flang][cuda] Fix cuf-alloc-delay for host-associated allocatables (#211103)

`cuf-alloc-delay` sinks a managed descriptor's `cuf.alloc` group
(`{cuf.alloc, fir.store, fir.declare}`) to just before its first use, to
defer the managed allocation. It special-cased the store of the descriptor
into a host-association tuple slot (`fir.store` to a `fir.llvm_ptr`): it did
not count that store (nor the call that consumes the tuple) as a use, and moved
the store along with the group. As a result, when a managed allocatable descriptor
is stored into a host-association tuple and passed to an internal procedure, the group
could be sunk **past** the internal-procedure call that reads the tuple, so the
callee observed an uninitialized descriptor. On more complex tuples, moving the
host-association store also broke SSA dominance, producing
`operand #1 does not dominate this use`.

With this PR, `findDelayTarget` now treats **every** use of the
descriptor as a real use, including the host-association store. The group is only ever sunk to
*before* the first use, and the host-association store is never moved (it reads
its own `fir.coordinate_of` slot). This keeps the descriptor initialized before
the tuple is consumed and is dominance-safe by construction.
DeltaFile
+74-6flang/test/Transforms/CUF/cuf-alloc-delay.fir
+17-42flang/lib/Optimizer/Transforms/CUDA/CUFAllocDelay.cpp
+91-482 files

LLVM/project 9286c58flang/lib/Optimizer/Analysis ArraySectionAnalyzer.cpp, flang/lib/Optimizer/Builder IntrinsicCall.cpp HLFIRTools.cpp

[Flang] Return APInt from getIntIfConstant (#211233)

Preserve the full bit width of integer attributes when extracting
constants from FIR values. Return llvm::APInt directly and update
fixed-width consumers to use checked signed extraction.

This avoids truncating or asserting on constants wider than 64 bits
while retaining existing fallback behavior at int64_t boundaries.

This should be NFC everywhere we didn't have a latent overflow bug. I
didn't go so far as updating the interfaces of every function built on
top of getIntIfConstant: this is mostly to make an APInt version
available because it looks useful for another PR. Fixing the builder API
to use APInt would be a larger change - let me know if anyone wants to
see that.

Assisted-by: Codex
DeltaFile
+18-15flang/lib/Optimizer/Builder/IntrinsicCall.cpp
+12-10flang/lib/Optimizer/Dialect/FIROps.cpp
+11-8flang/lib/Optimizer/Analysis/ArraySectionAnalyzer.cpp
+10-4flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp
+9-5flang/lib/Optimizer/Builder/HLFIRTools.cpp
+11-3flang/lib/Optimizer/HLFIR/IR/HLFIROps.cpp
+71-4513 files not shown
+133-7419 files

LLVM/project 9d2000clldb/test/API/functionalities/memory/find TestMemoryFind.py, lldb/test/API/lang/cpp/global_operators TestCppGlobalOperators.py

[lldb][test] Skip more WebAssembly-unsupported API tests (#211305)

Skip tests that exercise features WebAssembly does not provide:
expression evaluation, registers, an ABI plugin, and unmapped memory
pages.
DeltaFile
+2-0lldb/test/API/python_api/exprpath_register/TestExprPathRegisters.py
+1-0lldb/test/API/functionalities/memory/find/TestMemoryFind.py
+1-0lldb/test/API/lang/cpp/global_operators/TestCppGlobalOperators.py
+1-0lldb/test/API/lang/cpp/static_members/TestCPPStaticMembers.py
+1-0lldb/test/API/python_api/process/address-masks/TestAddressMasks.py
+1-0lldb/test/API/python_api/process/read-mem-cstring/TestReadMemCString.py
+7-01 files not shown
+8-07 files