LLVM/project 04c75f9 — llvm/lib/TargetParser RISCVISAInfo.cpp, llvm/test/MC/RISCV rvy-build-attributes.s

fix round-tripping and simpify the parsing to also allow rv32iy (matching long base name proposal)
DeltaFile
+59-33llvm/unittests/TargetParser/RISCVISAInfoTest.cpp
+16-7llvm/test/MC/RISCV/rvy-build-attributes.s
+10-10llvm/lib/TargetParser/RISCVISAInfo.cpp
+85-503 files

LLVM/project dd1d329 — llvm/lib/Target/AMDGPU SIPostRA16BitMovFolding.cpp, llvm/test/CodeGen/AMDGPU si-post-ra-merge-v-mov-b16.mir

[AMDGPU] Restore the EXEC-write assert in SIPostRA16BitMovFolding (#227890)

#227502 turned the assert into a bail-out. The backend assumes EXEC is
not written in the middle of a basic block, so restore the assert and
drop the test that wrote EXEC between the movs.

Assisted-by: Cursor
DeltaFile
+0-21llvm/test/CodeGen/AMDGPU/si-post-ra-merge-v-mov-b16.mir
+3-2llvm/lib/Target/AMDGPU/SIPostRA16BitMovFolding.cpp
+3-232 files

LLVM/project fb9a5dc —

[AArch64] Add CSEL for canCreateUndefOrPoisonForTargetNode (#226946)

These nodes cannot create posion, so we can push freeze up through them
like elsewhere in DAG.
DeltaFile
+0-00 files

LLVM/project 9d79b83 — flang/lib/Lower/OpenMP Utils.cpp, flang/test/Lower/OpenMP declare-variant-loop-bounds.f90

Fix host-evaluated loop-bound contexts

Host-evaluated bounds can select a different variant from lastprivate
copy-back, leaving the lastprivate value unchanged.

This fix build the loop-bound context from source constituents before
the first loop-associated construct, even when their frames have not
been entered.
DeltaFile
+169-2flang/test/Lower/OpenMP/declare-variant-loop-bounds.f90
+30-18flang/lib/Lower/OpenMP/Utils.cpp
+199-202 files

LLVM/project cd1cc7c — flang/test/Lower/OpenACC acc-collapse-force-unstructured-body.f90, flang/test/Lower/OpenACC/Todo acc-unstructured-combined-construct.f90

[flang][Test] Cover an unstructured combined construct and collapse(force:)

Three cases the lowering handles but nothing exercised:

A combined construct whose body branching keeps it unstructured. The
GOTO jumps backwards, so the loop is not proven to terminate and the
directive cannot take it over; it keeps the TODO the deleted test
covered. A GOTO leaving the loop would not serve, nor EXIT or RETURN:
all three are rejected for a combined construct before lowering runs.

collapse(force:2) over a nest whose inner body branches within itself,
once with a CYCLE and once with GOTOs. Both levels' bounds belong on the
directive's own loop and the body is folded into a region. Two GOTOs to
two targets are needed: one IF-guarded GOTO over a single statement is
rewritten into a fir.if and never reaches the raw form.
DeltaFile
+65-0flang/test/Lower/OpenACC/acc-collapse-force-unstructured-body.f90
+40-0flang/test/Lower/OpenACC/Todo/acc-unstructured-combined-construct.f90
+105-02 files

LLVM/project f281b14 — flang/lib/Lower PFTBuilder.cpp, flang/test/Lower/OpenACC acc-unstructured.f90 acc-unstructured-combined-construct.f90

[flang] Let a directive keep the loop it owns when its body branches

A loop whose branching is confined to its body keeps its structured
form, but the construct holding it stayed Unstructured. A directive does
not merely contain such a loop, it owns it, and its lowering reads the
construct's own classification to decide whether the loop op carries its
bounds. The directive was left with a bounds-free loop that nothing
could partition, and the loop it owns became a second one nested inside.

Reclassify a directive construct once the loops it holds no longer need
it to stay Unstructured. Children are visited first, so those loops have
already been reclassified by the time the construct is reached. A
construct whose branching leaves it is untouched, as is one holding a
branch of its own.

Taking a loop over also means genFIR(DoConstruct) -- where a plain loop
folds a body whose branching stays inside it into a region -- never runs
for that loop, so fold its body through the same helper. A construct
that takes over no loop, acc data or acc parallel without a loop

    [5 lines not shown]
DeltaFile
+160-0flang/test/Lower/OpenACC/acc-unstructured-loop-construct.f90
+8-124flang/test/Lower/OpenACC/Todo/acc-unstructured-loop-construct.f90
+66-0flang/test/Lower/OpenACC/acc-directive-loop-bounds.f90
+45-0flang/test/Lower/OpenACC/acc-unstructured-combined-construct.f90
+23-16flang/test/Lower/OpenACC/acc-unstructured.f90
+33-4flang/lib/Lower/PFTBuilder.cpp
+335-1444 files not shown
+387-17410 files

LLVM/project 3774cff — flang/lib/Lower PFTBuilder.cpp

[flang][NFC] Correct a stale comment on loop reclassification

Two places weaken the classification now, so calling this one "the one
place" is out of date.
DeltaFile
+1-2flang/lib/Lower/PFTBuilder.cpp
+1-21 files

LLVM/project 1e8550c — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 branch-cond-split-fcmp.ll

[AArch64] Add CSEL for canCreateUndefOrPoisonForTargetNode (#226946)

These nodes cannot create posion, so we can push freeze up through them
like elsewhere in DAG.
DeltaFile
+2-4llvm/test/CodeGen/AArch64/branch-cond-split-fcmp.ll
+4-0llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+6-42 files

LLVM/project e670c7a — clang/include/clang/CIR CIRToCIRPasses.h, clang/include/clang/CIR/Dialect Passes.h

[CIR] Make ASTContext optional in runCIRToCIRPasses (#227128)

Read the triple and the new cir.target_abi attribute from the module
instead of the ASTContext, erroring if either is missing, so the
CIR-to-CIR pipeline can run without a live AST. Part of preparing for:
https://discourse.llvm.org/t/rfc-clangir-making-cir-pipeline-boundaries-first-class-driver-artifacts/90998/15

---------

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+26-17clang/lib/CIR/Lowering/CIRPasses.cpp
+0-16clang/lib/CIR/Dialect/Transforms/LoweringPrepare.cpp
+3-8clang/include/clang/CIR/CIRToCIRPasses.h
+0-6clang/include/clang/CIR/Dialect/Passes.h
+6-0clang/test/CIR/CodeGen/call-conv-lowering-x86_64-avx.c
+1-1clang/lib/CIR/FrontendAction/CIRGenAction.cpp
+36-484 files not shown
+40-5110 files

LLVM/project 1854a88 — mlir/lib/Dialect/SPIRV/IR MemoryOps.cpp, mlir/test/Dialect/SPIRV/IR memory-ops.mlir

[mlir][SPIR-V] Fix CopyMemory handling of a lone memory operands mask (#226969)

Fix `spirv.CopyMemory` with a lone memory operands mask, which per spec
applies to both operands

Verifier no longer rejects MakePointerVisible on it
DeltaFile
+15-9mlir/lib/Dialect/SPIRV/IR/MemoryOps.cpp
+12-1mlir/test/Dialect/SPIRV/IR/memory-ops.mlir
+27-102 files

LLVM/project 15aa5fe — llvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp, llvm/test/Transforms/InstCombine/AMDGPU mbcnt.ll

Revert peephole optimization for folding a zero mask to base in mbcnt
DeltaFile
+0-14llvm/test/Transforms/InstCombine/AMDGPU/mbcnt.ll
+0-4llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+0-182 files

LLVM/project 7870b69 — llvm/lib/Analysis ValueTracking.cpp, llvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp

[AMDGPU] Fix amdgcn.mbcnt known bits conflicting with the range attribute
DeltaFile
+20-6llvm/test/Transforms/InstCombine/AMDGPU/mbcnt.ll
+3-2llvm/lib/Analysis/ValueTracking.cpp
+4-0llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+27-83 files

LLVM/project 9152ed6 — llvm/test/Transforms/InstCombine/AMDGPU mbcnt.ll

Remove confusing comments about other add/shfl cases
DeltaFile
+1-4llvm/test/Transforms/InstCombine/AMDGPU/mbcnt.ll
+1-41 files

LLVM/project f3db644 — llvm/test/Transforms/InstCombine/AMDGPU mbcnt.ll

Precommit test cases for mbcnt intrinsic calls being incorrectly folded to 1
DeltaFile
+49-0llvm/test/Transforms/InstCombine/AMDGPU/mbcnt.ll
+49-01 files

LLVM/project 3a36097 — llvm/include/llvm/IR IntrinsicsAMDGPU.td, llvm/test/CodeGen/AMDGPU llvm.amdgcn.s.barrier.unsupported-subtarget.ll

[AMDGPU] Guard named barrier intrinsics with gfx12-insts
DeltaFile
+90-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.unsupported-subtarget.ll
+8-0llvm/include/llvm/IR/IntrinsicsAMDGPU.td
+98-02 files

LLVM/project ccac700 — llvm/lib/Transforms/InstCombine InstCombineAddSub.cpp, llvm/test/Transforms/InstCombine zext-bool-add-sub.ll

[InstCombine] Fix profile propagation in zext-bool-add-sub.ll (#227949)

Mark the profiles for the created selects as unknown as we cannot know
anything about the distribution of the condition in the general case.
DeltaFile
+15-4llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
+10-5llvm/test/Transforms/InstCombine/zext-bool-add-sub.ll
+0-1llvm/utils/profcheck-xfail.txt
+25-103 files

LLVM/project 27ade7b — flang/lib/Lower PFTBuilder.cpp

[flang][NFC] Correct a stale comment on loop reclassification

Two places weaken the classification now, so calling this one "the one
place" is out of date.
DeltaFile
+1-2flang/lib/Lower/PFTBuilder.cpp
+1-21 files

LLVM/project 3d302b4 — flang/lib/Lower PFTBuilder.cpp, flang/test/Lower/OpenACC acc-unstructured.f90 acc-unstructured-combined-construct.f90

[flang] Let a directive keep the loop it owns when its body branches

A loop whose branching is confined to its body keeps its structured
form, but the construct holding it stayed Unstructured. A directive does
not merely contain such a loop, it owns it, and its lowering reads the
construct's own classification to decide whether the loop op carries its
bounds. The directive was left with a bounds-free loop that nothing
could partition, and the loop it owns became a second one nested inside.

Reclassify a directive construct once the loops it holds no longer need
it to stay Unstructured. Children are visited first, so those loops have
already been reclassified by the time the construct is reached. A
construct whose branching leaves it is untouched, as is one holding a
branch of its own.

Taking a loop over also means genFIR(DoConstruct) -- where a plain loop
folds a body whose branching stays inside it into a region -- never runs
for that loop, so fold its body through the same helper. A construct
that takes over no loop, acc data or acc parallel without a loop

    [5 lines not shown]
DeltaFile
+160-0flang/test/Lower/OpenACC/acc-unstructured-loop-construct.f90
+8-124flang/test/Lower/OpenACC/Todo/acc-unstructured-loop-construct.f90
+66-0flang/test/Lower/OpenACC/acc-directive-loop-bounds.f90
+45-0flang/test/Lower/OpenACC/acc-unstructured-combined-construct.f90
+23-16flang/test/Lower/OpenACC/acc-unstructured.f90
+33-4flang/lib/Lower/PFTBuilder.cpp
+335-1444 files not shown
+387-17410 files

LLVM/project 6ad1b7b — flang/lib/Lower Bridge.cpp

[flang][NFC] Split the OpenACC construct lowering into two lanes (#227706)

genFIR(OpenACCConstruct) decided twice, in three places, whether the
construct it lowers is structured, and reassigned the evaluation it
works from halfway through: before the descent that evaluation is the
construct, after it the loop the directive absorbs. Everything
downstream had to know which one it was holding.

Give each form its own function and leave genFIR to choose between them.
One lane allocates the exit selector, lowers the evaluations the
construct holds, and emits the jump table; the other reads the collapse
clauses, descends to the absorbed depth, and lowers what is inside it.
The prologue and epilogue are short enough to state in both rather than
share.
DeltaFile
+149-101flang/lib/Lower/Bridge.cpp
+149-1011 files

LLVM/project ba8dc06 — llvm/test/tools/llubi intr_int_arith.ll, llvm/tools/llubi/lib Interpreter.cpp

[llubi] Add support for pext/pdep (#227803)
DeltaFile
+18-0llvm/test/tools/llubi/intr_int_arith.ll
+8-0llvm/tools/llubi/lib/Interpreter.cpp
+26-02 files

LLVM/project 0eb3614 — cross-project-tests/intrinsic-header-tests riscv_packed_simd.c

[RISCV][P-ext] Prevent accidental matches in riscv_packed_simd.c. NFC (#227830)

The function name is printeded multiple times in the output. We need to
make sure we are matching an instruction mnemonic. The way other
existing test cases do this is by checking for a space after the
instruction name. We don't need to do this if the mnemonic contains a
period since those are replaced with underscores in the function name.
DeltaFile
+70-74cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+70-741 files

LLVM/project 1f52221 — clang/include/clang/CIR MissingFeatures.h, clang/lib/CIR/CodeGen CIRGenExprAggregate.cpp CIRGenDecl.cpp

[CIR][EH] Fix scope for partial array cleanup (#227838)

There was a bug in CIR where if an array whose elements required
destruction was initialized with an ILE, we weren't properly closing the
EH cleanup scope after the initialization completed, so it enclosed the
rest of the function. The result was that if anything later in the
function threw an exception, it would trigger both the normal
destruction of the array and the leftover EH "partial" cleanup, leading
to a double-free.

This change fixes that problem by introducing a CleanupDeactivationScope
around the init list processing (where we already had a MissingFeature
marker saying this was needed). The EH cleanup scope is now closed when
the CleanupDeactivationScope object goes out of scope.

This change also caused some observable changes to existing tests where
we were previously behaving incorrectly.

Assisted-by: Cursor / various models
DeltaFile
+170-81clang/test/CIR/CodeGen/partial-array-cleanup.cpp
+6-16clang/test/CIR/CodeGen/new-array-in-ternary.cpp
+3-3clang/lib/CIR/CodeGen/CIRGenExprAggregate.cpp
+3-3clang/lib/CIR/CodeGen/CIRGenDecl.cpp
+0-1clang/include/clang/CIR/MissingFeatures.h
+182-1045 files

LLVM/project 76e096c — cross-project-tests CMakeLists.txt

[cross-project-tests] Add llvm-readobj as a dependency (#227950)

cross-project-tests/riscv/lto-inline-asm-abi.c uses it

Hopefully this will fix failures like
https://github.com/llvm/llvm-project/actions/runs/36810997644
DeltaFile
+1-0cross-project-tests/CMakeLists.txt
+1-01 files

LLVM/project 9a66279 — clang/lib/CIR/Dialect/IR CIRTypes.cpp, clang/test/CIR/CodeGenSYCL address-space-lang.cpp

[CIR][SYCL] Map SYCL address spaces to CIR language address spaces (#226598)
DeltaFile
+104-0clang/test/CIR/CodeGenSYCL/address-space-lang.cpp
+8-8clang/lib/CIR/Dialect/IR/CIRTypes.cpp
+112-82 files

LLVM/project 6f761a9 — flang/docs OpenACC-extensions.md, flang/include/flang/Lower LoweringOptions.def

[flang][OpenACC] Preserve DO CONCURRENT independence in kernels loops (#227775)

`DO CONCURRENT` asserts that its iterations may execute independently.
When it is directly associated with a combined OpenACC `KERNELS LOOP`,
Flang currently lowers the loop as `auto`, unless an explicit `seq`,
`auto`, or `independent` clause is present. This patch adds a
default-enabled extension that preserves the `DO CONCURRENT`
independence assertion by lowering the loop as `independent`. This
behavior is OpenACC-conforming. Explicit loop parallelism clauses
continue to take precedence.

The extension can be disabled with:

`-fno-openacc-acc-kernels-do-concurrent-independent`

This patch also documents the extension and adds lowering tests for its
enabled and disabled behavior.
DeltaFile
+16-4flang/lib/Lower/OpenACC.cpp
+20-0flang/test/Lower/OpenACC/acc-kernels-do-concurrent-independent-flag.f90
+11-0flang/docs/OpenACC-extensions.md
+6-0flang/lib/Frontend/CompilerInvocation.cpp
+6-0flang/include/flang/Lower/LoweringOptions.def
+2-2flang/test/Lower/OpenACC/acc-do-concurrent-locality.f90
+61-61 files not shown
+64-67 files

LLVM/project edb0ee6 — llvm/cmake/modules MLGOLower.cmake, llvm/lib/Analysis CMakeLists.txt

[mlgo] Allow passing pre-emitc-ed models
DeltaFile
+79-58llvm/cmake/modules/MLGOLower.cmake
+98-0llvm/lib/Analysis/models/inline-oz-test-model.inc
+49-0llvm/lib/Analysis/models/regalloc-eviction-test-model.inc
+13-12llvm/lib/CodeGen/CMakeLists.txt
+13-12llvm/lib/Analysis/CMakeLists.txt
+5-11llvm/unittests/Analysis/MLGOUtilsTest.cpp
+257-9320 files not shown
+321-19226 files

LLVM/project c4ff7a7 — llvm/lib/Transforms/Vectorize LoopVectorizationLegality.cpp, llvm/test/Transforms/LoopVectorize outer_loop_early_exit.ll explicit_outer_nonuniform_inner.ll

[LV] Use SCEV loop-uniformity for outer-loop branch legality (#199632)

This patch refactors the outer-loop vectorization branch legality checks
to reason about conditional branches directly instead of using the old
recursive inner-loop shape check.

The new check allows conditional branches when their condition is
either:

- loop-invariant with respect to the vectorized outer loop, or
- a compare whose operands are both SCEV loop-uniform with respect to
the vectorized outer loop.

Divergent conditional branches are still rejected, now with a more
specific diagnostic.
DeltaFile
+30-108llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+58-2llvm/test/Transforms/LoopVectorize/explicit_outer_uniform_diverg_branch.ll
+34-0llvm/test/Transforms/LoopVectorize/outer_loop_inner_loop_exits.ll
+3-3llvm/test/Transforms/LoopVectorize/explicit_outer_nonuniform_inner.ll
+1-1llvm/test/Transforms/LoopVectorize/outer_loop_early_exit.ll
+126-1145 files

LLVM/project 419fa6a — llvm/cmake/modules MLGOLower.cmake, llvm/lib/Analysis CMakeLists.txt

[mlgo] Allow passing pre-emitc-ed models
DeltaFile
+79-58llvm/cmake/modules/MLGOLower.cmake
+56-0llvm/lib/Analysis/models/inline-oz-test-model.inc
+49-0llvm/lib/Analysis/models/regalloc-eviction-test-model.inc
+13-12llvm/lib/CodeGen/CMakeLists.txt
+13-12llvm/lib/Analysis/CMakeLists.txt
+1-14llvm/lib/CodeGen/MLRegAllocEvictAdvisor.cpp
+211-9620 files not shown
+278-18826 files

LLVM/project 3919526 — llvm/test/Transforms/Attributor nofpclass-atan2.ll

[KnownFPClass][NFC] Update ATTR values for atan2 tests (#224797)

Ran the following command since it was not run for
https://github.com/llvm/llvm-project/pull/223176
```
llvm/utils/update_test_checks.py \
  --opt-binary build/bin/opt \
  llvm/test/Transforms/Attributor/nofpclass-atan2.ll
```
DeltaFile
+48-48llvm/test/Transforms/Attributor/nofpclass-atan2.ll
+48-481 files

LLVM/project 78b41db — mlir/lib/Dialect/Arith/Transforms IntRangeOptimizations.cpp, mlir/test/Dialect/Arith int-range-opts.mlir

[mlir][arith] Handle unsigned moduli in int-range optimizations (#224933)

`DeleteTrivialRem` reads constant moduli as signed values, causing
`remui` operations with sign-bit-set moduli to be rejected. Keep the
modulus as an `APInt` and apply signedness according to the remainder
operation.

Fixes #224630
DeltaFile
+39-0mlir/test/Dialect/Arith/int-range-opts.mlir
+18-11mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp
+57-112 files