LLVM/project 5489922 — llvm/test/Analysis/ScalarEvolution gep-nowrap-flags-offset-scope.ll

[SCEV] Introduce tests for PR222713 (NFC) (#235646)
DeltaFile
+119-0llvm/test/Analysis/ScalarEvolution/gep-nowrap-flags-offset-scope.ll
+119-01 files

LLVM/project c2d9a6f — clang/include/clang/Sema SemaOpenMP.h, clang/lib/Parse ParseOpenMP.cpp

[OpenMP] Add runtime selection for metadirective with non-constant conditions. (#192455)

This patch implements runtime evaluation and selection for `OpenMP`
metadirectives when user conditions are non-constant expressions.
DeltaFile
+90-2clang/lib/Parse/ParseOpenMP.cpp
+82-0clang/test/OpenMP/metadirective_user_condition_parse.cpp
+72-0clang/test/OpenMP/metadirective_runtime_messages.cpp
+44-0clang/test/OpenMP/metadirective_variant_clauses.cpp
+13-0clang/lib/Sema/SemaOpenMP.cpp
+8-0clang/include/clang/Sema/SemaOpenMP.h
+309-23 files not shown
+320-29 files

LLVM/project 42d4451 — llvm/lib/Target/AArch64 AArch64InstrInfo.cpp, llvm/test/CodeGen/AArch64 postra-sched-debug-cfi.mir

[AArch64] Prevent debug instructions and pseudo probes from changing post-RA scheduling (#234920)

A `DBG_VALUE` or `PSEUDO_PROBE` between an ordinary AArch64 instruction
and a
following CFI instruction hides the CFI from
`AArch64InstrInfo::isSchedulingBoundary`. The `PostMachineScheduler` can
then
include the instruction in the preceding region and reorder it, so
non-code
metadata changes the final instruction order.

Look past debug instructions and pseudo probes when finding the
following CFI
boundary. A focused `postmisched` MIR test covers both cases.

This is related to, but distinct from, #36588. That issue concerned CFI
instructions introduced by debug-info emission. Here the CFI boundary is
already present, but an intervening debug instruction or pseudo probe
hides it.

    [2 lines not shown]
DeltaFile
+78-0llvm/test/CodeGen/AArch64/postra-sched-debug-cfi.mir
+4-2llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+82-22 files

LLVM/project acf7b3b — llvm/lib/Transforms/Scalar JumpTableToSwitch.cpp

[JumpTableToSwitch] Call values JT everywhere, rename jump table type to JumpTable (NFC) (#235449)

Currently `expandToSwitch` uses `JT` for what rest of the code calls
`JumpTable`. Call it `JT` everywhere. With this we also drop the
redundant `Ty` suffix in `JumpTableToTy`.
DeltaFile
+15-16llvm/lib/Transforms/Scalar/JumpTableToSwitch.cpp
+15-161 files

LLVM/project 53f215e — llvm/lib/Target/AMDGPU SIOptimizeExecMasking.cpp, llvm/test/CodeGen/AMDGPU optimize-exec-masking-debug-search-limit.mir optimize-exec-masking-debug-limit.mir

[AMDGPU] Ignore debug instructions in exec-mask search limits (#232560)

Two searches in SIOptimizeExecMasking charge debug instructions against
their instruction limits. With enough debug instructions, a nearby exec
copy is not found and an exec-copy or saveexec fold is missed.
Count only ordinary instructions in both searches.

Assisted-by: OpenAI Codex 5.6 Sol, co-reviewed by Claude and Yongqiang
Tian.
DeltaFile
+69-0llvm/test/CodeGen/AMDGPU/optimize-exec-masking-debug-limit.mir
+42-0llvm/test/CodeGen/AMDGPU/optimize-exec-masking-debug-search-limit.mir
+10-5llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
+121-53 files

LLVM/project b8b5e88 — compiler-rt/test/asan/TestCases/Linux nohugepage_test.cpp

[asan][test] Disable nohugepage_test.cpp on Android (#235637)

On Android, VMA naming splits the high shadow region in
`/proc/self/smaps`, so `ReadShadowRss()` does not find the single
`2008fff7000-10007fff8000` entry.

Fixes test failure on
https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-android

Assisted-by: Gemini
DeltaFile
+2-0compiler-rt/test/asan/TestCases/Linux/nohugepage_test.cpp
+2-01 files

LLVM/project ce1528c — llvm/runtimes CMakeLists.txt, offload/test CMakeLists.txt

[runtimes][offload] Add missing dependencies to check-offload

After configuring an OpenMP/offload build, running `ninja check-offload`
without first running the build doesn't build all the necessary
dependencies like flang or clang-linker-wrapper, or the runtimes.

Claude assisted by iteratively trying to run check-offload and adding
dependencies as they were needed.
DeltaFile
+20-3llvm/runtimes/CMakeLists.txt
+11-3offload/test/CMakeLists.txt
+31-62 files

LLVM/project 5887705 — llvm/lib/Target/RISCV RISCVGatherScatterLowering.cpp RISCVVLOptimizer.cpp

Add back fields
DeltaFile
+12-8llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp
+5-1llvm/lib/Target/RISCV/RISCVGatherScatterLowering.cpp
+17-92 files

LLVM/project e833378 — compiler-rt/test/sanitizer_common/TestCases sanitizer_coverage_trace_pc_guard-init.cpp

[compiler-rt][test] Fix sanitizer_coverage_trace_pc_guard-init.cpp on Android (#235625)

Use `%dynamiclib1` and `%ld_flags_rpath_so1`/`%ld_flags_rpath_exe1` so
`DT_NEEDED` does not record the host path to the shared library.

Fixes test failure on
https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-android

Assisted-by: Gemini
DeltaFile
+7-7compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_trace_pc_guard-init.cpp
+7-71 files

LLVM/project 8f6c92e —

Merge branch 'users/void/asm-rm-2f-peephole-asm-load-fold' into users/void/asm-rm-3-direct-mem-output-error
DeltaFile
+0-00 files

LLVM/project a5f41c1 — offload/liboffload/src OffloadImpl.cpp, offload/plugins-nextgen/common/include PluginInterface.h

[Offload] Add properties to olGet*Info to retrieve native handles (#234186)

Adds a property to be able to retrieve the native handle of a queue,
device and context to their respective olGetInfo routines.

This is needed to implement interopability features on top of liboffload
like OpenMP's interop directive.

Assisted by Claude.
DeltaFile
+21-0offload/plugins-nextgen/cuda/src/rtl.cpp
+21-0offload/plugins-nextgen/common/include/PluginInterface.h
+20-0offload/liboffload/src/OffloadImpl.cpp
+12-0offload/unittests/OffloadAPI/device/olGetDeviceInfo.cpp
+11-0offload/plugins-nextgen/level_zero/src/L0Device.cpp
+7-0offload/unittests/OffloadAPI/context/olGetContextInfo.cpp
+92-011 files not shown
+140-017 files

LLVM/project 462df16 — mlir/lib/Dialect/Linalg/Transforms Transforms.cpp, mlir/test/Dialect/Linalg transform-pack-greedily.mlir transform-op-pack.mlir

[mlir][linalg] Remap linalg.index when packing a structured op (#221430)

## Problem

Packing a structured operation splits an original loop dimension `d`
into outer and inner dimensions. The operation's region is moved to the
packed `linalg.generic` unchanged, so `linalg.index d` starts returning
only the outer tile coordinate.

The resulting IR verifies, but silently computes incorrect index values.

## Approach

Track the inner loop dimension introduced for each packed loop and
rewrite:

    linalg.index d

to:

    [20 lines not shown]
DeltaFile
+167-0mlir/test/Dialect/Linalg/transform-op-pack.mlir
+50-0mlir/test/Dialect/Linalg/transform-pack-greedily.mlir
+42-0mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
+259-03 files

LLVM/project 2796e58 — llvm/lib/CodeGen TargetInstrInfo.cpp, llvm/test/CodeGen/X86 peephole-inline-asm-fold.mir

[CodeGen] Don't fold a load into an inline asm that may overwrite it

The peephole optimizer folds a load from a stack slot into a foldable
inline asm operand, which then reads the slot itself. An asm that writes
the slot first (through an early-clobber "=&m" output) then read what it
wrote, so a load isn't folded into an asm that stores, unless the slot
is invariant. Nor is a load that doesn't fill the register, e.g. a
32-bit load into an XMM register, since the asm would read the whole
register's worth of memory.

Assisted-by: Claude Opus 5.5
DeltaFile
+100-0llvm/test/CodeGen/X86/peephole-inline-asm-fold.mir
+13-1llvm/lib/CodeGen/TargetInstrInfo.cpp
+113-12 files

LLVM/project c2f5cf3 — llvm/lib/CodeGen TargetInstrInfo.cpp, llvm/test/CodeGen/X86 greedy-inline-asm-fold.mir

[CodeGen] Keep an inline asm's memory accesses described after a fold

The memoperands of an instruction describe all of its memory accesses.
Folding gave an inline asm a single memoperand, for the stack slot,
which said that it accessed no other memory even when it had an "m"
operand or a "memory" clobber. Without memoperands, the asm was taken to
access any memory, so it now gets one for any memory as well.

Assisted-by: Claude Opus 5.5
DeltaFile
+41-0llvm/test/CodeGen/X86/greedy-inline-asm-fold.mir
+15-0llvm/lib/CodeGen/TargetInstrInfo.cpp
+56-02 files

LLVM/project 5f2e803 — llvm/lib/CodeGen CalcSpillWeights.cpp InlineSpiller.cpp, llvm/test/CodeGen/X86 greedy-inline-asm-fold.mir

[CodeGen] Prefer spilling a register an inline asm can fold

InlineSpiller rematerialized a value passed to a foldable inline asm
operand (e.g. a constant) into a register right before the asm, which
the asm may not have had, since registers running out is why the value
was spilled. It's now spilled and folded instead.

An asm that can fold a register also no longer adds to the register's
spill weight, since it needs no reload or spill for it. The allocator
then spills that register before the asm's other operands, which need
registers, which saves spills in two_tied_rm and tied_rm_undef.

Assisted-by: Claude Opus 5.5
DeltaFile
+50-20llvm/test/CodeGen/X86/greedy-inline-asm-fold.mir
+5-1llvm/lib/CodeGen/CalcSpillWeights.cpp
+6-0llvm/lib/CodeGen/InlineSpiller.cpp
+61-213 files

LLVM/project 1bc587d — llvm/include/llvm/CodeGen MachineInstr.h TargetInstrInfo.h, llvm/lib/CodeGen MachineInstr.cpp TargetInstrInfo.cpp

[CodeGen] Fold an inline asm subregister operand at its slot offset

A stack slot holds the whole register, and a folded operand referred to
the start of the slot, so a subregister was folded only if it was at
offset 0, and other subregisters got a reload into a register the asm
may not have. Coalescing can turn an i686 "rm" byte operand into
sub_8bit_hi of a GR32, which is at byte 1. Fold a subregister at its
offset in the slot, from getStackSlotRange(), so
getFrameIndexOperands() now takes an offset.

Also add a third asm to qm_tied_high_byte, which clobbers every GPR, so
that it reaches the folder. Without it, the value is reloaded into a
register that's free at the second asm.

Assisted-by: Claude Opus 5.5
DeltaFile
+39-26llvm/lib/CodeGen/TargetInstrInfo.cpp
+20-21llvm/lib/CodeGen/MachineInstr.cpp
+17-19llvm/test/CodeGen/X86/greedy-inline-asm-fold.mir
+3-2llvm/include/llvm/CodeGen/TargetInstrInfo.h
+2-2llvm/lib/Target/X86/X86InstrInfo.h
+2-2llvm/include/llvm/CodeGen/MachineInstr.h
+83-721 files not shown
+85-737 files

LLVM/project 579870a — llvm/include/llvm/CodeGen MachineInstr.h, llvm/lib/CodeGen CalcSpillWeights.cpp MachineInstr.cpp

[CodeGen] Fold every operand of a register into an inline asm

The spill weights took a register to be foldable into an asm if any one
of its operands there was foldable, while the folder needs all of them
to be. One value passed to an "rm" and an "r" operand could then get
spilled, not folded, and the asm ran out of registers. Add
MachineInstr::mayFoldInlineAsmReg(), true if every operand of a register
in an asm can be folded, and use it in the folder and CalcSpillWeights.

The folder now folds every operand of the register, including an undef
use that InlineSpiller leaves out of the operands it passes, which was
left behind still referring to the spilled register.

Nothing in tree marks an inline asm operand foldable until #229632, so
the tests set the "foldable" flag in MIR. Also define ALL_GPRS in
greedy-inline-asm-fold.mir, and drop -verify-machineinstrs, which llc
runs anyway.

Assisted-by: Claude Opus 5.5
DeltaFile
+89-9llvm/test/CodeGen/X86/greedy-inline-asm-fold.mir
+48-37llvm/lib/CodeGen/TargetInstrInfo.cpp
+19-0llvm/lib/CodeGen/MachineInstr.cpp
+8-4llvm/lib/CodeGen/CalcSpillWeights.cpp
+7-0llvm/include/llvm/CodeGen/MachineInstr.h
+171-505 files

LLVM/project b43e09d — llvm/include/llvm/CodeGen MachineInstr.h, llvm/lib/CodeGen CalcSpillWeights.cpp MachineInstr.cpp

Move the later folding fixes to their own PRs

1d50fec74e60 added more fixes for folding inline asm register operands
to this PR. They're split into the PRs stacked on this one, one fix
each, to keep this one to the tied operand fix that was reviewed.

This reverts commit 1d50fec74e601c10811a0d58c37a392b2a1ba146.

Assisted-by: Claude Opus 5.5
DeltaFile
+48-197llvm/test/CodeGen/X86/greedy-inline-asm-fold.mir
+51-102llvm/lib/CodeGen/TargetInstrInfo.cpp
+0-100llvm/test/CodeGen/X86/peephole-inline-asm-fold.mir
+19-37llvm/lib/CodeGen/MachineInstr.cpp
+5-13llvm/lib/CodeGen/CalcSpillWeights.cpp
+2-9llvm/include/llvm/CodeGen/MachineInstr.h
+125-4584 files not shown
+130-47110 files

LLVM/project 6fbfd43 — compiler-rt/test/sanitizer_common/TestCases sanitizer_coverage_inline8bit_counter_default_impl.cpp

[compiler-rt][test] Disable sanitizer_coverage_inline8bit_counter_default_impl.cpp on Android (#235620)

`android_run.py` does not copy files created on the device back to the
host.

Fixes test failure on
https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-android

Assisted-by: Gemini
DeltaFile
+2-0compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline8bit_counter_default_impl.cpp
+2-01 files

LLVM/project 12c88bc — llvm/lib/Target/X86 X86CodeGenPassBuilder.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+35-35llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
+35-351 files

LLVM/project c4d7297 — llvm/include/llvm/CodeGen MachineScheduler.h, llvm/lib/CodeGen MachineScheduler.cpp

Reland "[MISched] Add anti-dependency breaking to PostMachineScheduler" (#235613)

This relands #231790 which was reverted in #235595 because of CI
failures caused by `llvm/test/CodeGen/RISCV/postmisched-antidep.ll`.

Original commit message:

----

Port the post-RA anti-dependency breaker lifecycle to ScheduleDAGMI so
PostMachineScheduler can rename physical registers across scheduling
regions. Drive the StartBlock/Observe/BreakAntiDependencies/FinishBlock
sequence from the DAG, selecting the aggressive or critical breaker from
the subtarget's anti-dependency mode.

Add the -misched-postra-antidep override so the machinery can be tested
with llc, and cover a within-region WAR hazard with a RISC-V test that
contrasts the ANTIDEP and NO-ANTIDEP results.


    [6 lines not shown]
DeltaFile
+125-6llvm/lib/CodeGen/MachineScheduler.cpp
+96-0llvm/test/CodeGen/RISCV/postmisched-antidep-region.mir
+63-5llvm/include/llvm/CodeGen/MachineScheduler.h
+33-0llvm/test/CodeGen/RISCV/postmisched-antidep.ll
+5-0llvm/lib/Target/AArch64/AArch64SpeculationHardening.cpp
+5-0llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
+327-112 files not shown
+329-118 files

LLVM/project 32cc614 — llvm/lib/Target/RISCV RISCVLoadStoreOptimizer.cpp RISCVMoveMerger.cpp, llvm/test/Transforms/LoopStrengthReduce/RISCV loop-exit-equality.ll

Merge branch 'main' into users/void/callbr-asm-outputs
DeltaFile
+801-0llvm/test/Transforms/LoopStrengthReduce/RISCV/loop-exit-equality.ll
+162-35llvm/lib/Target/RISCV/RISCV.h
+78-46llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
+61-58llvm/lib/Target/RISCV/RISCVMergeBaseOffset.cpp
+73-39llvm/lib/Target/RISCV/RISCVMoveMerger.cpp
+66-32llvm/lib/Target/RISCV/RISCVLoadStoreOptimizer.cpp
+1,241-21060 files not shown
+2,302-57866 files

LLVM/project f0e6253 — llvm/lib/Target/RISCV RISCVMoveMerger.cpp RISCVMergeBaseOffset.cpp, llvm/test/CodeGen/BPF jump-table-mask-index.ll

Merge branch 'main' into users/void/pbqp-inline-asm-error
DeltaFile
+801-0llvm/test/Transforms/LoopStrengthReduce/RISCV/loop-exit-equality.ll
+162-35llvm/lib/Target/RISCV/RISCV.h
+78-46llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
+61-58llvm/lib/Target/RISCV/RISCVMergeBaseOffset.cpp
+118-0llvm/test/CodeGen/BPF/jump-table-mask-index.ll
+73-39llvm/lib/Target/RISCV/RISCVMoveMerger.cpp
+1,293-17872 files not shown
+2,820-66278 files

LLVM/project 9f29601 — llvm/lib/Target/RISCV RISCVMoveMerger.cpp RISCVMergeBaseOffset.cpp, llvm/test/CodeGen/BPF jump-table-mask-index.ll

Merge branch 'main' into users/void/asm-aggregate-mem-input-main
DeltaFile
+801-0llvm/test/Transforms/LoopStrengthReduce/RISCV/loop-exit-equality.ll
+162-35llvm/lib/Target/RISCV/RISCV.h
+78-46llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
+61-58llvm/lib/Target/RISCV/RISCVMergeBaseOffset.cpp
+118-0llvm/test/CodeGen/BPF/jump-table-mask-index.ll
+73-39llvm/lib/Target/RISCV/RISCVMoveMerger.cpp
+1,293-17872 files not shown
+2,820-66278 files

LLVM/project fa12fed — compiler-rt/test/sanitizer_common/TestCases/Linux opendir_null.cpp

[sanitizer][test] Mark Linux/opendir_null.cpp unsupported on Android (#235617)

`android_run.py` does not forward `LD_PRELOAD` to the device.

https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-android

Assisted-by: Gemini
DeltaFile
+3-0compiler-rt/test/sanitizer_common/TestCases/Linux/opendir_null.cpp
+3-01 files

LLVM/project f570d92 — llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/AArch64 abds.ll

[DAG] foldSelectToABD - ensure -Constant negation doesn't overflow (#235279)

The (setcc (add nsw A, Const), 0, sets??) --> (setcc A, -Const, sets??)
fold is only valid if Const isn't MIN_SIGNED_INT

Fixes #235263
DeltaFile
+66-0llvm/test/CodeGen/X86/abds-vector-128.ll
+15-2llvm/test/CodeGen/AArch64/abds.ll
+4-1llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+85-33 files

LLVM/project 0b56c8e — llvm/include/llvm/Analysis TargetTransformInfoImpl.h TargetTransformInfo.h, llvm/lib/Analysis TargetTransformInfo.cpp

[LSR][RISCV] Prefer equality loop exits for Zibi (#225619)

RISC-V Zibi has immediate forms only for equality branches. This teaches
LSR to rewrite eligible relational latch exits to `eq`/`ne` when TTI
says the final immediate is profitable.

RISC-V enables it for Zibi immediates while leaving comparisons that
already use `x0` unchanged. The SCEV check uses the recurrence period
rather than poison-derived nowrap flags.

Tests cover unit and non-unit strides, negative cases, and generated
`bnei` code.

Fixes #225627.
DeltaFile
+801-0llvm/test/Transforms/LoopStrengthReduce/RISCV/loop-exit-equality.ll
+71-0llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+21-0llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
+7-0llvm/include/llvm/Analysis/TargetTransformInfo.h
+5-0llvm/lib/Analysis/TargetTransformInfo.cpp
+5-0llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
+910-01 files not shown
+912-07 files

LLVM/project 92a07ef — libc/src/__support/math tanh_double_eval.h

Small simplification using exact_add.
DeltaFile
+10-10libc/src/__support/math/tanh_double_eval.h
+10-101 files

LLVM/project f1dfaea — clang/lib/Basic/Targets Sparc.h Sparc.cpp, clang/test/Preprocessor predefined-arch-macros.c

[Clang][SPARC] Define __sparc_v8__ and __leon__ like GCC (#234574)

The defines are used by glibc for example. A family field was added to
SparcCPUInfo to identify Leon processors.
DeltaFile
+48-9clang/lib/Basic/Targets/Sparc.cpp
+9-0clang/test/Preprocessor/predefined-arch-macros.c
+7-0clang/lib/Basic/Targets/Sparc.h
+64-93 files

LLVM/project 9f8202c — compiler-rt/test/asan/TestCases/Linux check_memcpy.c

[asan][test] Inspect %shared_libasan in Linux/check_memcpy.c when dynamic (#235605)

When `asan-dynamic-runtime` is enabled (including on Android, where `%t`
is the `android_run.py` wrapper script), inspect `%shared_libasan`
directly with `llvm-objdump` instead of `%t`.

https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-android

Assisted-by: Gemini
DeltaFile
+2-2compiler-rt/test/asan/TestCases/Linux/check_memcpy.c
+2-21 files