LLVM/project 98ccac6orc-rt/include/orc-rt Session.h, orc-rt/lib/executor Session.cpp

[orc-rt] Return ref from Session::addService, add createService. (#186640)

Session::addService now returns a reference to the added Service. This
allows clients to hold a reference for further direct interaction with
the Service object.

This commit also introduces a new Session::createService convenience
method that creates the service and returns a reference to it.
DeltaFile
+27-0orc-rt/unittests/SessionTest.cpp
+16-1orc-rt/include/orc-rt/Session.h
+0-6orc-rt/lib/executor/Session.cpp
+43-73 files

LLVM/project 96e7fc2orc-rt/docs Design.md, orc-rt/include/orc-rt Service.h ResourceManager.h

[orc-rt] Rename "ResourceManager" to "Service". NFCI. (#186639)

The name "Service" better reflects the general purpose of this class: It
provides *something* (often resource management) to the Session, is
owned by the Session, and receives notifications from the Session when
the controller detaches / is detached, and when the Session is shut
down.

An example of a non-resource-managing Service (to be added in an
upcoming patch) is a detach / shutdown notification service: Clients can
add this service to register arbitrary callbacks to be run on detach /
shutdown. The advantage of this over the current Session detach /
shutdown callback system is that clients can control both the order of
the callbacks, and their order relative to notification of other
services.
DeltaFile
+47-0orc-rt/include/orc-rt/Service.h
+0-44orc-rt/include/orc-rt/ResourceManager.h
+13-13orc-rt/unittests/SessionTest.cpp
+12-11orc-rt/docs/Design.md
+19-0orc-rt/lib/executor/Service.cpp
+0-19orc-rt/lib/executor/ResourceManager.cpp
+91-876 files not shown
+115-11212 files

LLVM/project 3fea2f6libcxx/test/std/atomics/atomics.ref compare_exchange_weak.pass.cpp

[libc++][test] Use loop with compare_exchange_weak calls (#185953)

On AIX, this test sometimes fails with error `Assertion failed: y ==
true`. The test assumes `compare_exchange_weak` should succeed on a
single call, however according to the standard:

> A weak compare-and-exchange operation may fail spuriously. That is,
even when the contents of memory referred to by expected and ptr are
equal, it may return false and store back to expected the same memory
contents that were originally there.
This spurious failure enables implementation of compare-and-exchange on
a broader class of machines, e.g., load-locked store-conditional
machines. A consequence of spurious failure is that nearly all uses of
weak compare-and-exchange will be in a loop.

[atomics.ref.ops]/27
DeltaFile
+10-10libcxx/test/std/atomics/atomics.ref/compare_exchange_weak.pass.cpp
+10-101 files

LLVM/project 0447766mlir/include/mlir/Bindings/Python Globals.h, mlir/lib/Bindings/Python Globals.cpp IRCore.cpp

[MLIR][Python] Refine the behavior of Python-defined dialect reloading (#186128)

This includes several changes:
- `Dialect.load(reload=False)` will fail if the dialect was already
loaded in a different context. To prevent the further program abortion.
- `Dialect.load(reload=True)` implies `replace=True` in
dialect/operation registering.
- `PyGlobals::registerDialectImpl` now has a parameter `replace`.
- `register_dialect` and `register_operation` is no longer exposed in
`mlir.dialects.ext`.

This should solve the registering problem found in writing transform
test cases by @rolfmorel.
DeltaFile
+12-27mlir/python/mlir/dialects/ext.py
+1-7mlir/test/python/dialects/transform_op_interface.py
+1-3mlir/test/python/dialects/transform_pattern_descriptor_op_interface.py
+2-2mlir/include/mlir/Bindings/Python/Globals.h
+2-2mlir/lib/Bindings/Python/Globals.cpp
+2-1mlir/lib/Bindings/Python/IRCore.cpp
+20-426 files

LLVM/project 69780bellvm/lib/Transforms/AggressiveInstCombine AggressiveInstCombine.cpp, llvm/test/Transforms/AggressiveInstCombine/AArch64 lower-table-based-log2-basics.ll

[AggressiveInstCombine] Recognize table based log2 and replace with ctlz+sub. (#185160)

Recognize table based log2 implementations like

```
unsigned log2(unsigned v) {
  static const unsigned char table[] = {
    0,  9,  1, 10, 13, 21,  2, 29, 11, 14, 16, 18, 22, 25,  3, 30,
    8, 12, 20, 28, 15, 17, 24,  7, 19, 27, 23,  6, 26,  5,  4, 31
  };

  v |= v >> 1;
  v |= v >> 2;
  v |= v >> 4;
  v |= v >> 8;
  v |= v >> 16;

  return table[(unsigned)(v * 0x07C4ACDDU) >> 27];
}

    [18 lines not shown]
DeltaFile
+264-0llvm/test/Transforms/AggressiveInstCombine/X86/lower-table-based-log2-negative.ll
+220-0llvm/test/Transforms/AggressiveInstCombine/X86/lower-table-based-log2-basics.ll
+206-0llvm/test/Transforms/AggressiveInstCombine/AArch64/lower-table-based-log2-basics.ll
+184-0llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
+874-04 files

LLVM/project 3bc216cclang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations (#185280)

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind
- Remove CIR_UnaryOpKind enum and old CIR_UnaryOp definition

Assembly format change:
  cir.unary(inc, %x) nsw : !s32i, !s32i  ->  cir.inc nsw %x : !s32i
  cir.unary(not, %x) : !u32i, !u32i      ->  cir.not %x : !u32i
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/loop-reduction-clause-outline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project 3e6316eclang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

This follows the same pattern used when cir.binop was split into
individual binary operations (AddOp, SubOp, etc.).

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind

    [6 lines not shown]
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/loop-reduction-clause-inline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project 55db533clang-tools-extra/clang-tidy/readability RedundantQualifiedAliasCheck.cpp RedundantQualifiedAliasCheck.h, clang-tools-extra/docs ReleaseNotes.rst

[clang-tidy] Add redundant qualified alias check (#180404)

Introduce `readability-redundant-qualified-alias` to flag identity type
aliases that repeat a qualified name and suggest using-declarations when
safe. The check is conservative: it skips macros, elaborated keywords,
dependent types, and templates. `OnlyNamespaceScope` controls whether
local/class scopes are included (default `false`).

Depends on: #183940 #183941
DeltaFile
+220-0clang-tools-extra/clang-tidy/readability/RedundantQualifiedAliasCheck.cpp
+203-0clang-tools-extra/test/clang-tidy/checkers/readability/redundant-qualified-alias.cpp
+40-0clang-tools-extra/clang-tidy/readability/RedundantQualifiedAliasCheck.h
+30-0clang-tools-extra/docs/clang-tidy/checks/readability/redundant-qualified-alias.rst
+6-0clang-tools-extra/docs/ReleaseNotes.rst
+3-0clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp
+502-02 files not shown
+504-08 files

LLVM/project 2370920clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

This follows the same pattern used when cir.binop was split into
individual binary operations (AddOp, SubOp, etc.).

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind

    [6 lines not shown]
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/compute-reduction-clause-outline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project 629edafclang CMakeLists.txt, clang/include/clang/Config config.h.cmake

[clang][Driver][Darwin] Optionally use xcselect to find macOS SDK (#119670)

This is a scaled down version of https://reviews.llvm.org/D136315.

The intent is largely the same as before[^1], but I've scaled down the
scope to try to avoid the issues that the previous patch caused:
- the changes are now opt-in based on enabling `CLANG_USE_XCSELECT`
- this only works when targeting macOS on a macOS host (this is the only
case supported by `libxcselect`[^2])
- calling `libxcselect` is done only when the target is `*-apple-macos*`
to avoid breaking many tests

Another reason to leave this as opt-in for now is that there are some
bugs in libxcselect that need fixing before it is safe to use by default
for all users. This has been reported to Apple as FB16081077.

[^1]: See also https://reviews.llvm.org/D109460 and #45225.
[^2]: https://developer.apple.com/documentation/xcselect?language=objc
DeltaFile
+38-0clang/CMakeLists.txt
+23-9clang/lib/Driver/ToolChains/Darwin.cpp
+17-0clang/test/Driver/darwin-ld-platform-version-macos-nosdk.c
+0-13clang/test/Driver/darwin-ld-platform-version-macos.c
+6-0clang/include/clang/Config/config.h.cmake
+5-0clang/test/Driver/xcselect.c
+89-224 files not shown
+97-2210 files

LLVM/project 64ca525clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

This follows the same pattern used when cir.binop was split into
individual binary operations (AddOp, SubOp, etc.).

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind

    [6 lines not shown]
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/loop-reduction-clause-outline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project 5f47943libcxx/utils/ci/docker docker-compose.yml

[libc++][Android] Update Compiler for Android CI (#186531)

Upgrade Android compiler from r563880 to r584948b because libc++ does
not support LLVM 20 anymore
DeltaFile
+2-2libcxx/utils/ci/docker/docker-compose.yml
+2-21 files

LLVM/project baf5209llvm/docs TestSuiteGuide.md

[Docs] typo settting -> setting (#178665)
DeltaFile
+1-1llvm/docs/TestSuiteGuide.md
+1-11 files

LLVM/project bdc92d3clang/include/clang/CIR/Dialect/IR CIROps.td

[CIR] Add Pure trait to IsFPClassOp

IsFPClassOp is a pure classification check on a floating-point value
with no memory effects. Mark it Pure to enable DCE and other
optimizations.
DeltaFile
+1-1clang/include/clang/CIR/Dialect/IR/CIROps.td
+1-11 files

LLVM/project 05c65ebclang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

This follows the same pattern used when cir.binop was split into
individual binary operations (AddOp, SubOp, etc.).

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind

    [6 lines not shown]
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/loop-reduction-clause-inline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project 9de31c4llvm/lib/Transforms/Vectorize LoopVectorize.cpp

[VPlan] Create zero resume value for CanIV directly (NFC).

The start value of the canonical IV is always 0. Assert and generate
zero VPValue manually in preparation for
https://github.com/llvm/llvm-project/pull/156262. Split off as
suggested.
DeltaFile
+7-3llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+7-31 files

LLVM/project 6ae9981clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

This follows the same pattern used when cir.binop was split into
individual binary operations (AddOp, SubOp, etc.).

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind

    [6 lines not shown]
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/loop-reduction-clause-inline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project d700deallvm/lib/Transforms/Vectorize VPlanUtils.cpp

[VPlan] Remove special handling for canonical increment (NFC).

The canonical IV increment should be proven as uniform-across-VF-and-UF
by the existing logic. Remove explicit handling, in preparation for
https://github.com/llvm/llvm-project/pull/156262. Split off as
suggested.
DeltaFile
+2-3llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+2-31 files

LLVM/project 4a4f96eclang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

This follows the same pattern used when cir.binop was split into
individual binary operations (AddOp, SubOp, etc.).

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind

    [6 lines not shown]
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/loop-reduction-clause-inline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project 5cc4594llvm/include/llvm/Analysis CFGPrinter.h, llvm/include/llvm/IR CFG.h

[IR] Implement successors as Use iterators (#186616)

This is possible since now all successor operands are stored
consecutively.

There is just one out-of-line function call instead of one call to
getSuccessor() per operand.
DeltaFile
+15-117llvm/include/llvm/IR/CFG.h
+6-5llvm/lib/Analysis/BranchProbabilityInfo.cpp
+5-4llvm/unittests/Analysis/CFGTest.cpp
+3-5llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
+4-4llvm/lib/Transforms/Scalar/JumpThreading.cpp
+3-3llvm/include/llvm/Analysis/CFGPrinter.h
+36-1381 files not shown
+37-1397 files

LLVM/project b85e7f0llvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 shift-i512.ll

[X86] isSplatValueForTargetNode - test source value for vector uniform shift ops (#186619)

For old SSE style vector shifts, we just need to check the shifted value is a splat as the shift amount is uniform

Avoids an unnecessary variable shuffle in i512 ashr expansion
DeltaFile
+34-36llvm/test/CodeGen/X86/shift-i512.ll
+8-0llvm/lib/Target/X86/X86ISelLowering.cpp
+42-362 files

LLVM/project 8b3054fclang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

This follows the same pattern used when cir.binop was split into
individual binary operations (AddOp, SubOp, etc.).

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind

    [6 lines not shown]
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/loop-reduction-clause-outline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project 74af9c3llvm/lib/Transforms/Vectorize VPlan.h

[VPlan] Consolidate VPRegionBlock constructors (NFC).

Unify VPRegionBlock constructors into a single one, in preparation for
https://github.com/llvm/llvm-project/pull/156262. Split off as
suggested.
DeltaFile
+8-9llvm/lib/Transforms/Vectorize/VPlan.h
+8-91 files

LLVM/project 6af0466clang/lib/Format ContinuationIndenter.cpp, clang/unittests/Format FormatTest.cpp

[clang-format] Fix a crash on fuzzer-generated invalid C++ code (#186566)

Fixes #185421
DeltaFile
+8-0clang/unittests/Format/FormatTest.cpp
+2-1clang/lib/Format/ContinuationIndenter.cpp
+10-12 files

LLVM/project 3e3d2b6llvm/lib/Transforms/Vectorize VPlan.h VPlanUtils.h

[VPlan] Add hasPredecessors and hasSuccessors to VPBlockBase (NFC).

Add/move helpers to VPBlockBase, and use in a few more places.

Split off from https://github.com/llvm/llvm-project/pull/156262 as
suggested.
DeltaFile
+9-7llvm/lib/Transforms/Vectorize/VPlan.h
+4-7llvm/lib/Transforms/Vectorize/VPlanUtils.h
+1-1llvm/lib/Transforms/Vectorize/VPlan.cpp
+14-153 files

LLVM/project de0e10eclang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Split CIR_UnaryOp into individual operations

Split the monolithic cir.unary operation (which dispatched on a
UnaryOpKind enum) into four separate operations: cir.inc, cir.dec,
cir.minus, and cir.not.

This follows the same pattern used when cir.binop was split into
individual binary operations (AddOp, SubOp, etc.).

Changes:
- Add CIR_UnaryOpInterface with getInput()/getResult() methods
- Add CIR_UnaryOp and CIR_UnaryOpWithOverflowFlag base classes
- Define IncOp, DecOp, MinusOp, NotOp with per-op folds
- Add Involution trait to NotOp for not(not(x)) -> x folding
- Replace createUnaryOp() with createInc/Dec/Minus/Not builders
- Split LLVM lowering into four separate patterns
- Split LoweringPrepare complex-type handling per unary op
- Update CIRCanonicalize and CIRSimplify for new op types
- Update all codegen files to use bool params instead of UnaryOpKind

    [6 lines not shown]
DeltaFile
+91-105clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-88clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+111-28clang/include/clang/CIR/Dialect/IR/CIROps.td
+62-62clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-CtorDtor.cpp
+41-41clang/test/CIR/CodeGenOpenACC/private-clause-pointer-array-recipes-NoOps.cpp
+36-36clang/test/CIR/CodeGenOpenACC/combined-reduction-clause-inline-ops.cpp
+397-36078 files not shown
+1,393-1,36784 files

LLVM/project e3baec4clang/lib/CIR/CodeGen CIRGenExprComplex.cpp CIRGenExprScalar.cpp, clang/lib/CodeGen CGExprComplex.cpp

[CIR] Remove cir.unary(plus, ...) and emit nothing for unary plus (#185278)

Traditional codegen never emits any operation for unary plus — it just
visits the subexpression as a pure identity at the codegen level. Align
CIRGen with this behavior by removing Plus from UnaryOpKind entirely
and having VisitUnaryPlus directly visit the subexpression with the
appropriate promotion/demotion handling.
DeltaFile
+68-67clang/lib/CodeGen/CGExprComplex.cpp
+0-72clang/test/CIR/Transforms/canonicalize.cir
+10-26clang/test/CIR/CodeGen/complex-unary.cpp
+16-20clang/test/CIR/IR/unary.cir
+18-16clang/lib/CIR/CodeGen/CIRGenExprComplex.cpp
+14-12clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
+126-21310 files not shown
+146-28316 files

LLVM/project 6e1d0d3clang/lib/CIR/CodeGen CIRGenExprComplex.cpp CIRGenExprScalar.cpp, clang/lib/CodeGen CGExprComplex.cpp

[CIR] Remove cir.unary(plus, ...) and emit nothing for unary plus

Traditional codegen never emits any operation for unary plus — it just
visits the subexpression as a pure identity at the codegen level. Align
CIRGen with this behavior by removing Plus from UnaryOpKind entirely
and having VisitUnaryPlus directly visit the subexpression with the
appropriate promotion/demotion handling.
DeltaFile
+68-67clang/lib/CodeGen/CGExprComplex.cpp
+0-72clang/test/CIR/Transforms/canonicalize.cir
+16-20clang/test/CIR/IR/unary.cir
+10-26clang/test/CIR/CodeGen/complex-unary.cpp
+18-16clang/lib/CIR/CodeGen/CIRGenExprComplex.cpp
+14-12clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
+126-21310 files not shown
+146-28316 files

LLVM/project e7a3ccfllvm/test/Transforms/PhaseOrdering/X86 avg.ll

[PhaseOrdering][X86] Add average round tests based off #128424 (#186615)
DeltaFile
+1,355-0llvm/test/Transforms/PhaseOrdering/X86/avg.ll
+1,355-01 files

LLVM/project 09faf63llvm/include/llvm/IR IRBuilder.h, llvm/lib/IR Core.cpp

[LLVM] Change IRBuilder::CreateAggregateRet to accept an ArrayRef (#186605)

Change `IRBuilder::CreateAggregateRet()` to accept an `ArrayRef` instead
of a pointer and size, and extend IRBuilder unit test to exercise it.
DeltaFile
+21-0llvm/unittests/IR/IRBuilderTest.cpp
+6-7llvm/include/llvm/IR/IRBuilder.h
+1-1llvm/lib/IR/Core.cpp
+28-83 files