LLVM/project db06c0ellvm/lib/Transforms/InstCombine InstCombineCompares.cpp, llvm/test/Transforms/InstCombine cast_ptr.ll

[spr] initial version

Created using spr 1.3.8-wip
DeltaFile
+57-0llvm/test/Transforms/InstCombine/cast_ptr.ll
+6-1llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+63-12 files

LLVM/project 943d649clang/test/SemaHIP builtins-amdgcn-gfx1250-cooperative-atomics-templated.hip amdgpu-feature-builtins-return-type-deduction.hip

clang/AMDGPU: Migrate cc1 tests to subarch triples (8) (#211870)

Rewrite SemaHIP cc1 test RUN lines to the new subarch triple form,
dropping the redundant -target-cpu.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+2-2clang/test/SemaHIP/builtins-amdgcn-gfx1250-cooperative-atomics-templated.hip
+2-2clang/test/SemaHIP/amdgpu-feature-builtins-return-type-deduction.hip
+2-2clang/test/SemaHIP/amdgpu-builtin-in-lambda.hip
+2-2clang/test/SemaHIP/amdgpu-builtin-in-lambda-with-unsupported-attribute.hip
+1-1clang/test/SemaHIP/builtins-amdgcn-raw-buffer-atomic-add.hip
+1-1clang/test/SemaHIP/builtins-amdgcn-raw-buffer-atomic-fmin-max.hip
+10-1015 files not shown
+25-2521 files

LLVM/project 9184bb0llvm/include/llvm/IR PassManagerInternal.h PassManager.h

[IR][NFC] Remove vtables from analysis passes (#211864)

Similar to #209414 but for AnalysisPassConcept. This avoids vtables for
every analysis pass.
DeltaFile
+57-38llvm/include/llvm/IR/PassManagerInternal.h
+2-2llvm/include/llvm/IR/PassManager.h
+2-1llvm/include/llvm/IR/PassManagerImpl.h
+61-413 files

LLVM/project 6436ba9llvm/lib/Transforms/Instrumentation AddressSanitizer.cpp, llvm/test/Instrumentation/AddressSanitizer asan-detect-invalid-pointer-pair.ll

[spr] initial version

Created using spr 1.3.8-wip
DeltaFile
+13-0llvm/test/Instrumentation/AddressSanitizer/asan-detect-invalid-pointer-pair.ll
+1-1llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+14-12 files

LLVM/project 678ee28llvm/lib/Target/AArch64 SVEShuffleOpts.cpp AArch64.h

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+3-3llvm/lib/Target/AArch64/SVEShuffleOpts.cpp
+3-2llvm/lib/Target/AArch64/AArch64.h
+3-1llvm/lib/Target/AArch64/AArch64PassRegistry.def
+9-63 files

LLVM/project 217af2fllvm/include/llvm/Transforms/Utils AssignGUID.h, llvm/lib/Target/AArch64 SVEShuffleOpts.cpp AArch64.h

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+3-3llvm/lib/Target/AArch64/SVEShuffleOpts.cpp
+3-2llvm/lib/Target/AArch64/AArch64.h
+1-3llvm/include/llvm/Transforms/Utils/AssignGUID.h
+3-1llvm/lib/Target/AArch64/AArch64PassRegistry.def
+10-94 files

LLVM/project 02fa1bellvm/include/llvm/CodeGen MachineCheckDebugify.h, llvm/include/llvm/Transforms/Scalar AlignmentFromAssumptions.h LogicalSROA.h

[Passes] Replace PassInfoMixin with {Optional,Required}PassInfoMixin

There were a couple passes that landed after the mass migration that
need to be updated to eventually make PassInfoMixin private. For backend
passes I looked at whether LegacyPM passes called skipFunction rather
than whether or not they should be enabled to try and preserve existing
behavior where possible.

We still need to wait a bit in order to avoid PassInfoMixin to a detail
namespace and fully remove isRequired from PassInfoMixin given there are
a lot of out-of-tree passes that have not yet been moved over. I'm
hoping to have patches out within a week.

Reviewers: arsenm, aeubanks

Pull Request: https://github.com/llvm/llvm-project/pull/211874
DeltaFile
+6-4llvm/lib/Target/AArch64/AArch64.h
+3-2llvm/lib/Target/Lanai/Lanai.h
+2-1llvm/lib/Target/MSP430/MSP430.h
+1-1llvm/include/llvm/CodeGen/MachineCheckDebugify.h
+1-1llvm/include/llvm/Transforms/Scalar/AlignmentFromAssumptions.h
+1-1llvm/include/llvm/Transforms/Scalar/LogicalSROA.h
+14-103 files not shown
+17-139 files

LLVM/project ac0fbaaflang/lib/Lower ConvertExpr.cpp, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.1024bit.ll maximumnum.ll

rebase + fwrapv-pointer

Created using spr 1.3.8-wip
DeltaFile
+13,068-0llvm/test/CodeGen/RISCV/GlobalISel/atomicrmw-max-min-umax-umin.ll
+6,560-6,119llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+5,575-5,393llvm/test/CodeGen/AMDGPU/maximumnum.ll
+5,454-5,259llvm/test/CodeGen/AMDGPU/minimumnum.ll
+4,728-4,968llvm/test/CodeGen/AMDGPU/bf16.ll
+0-7,750flang/lib/Lower/ConvertExpr.cpp
+35,385-29,4896,099 files not shown
+231,076-190,4466,105 files

LLVM/project bcd5798clang/lib/StaticAnalyzer/Checkers/RetainCountChecker RetainCountDiagnostics.cpp

[clang][NFC]Remove unused variable (#211983)

The patch resolves the following warning.
```bash
clang/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp:504:16: warning: variable ‘i’ set but not used [-Wunused-but-set-variable=]
  504 |       unsigned i = 0;
      |                ^
```

A count variable was set and incremented inside of a for loop but never
actually used inside of the loop or anywhere else in its scope.
DeltaFile
+1-3clang/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp
+1-31 files

LLVM/project 9881786llvm/lib/Target/AArch64 AArch64InstrInfo.cpp SVEInstrFormats.td, llvm/lib/Target/AArch64/MCTargetDesc AArch64MCTargetDesc.h

[AArch64] Add a OPERAND_IMM_UINT1 operand type (#211986)
DeltaFile
+6-0llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+3-0llvm/test/CodeGen/AArch64/verify-imm.mir
+3-0llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp
+2-0llvm/lib/Target/AArch64/SVEInstrFormats.td
+1-0llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
+15-05 files

LLVM/project d7f6d6bllvm/include/llvm/IR PassManagerInternal.h

remove private

Created using spr 1.3.8-wip
DeltaFile
+0-1llvm/include/llvm/IR/PassManagerInternal.h
+0-11 files

LLVM/project bf7b5a0clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/CodeGen CIRGenAtomic.cpp

[CIR] Add support for atomic fmaximum/fminimum/fmaximumnum/fminimumnum (#211845)

This patch adds CIR support for the following atomic builtin functions:

- `__atomic_fetch_fmaximum`
- `__atomic_fetch_fminimum`
- `__atomic_fetch_fmaximumnum`
- `__atomic_fetch_fminimumnum`

The scoped versions of these atomic builtin functions are supported as
well.

Specifically, this patch contains the following changes:

- It updates the `cir.atomic.fetch` operation and adds new fetch
operators including `maximum`, `minimum`, `maximumnum`, and
`minimumnum`. These operators accept floating-point inputs only.
- It updates the LLVM lowering of the `cir.atomic.fetch` operation. The
LLVM lowering now will lower `maximum`, `minimum`, `maximumnum`, and

    [6 lines not shown]
DeltaFile
+84-0clang/test/CIR/CodeGen/atomic-scoped.c
+60-0clang/test/CIR/CodeGen/atomic.c
+36-9clang/lib/CIR/CodeGen/CIRGenAtomic.cpp
+24-2clang/include/clang/CIR/Dialect/IR/CIROps.td
+16-2clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+14-1clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+234-141 files not shown
+243-157 files

LLVM/project cd7d586llvm/docs LangRef.md

Update doc
DeltaFile
+5-5llvm/docs/LangRef.md
+5-51 files

LLVM/project 339792fmlir/include/mlir-c ExtensibleDialect.h, mlir/include/mlir/Bindings/Python IRCore.h

[MLIR][Python] Support IsIsolatedFromAbove trait for python-defined operations (#211849)

This PR adds dynamic `IsIsolatedFromAbove` trait support and exposes it
to Python as `IsIsolatedFromAboveTrait`.

The test verifies that a region with the trait cannot capture an SSA
value from above, while a region without the trait can.

Assisted by Codex/GPT 5.6 Sol (for writing test cases).
DeltaFile
+63-0mlir/test/python/dialects/ext.py
+23-0mlir/lib/Bindings/Python/IRCore.cpp
+9-0mlir/include/mlir-c/ExtensibleDialect.h
+8-0mlir/lib/CAPI/IR/ExtensibleDialect.cpp
+8-0mlir/include/mlir/IR/ExtensibleDialect.h
+6-0mlir/include/mlir/Bindings/Python/IRCore.h
+117-06 files

LLVM/project c64a5b0clang/bindings/python/clang cindex.py, clang/bindings/python/tests/cindex test_code_completion.py test_enums.py

[libclang/python] Remove CompletionString.AvailabilityKindCompat (#210682)

This completes the fourth step of
https://github.com/llvm/llvm-project/pull/156680
This change is a follow-up to
https://github.com/llvm/llvm-project/pull/160296, following the release
branching, to ensure a one release-cycle deprecation period.

---------

Co-authored-by: Vlad Serebrennikov <serebrennikov.vladislav at gmail.com>
DeltaFile
+16-72clang/bindings/python/tests/cindex/test_code_completion.py
+2-48clang/bindings/python/clang/cindex.py
+4-0clang/docs/ReleaseNotes.md
+0-1clang/bindings/python/tests/cindex/test_enums.py
+22-1214 files

LLVM/project cf95452mlir/include/mlir/Dialect/XeGPU/IR XeGPUOps.td, mlir/lib/Dialect/XeGPU/Transforms XeGPUPropagateLayout.cpp

[mlir][xegpu] Make convert_layout input_layout optional (#210833)

Make the `input_layout` attribute of `xegpu.convert_layout` optional.
When it is not set, the effective input layout defaults to
`target_layout`, i.e. the source is assumed to already be in the target
distribution.

assisted-by-Claude

Co-authored-by: Claude Opus 4.8 <noreply at anthropic.com>
DeltaFile
+3-55mlir/test/Dialect/XeGPU/sg-to-lane-distribute-unit.mlir
+4-39mlir/test/Dialect/XeGPU/xegpu-wg-to-sg.mlir
+11-3mlir/include/mlir/Dialect/XeGPU/IR/XeGPUOps.td
+4-6mlir/test/Dialect/XeGPU/propagate-layout-inst-data.mlir
+0-9mlir/test/Dialect/XeGPU/xegpu-wg-to-sg-rr.mlir
+7-2mlir/lib/Dialect/XeGPU/Transforms/XeGPUPropagateLayout.cpp
+29-11413 files not shown
+45-14419 files

LLVM/project 81fc31ellvm/test/Transforms/MergeFunc atomic-elementwise.ll

Add mergeFunc elementwise test.
DeltaFile
+20-0llvm/test/Transforms/MergeFunc/atomic-elementwise.ll
+20-01 files

LLVM/project f298fb9llvm/docs LangRef.md, llvm/lib/AsmParser LLParser.cpp

[IR] Add elementwise modifier to atomic stores
DeltaFile
+111-0llvm/unittests/IR/VerifierTest.cpp
+56-0llvm/test/Assembler/invalid-load-store-atomic-elementwise.ll
+26-4llvm/lib/AsmParser/LLParser.cpp
+19-10llvm/docs/LangRef.md
+21-4llvm/lib/IR/Verifier.cpp
+12-8llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+245-269 files not shown
+305-3715 files

LLVM/project 5295852mlir/lib/Dialect/Vector/Transforms VectorTransforms.cpp, mlir/test/Dialect/Vector vector-sink.mlir

[mlir] [vector] Allow element/broadcast re-order for FMA if the source is a vector (#211208)

The diagnostic says the transform is not performed as the source may be
a scalar. But we can make it if we can check the source is not a scalar.

AI assisted.
DeltaFile
+75-8mlir/test/Dialect/Vector/vector-sink.mlir
+11-6mlir/lib/Dialect/Vector/Transforms/VectorTransforms.cpp
+86-142 files

LLVM/project 861adf6lldb/source/Interpreter CommandInterpreter.cpp

[lldb] Fix heap-use-after-free in FileSpec usage (#211908)

After #211394, `FileSpec` stores m_filename as a `SmallString` instead
of `ConstString`. When the `FileSpec` goes out of scope / is destructed,
a `StringRef` pointing to m_filename is now invalid. Previously it would
have worked even after `FileSpec` goes out of scope since `ConstString`
stores the string in a global buffer which is never destructed.

This causes heap-use-after-free in `CommandInterpreter` when we use the
result of `GetFilename()` on a temporary `FileSpec`. Store the result of
`HostInfo::GetProgramFileSpec()` as a variable to prevent it from going
out of scope before we're able to call `GetHomeInitFile()`.

Although #211394 introduces this failure, technically speaking this is
an existing bug, it was just masked because of how `FileSpec` used to
use `ConstString` to force a long lifetime.
DeltaFile
+2-1lldb/source/Interpreter/CommandInterpreter.cpp
+2-11 files

LLVM/project 571a1debolt/include/bolt/Core BinaryLoop.h, llvm/include/llvm/Support GenericLoopInfoImpl.h GenericLoopInfo.h

[LoopInfo] Store blocks using Euler tour representation (#211485)

Block list construction appends each block to all enclosing loops
(O(depth) per block), and each loop owns a separately allocated vector.

Switch to an Euler tour representation: one BlockLayout array per
LoopInfo holding the in-loop blocks in a loop-contiguous reverse
postorder, each loop's list a [begin, end) slice of it, subloop slices
nested inside their parent's. Headers remain first;
`SubLoops`/`TopLevelLoops` orders are unchanged. A few tests observe the
order and are updated. (Previously a loop's list was the function's
reverse postorder restricted to its members, so a subloop's blocks were
interleaved with the parent's own blocks at their RPO positions.)

Mutations first copy a borrowed slice into private storage from
LoopInfo's allocator. `contains(BlockT *)` remains map-based: a
materialized loop's slice is not a membership test. This copy is rare:
across default<O2> over dagcombiner and sqlite3, only 12--14% of loops
built by analyze() are ever mutated; the rest keep the borrowed slice.

    [4 lines not shown]
DeltaFile
+73-79llvm/include/llvm/Support/GenericLoopInfoImpl.h
+97-36llvm/include/llvm/Support/GenericLoopInfo.h
+13-13llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-freeze.ll
+3-3llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.ll
+0-5bolt/include/bolt/Core/BinaryLoop.h
+2-2llvm/test/Transforms/LoopVectorize/early_exit_with_outer_loop.ll
+188-1385 files not shown
+190-14711 files

LLVM/project 5f2abddflang/lib/Semantics check-cuda.cpp, flang/test/Semantics/CUDA cuf02.cuf

[flang][cuda] Accept statement function in device code (#211957)

Statement functions are inlined during lowering, so they should not be
treated as host procedure calls. Recursively validate their expressions
to reject any host procedure calls within the body.
DeltaFile
+6-3flang/lib/Semantics/check-cuda.cpp
+6-0flang/test/Semantics/CUDA/cuf02.cuf
+12-32 files

LLVM/project ff056e5libc/test/src/__support/CPP CMakeLists.txt

Remove unused dep
DeltaFile
+0-1libc/test/src/__support/CPP/CMakeLists.txt
+0-11 files

LLVM/project efc78d2libc/include/llvm-libc-macros/linux signal-macros.h

[libc] Add symbolic constants for si_code values. (#211945)

Extend SIGCHLD-specific `si_code` values, already available in
`signal-macros.h` with Linux values for the rest of the signal-specific
codes specified in the POSIX.1-2024.
DeltaFile
+40-0libc/include/llvm-libc-macros/linux/signal-macros.h
+40-01 files

LLVM/project 22ac310libc/src/__support/CPP CMakeLists.txt, utils/bazel/llvm-project-overlay/libc BUILD.bazel

remove unused deps
DeltaFile
+0-2utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+0-2libc/src/__support/CPP/CMakeLists.txt
+0-42 files

LLVM/project a2ae630libc/src/__support/CPP string.h, utils/bazel/llvm-project-overlay/libc/test/src/__support/CPP BUILD.bazel

Use new capacity() for clearer checks
DeltaFile
+11-23libc/src/__support/CPP/string.h
+1-4utils/bazel/llvm-project-overlay/libc/test/src/__support/CPP/BUILD.bazel
+12-272 files

LLVM/project 9a606afllvm/lib/Target/X86 X86ISelDAGToDAG.cpp, llvm/test/CodeGen/X86 pr51707.ll lea-opt-cse4.ll

Revert "[X86] Reuse already-materialized values when forming LEAs (#2… (#211958)

…10739)"

This reverts commit 580604f1f3cbdd643a53e086265140a0b2805c5c.
DeltaFile
+0-251llvm/test/CodeGen/X86/pr51707.ll
+5-101llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+31-22llvm/test/CodeGen/X86/lea-opt-cse4.ll
+18-12llvm/test/CodeGen/X86/lea-recursion.ll
+18-11llvm/test/CodeGen/X86/lea-opt-cse2.ll
+10-3llvm/test/CodeGen/X86/lea-opt-cse1.ll
+82-4006 files

LLVM/project 6d30011clang/lib/StaticAnalyzer/Checkers/WebKit MemoryUnsafeCastChecker.cpp, clang/test/Analysis/Checkers/WebKit memory-unsafe-cast-cxxthis.cpp memory-unsafe-cast.cpp

[Webkit Checkers][SaferCpp] Fix MemoryUnsafeCastChecker to precisely exclude `*this` casts (#210180)

Exclude casts precisely matching `this` and `*this` (through
parens/implicit casts), without matching member accesses like
`this->m_field`.

rdar://173770064
DeltaFile
+101-0clang/test/Analysis/Checkers/WebKit/memory-unsafe-cast-cxxthis.cpp
+37-4clang/lib/StaticAnalyzer/Checkers/WebKit/MemoryUnsafeCastChecker.cpp
+5-0clang/test/Analysis/Checkers/WebKit/memory-unsafe-cast.cpp
+143-43 files

LLVM/project f8dcb54clang/lib/CodeGen CGOpenMPRuntime.cpp, clang/test/OpenMP target_map_nested_ptr_member_mapper_codegen.cpp

[OpenMP] Propagate PRESENT to pointee entries in mapper codegen

Extend map-type-modifier propagation in emitUserDefinedMapper to the PRESENT
modifier, but only for entries that have an attach ptr (the pointee data, whose
storage differs from the struct's own). A present modifier on the outer clause
must require that pointee to be present on the device.

This is gated on a new PropagatePresentToPointee argument, which Clang sets from
CGM.getLangOpts().OpenMP >= 60. Before 6.0 the present modifier is treated as
not applying to the pointee: the spec committee confirmed the divergence
between the present motion modifier (to/from) and the present map-type modifier
(map) was unintentional, to be fixed as an OpenMP 6.0 erratum. Only propagation
is gated; present written directly in a mapper's own clause applies at all
versions.

A TODO notes PRESENT should also propagate to the struct's own members, which
is blocked while pointer members use PTR_AND_OBJ.

Update the present-check tests to their final 6.0-gated behavior.

    [2 lines not shown]
DeltaFile
+36-11llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+14-13offload/test/mapping/mapper_map_mbr_then_present_mbr_ptee.c
+10-17offload/test/mapping/mapper_target_update_present_ptee.c
+13-4llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+12-3clang/lib/CodeGen/CGOpenMPRuntime.cpp
+6-9clang/test/OpenMP/target_map_nested_ptr_member_mapper_codegen.cpp
+91-576 files

LLVM/project ddc1f49clang/lib/CodeGen CGOpenMPRuntime.cpp, clang/test/OpenMP target_map_nested_ptr_member_mapper_codegen.cpp declare_mapper_codegen.cpp

[OpenMP][Clang] Enable ATTACH-style maps for mappers.

Track per-entry attach-ptr info (HasAttachPtr) through mapper codegen so that
emitUserDefinedMapper does not add a new outer MEMBER_OF to pointee/combined
entries (which occupy different storage than the struct) or to ATTACH entries.
Clang and the MLIR translator populate the per-entry array in parallel with the
other MapInfosTy arrays.

Address review:
  - Rename MapSkipMemberOfArrayTy to MapHasAttachPtrArrayTy to match the
    HasAttachPtr field it backs.
  - Restructure the emitUserDefinedMapper comment into a bulleted (*)/(**)/(***)
    list keyed to the example entries.
  - Reword the Clang comments: HasAttachPtr marks pointee entries that have a
    base attach-ptr; a combined entry has a base attach-ptr if its constituents
    do; cross-reference emitUserDefinedMapper for the MEMBER_OF rationale.
  - Update the moved present-check tests to their now-correct behavior (the
    attach-style maps make the inbounds present checks pass and remove the
    "explicit extension" errors).

    [2 lines not shown]
DeltaFile
+196-160clang/test/OpenMP/target_map_nested_ptr_member_mapper_codegen.cpp
+68-60clang/test/OpenMP/declare_mapper_codegen.cpp
+56-15llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+65-5clang/lib/CodeGen/CGOpenMPRuntime.cpp
+18-24offload/test/mapping/mapper_enter_data_always_present_ptee.c
+18-22offload/test/mapping/mapper_map_mbr_then_present_mbr_ptee.c
+421-2869 files not shown
+487-35915 files