LLVM/project 90e919d — llvm/test/Transforms/IndVarSimplify implied-nonneg-from-unsigned-bound-swapped.ll

[SCEV][IndVars][NFC] Add tests for x >=s 0 from x <u y with swapped operands

Let n be the bit width of x and y. If x <u y and y <=u 2^(n-1), then
x >=s 0. SCEV can't prove this yet when the operands of the compare to
prove are in the opposite order to the guard, e.g. 0 <=s x with
x <u y known.

Add tests for it.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+1,196-0llvm/test/Transforms/IndVarSimplify/implied-nonneg-from-unsigned-bound-swapped.ll
+1,196-01 files

LLVM/project f34bc42 — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Transforms/IndVarSimplify implied-nonneg-from-unsigned-bound.ll implied-nonneg-from-unsigned-bound-swapped.ll

[SCEV] Derive x >=s 0 from x <u y and y <=u 2^(n-1)

Let n be the bit width of x and y. If x <u y and y <=u 2^(n-1), then
x <u 2^(n-1), so x >=s 0. Here y <=u 2^(n-1) means y >=s 0 or
y == INT_MIN. In the same way, if x <=u y and y <u 2^(n-1), then
x >=s 0.

This lets a guard like x <u len prove x >=s 0 when len is non-negative.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+21-32llvm/test/Transforms/IndVarSimplify/implied-nonneg-from-unsigned-bound-swapped.ll
+5-17llvm/test/Transforms/IndVarSimplify/implied-nonneg-from-unsigned-bound.ll
+21-0llvm/lib/Analysis/ScalarEvolution.cpp
+47-493 files

LLVM/project a7da425 — llvm/test/Transforms/IndVarSimplify implied-nonneg-from-unsigned-bound.ll

[SCEV][IndVars][NFC] Add tests for x >=s 0 from x <u y and y <=u 2^(n-1)

Let n be the bit width of x and y. If x <u y and y <=u 2^(n-1), then
x >=s 0. SCEV can't prove this yet.

Add tests for it.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+287-0llvm/test/Transforms/IndVarSimplify/implied-nonneg-from-unsigned-bound.ll
+287-01 files

LLVM/project 9130ef0 — llvm/include/llvm/Analysis ScalarEvolution.h, llvm/lib/Analysis ScalarEvolution.cpp

[SCEV][NFC] Factor isImpliedCondViaSignFlippedPred out of isImpliedCondBalancedTypes

Move the code that proves a condition from a found condition with the
other signedness into a new private function.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+39-39llvm/lib/Analysis/ScalarEvolution.cpp
+8-0llvm/include/llvm/Analysis/ScalarEvolution.h
+47-392 files

LLVM/project 1ec014d — llvm/test/Transforms/IndVarSimplify implied-cond-different-signedness.ll

[SCEV][IndVars][NFC] Add tests for implied conditions with different signedness

SCEV can prove some signed conditions from unsigned ones and the other
way around. For example, it proves a <s b from a <u b and b >=s 0. But
it fails when the operands are in the opposite order, like b >s a.

Add tests for this.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+160-0llvm/test/Transforms/IndVarSimplify/implied-cond-different-signedness.ll
+160-01 files

LLVM/project 43a24f2 — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Transforms/IndVarSimplify implied-cond-different-signedness.ll

[SCEV] Prove signed/unsigned implications in either operand order

SCEV could prove these implications only with the operands in the same
order:
- If a <u b and a, b have the same sign, then a <s b.
- If a <s b and a, b have the same sign, then a <u b.
- If a <u b and b >=s 0, then a <s b.
- If a <s b and b <s 0, then a <u b.

For example, it proved a <s b from a <u b and b >=s 0, but not b >s a.
Now it proves them in either order.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+3-14llvm/test/Transforms/IndVarSimplify/implied-cond-different-signedness.ll
+7-1llvm/lib/Analysis/ScalarEvolution.cpp
+10-152 files

LLVM/project 8cd6caf — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Transforms/IndVarSimplify implied-cond-fall-through.ll

[SCEV] Try other implications when sign-flipped ones fail (#234594)

SCEV's `isImpliedCondBalancedTypes` tries to prove an implication
through several rules. There are rules for when a predicate to prove is
sign-flipped from the found predicate, and also there are other rules,
which, for example, try to prove the implication through ranges.

Before, if a proof for a sign-flipped rule implication returned false,
we wouldn't check other rules and just bail out with false result too.

Now make those rules fall-through - if one rule couldn't be proven, try
other rules in the function.

An example query is `x - 5 <s 5` with `x <u 10` known. The implication
`a <u b and b >=s 0 --> a <s b` matches it, but `x - 5 <u 5` with `x <u
10` known does not hold (e.g. `x = 0`), so SCEV gave up.

Now it goes on to trying to prove the query from ranges. `x <u 10` gives
`x` in `[0, 10)`, so `x - 5` is in `[-5, 5)`, and `x - 5 <s 5` holds.

Assisted-by: Claude
DeltaFile
+45-0llvm/test/Transforms/IndVarSimplify/implied-cond-fall-through.ll
+13-10llvm/lib/Analysis/ScalarEvolution.cpp
+58-102 files

LLVM/project 00ad0d2 — libc/docs talks.md, libc/docs/headers/math index.md

[libc][doc] Add 2026 talks, blog posts and publications. (#234767)
DeltaFile
+25-0libc/docs/talks.md
+1-0libc/docs/headers/math/index.md
+26-02 files

LLVM/project 2b24cf9 — clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/Transforms FlattenCFG.cpp

[CIR] Implement FlattenCFG for coroutine AwaitOp, CoroBodyOp, and CoReturnOp (#203802)

This PR implements the `FlattenCFG` pass for coroutine operations:
`cir.await`, `cir.coro.body`, and `cir.co_return`.

First, we introduce a new function attribute, `flatten_coroutine`. This
is necessary because the existing `coroutine` attribute verifies the
presence of coroutine operations such as `cir.await` and
`cir.coro.body`. After `FlattenCFG` runs, these operations are
eliminated, so the original attribute can no longer be used. The new
attribute is preserved after flattening and is later used during LLVM
lowering to emit the `presplitcoroutine` function attribute.

We also introduce a new alloca attribute, `coroutine_suspend_point`.
This attribute marks an alloca whose **use** represents the coroutine
suspension destination. Currently, the only supported suspension
destination is the return block. In the future, this mechanism can be
extended to support additional destinations such as the GRO path.


    [27 lines not shown]
DeltaFile
+1,252-15clang/test/CIR/CodeGenCoroutines/coro-task.cpp
+424-13clang/lib/CIR/Dialect/Transforms/FlattenCFG.cpp
+200-0clang/test/CIR/Transforms/flatten-coroutine.cir
+57-22clang/test/CIR/CodeGenCoroutines/coro-fallthrough.cpp
+56-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+17-0clang/test/CIR/CodeGenCoroutines/coro-await-suspend-bool.cpp
+2,006-503 files not shown
+2,019-509 files

FreeBSD/ports b442a7e — devel/gitoxide Makefile distinfo

devel/gitoxide: update 0.60.0 → 0.61.0

ChangeLog: https://github.com/GitoxideLabs/gitoxide/releases/tag/v0.61.0
DeltaFile
+27-35devel/gitoxide/distinfo
+13-18devel/gitoxide/Makefile
+40-532 files

FreeBSD/ports 3942473 — security/susshi Makefile distinfo

security/susshi: update 0.23.1 → 0.25.3
DeltaFile
+37-43security/susshi/distinfo
+19-22security/susshi/Makefile
+56-652 files

FreeBSD/ports a7c9a97 — math/freefem++ Makefile

math/freefem++: remove duplicate dependeny

Reported by:    Bryan Drewery <bdrewery at FreeBSD.org>
DeltaFile
+1-1math/freefem++/Makefile
+1-11 files

FreeBSD/ports 075c84e — math/py-z3-solver distinfo Makefile, math/py-z3-solver/files patch-CMakeLists.txt

math/py-z3-solver: update 5.1.0.0 → 5.3.1.0
DeltaFile
+23-9math/py-z3-solver/files/patch-CMakeLists.txt
+3-4math/py-z3-solver/Makefile
+3-3math/py-z3-solver/distinfo
+29-163 files

FreeBSD/ports c8a5b82 — textproc/jaq Makefile distinfo

textproc/jaq: update 3.1.1 → 3.1.2

ChangeLog: https://github.com/01mf02/jaq/releases/tag/v3.1.2
DeltaFile
+3-3textproc/jaq/distinfo
+1-2textproc/jaq/Makefile
+4-52 files

FreeBSD/ports 4d9002a — graphics/py-vispy distinfo Makefile, graphics/py-vispy/files patch-pyproject.toml example.py

graphics/py-vispy: update 0.16.2 → 0.17.0
DeltaFile
+54-0graphics/py-vispy/files/example.py
+35-9graphics/py-vispy/files/patch-pyproject.toml
+9-7graphics/py-vispy/Makefile
+3-3graphics/py-vispy/distinfo
+101-194 files

FreeBSD/ports 415c537 — misc/py-xgboost Makefile distinfo, misc/xgboost pkg-plist Makefile

misc/{,py-}xgboost: update 3.4.1 → 3.4.2
DeltaFile
+15-0misc/xgboost/files/patch-tests_cpp_tree_test__fit__stump.cc
+3-7misc/xgboost/distinfo
+2-6misc/xgboost/Makefile
+3-3misc/py-xgboost/distinfo
+1-1misc/xgboost/pkg-plist
+1-1misc/py-xgboost/Makefile
+25-186 files

FreeBSD/ports 9419a91 — misc/timr-tui Makefile distinfo

misc/timr-tui: update 1.11.1 → 1.12.0

ChangeLog: https://github.com/sectore/timr-tui/releases/tag/v1.12.0
DeltaFile
+275-309misc/timr-tui/distinfo
+140-156misc/timr-tui/Makefile
+415-4652 files

FreeBSD/ports 7b414a9 — graphics/py-pyvista distinfo Makefile, graphics/py-pyvista/files patch-pyproject.toml

graphics/py-pyvista: update 0.48.4 → 0.49.1
DeltaFile
+5-5graphics/py-pyvista/files/patch-pyproject.toml
+3-3graphics/py-pyvista/distinfo
+3-3graphics/py-pyvista/Makefile
+11-113 files

FreeBSD/ports 3a49988 — misc/py-peft Makefile distinfo

misc/py-peft: update 0.19.1 → 0.21.2
DeltaFile
+3-3misc/py-peft/distinfo
+3-2misc/py-peft/Makefile
+6-52 files

LLVM/project 6989f0e — lldb/source/Target Process.cpp, lldb/test/API/functionalities/gdb_remote_client TestAttachWaitConnected.py

[lldb] Publish the attaching state when attaching to a connected process (#234059)

A process that was connected before the attach (process connect, then
process attach --waitfor) already has a private state thread, so
StartPrivateStateThread ignores the eStateAttaching it is given and the
public state stays connected. The private state thread only forwards an
interrupt to a process that is attaching, so a wait-for attach on such a
process could not be cancelled.

Publish the state in Process::Attach when the thread was already
running.

Assisted-by: Claude (on the test side)
DeltaFile
+88-0lldb/test/API/functionalities/gdb_remote_client/TestAttachWaitConnected.py
+13-2lldb/source/Target/Process.cpp
+101-22 files

LLVM/project 33829e4 — llvm/test/TableGen address-space-patfrags.td, llvm/test/TableGen/GlobalISelEmitter GlobalISelEmitter.td

[TableGen] Fix a strict weak ordering bug (#229955)

This is similar to #197071 in that it fixes the same strict weak
ordering check that arises with another sequence.

Before this patch, `InstructionMatcher::isHigherPriorityThan(...)` may
produce a cycle. Given:

```
| Instruction | Predicates | Operands |
|=============|============|==========|
| A           | 3, 1       | 3        |
| B           | 3          | 2        |
| C           | 3, 2       | 1        |
```

* A beats B because we zip through predicates, determine that `3 == 3`
while ignoring the second predicate of A, so we check operands. 3 > 2 so
A beats B.

    [5 lines not shown]
DeltaFile
+91-90llvm/test/TableGen/GlobalISelEmitter/GlobalISelEmitter.td
+24-24llvm/test/TableGen/address-space-patfrags.td
+6-5llvm/utils/TableGen/Common/GlobalISel/MatchTable/Matchers.cpp
+121-1193 files

LLVM/project 7398f6c — clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/CodeGen CIRGenExpr.cpp

[CIR] Add inbounds and nuw flags to cir.get_element

CIR lowered array subscripts to a getelementptr with no no-wrap flags,
where classic codegen marks them inbounds, and also nuw when the index
is unsigned.

cir.get_element now has optional inbounds and nuw flags, and CIRGen sets
them where classic does: inbounds unless -fwrapv-pointer is given, nuw
for an unsigned index expression, and no inbounds for an OpenMP device
subscript of an array of arrays whose base is not an alloca.  The flags
live on the op because both depend on language options and on the C
index type, which the lowering cannot see.  LowerToLLVM maps them to the
GEP's no-wrap flags.

Assisted-by: Cursor / Claude Opus 5.5
DeltaFile
+232-0clang/test/CIR/CodeGen/array-subscript-inbounds.c
+104-0clang/test/CIR/CodeGenOpenMP/device-array-subscript.c
+65-17clang/lib/CIR/CodeGen/CIRGenExpr.cpp
+40-0clang/test/CIR/Lowering/get-element.cir
+32-4clang/include/clang/CIR/Dialect/IR/CIROps.td
+17-17clang/test/CIR/CodeGen/array.cpp
+490-3823 files not shown
+616-11629 files

LLVM/project 6c2c09f — .github/workflows libcxx-lnt-refine-commits.yml

[libc++] Download the series of a machine a few tests at a time

Downloading the whole series of a machine in a single request currently makes
LNT time out (it answers 503 after about 3 minutes), since the response is over
500 MB of uncompressed data.

Until that is fixed on the LNT side, download the series 50 tests at a time,
which keeps every request fast and its URL below the ~8 KB that LNT accepts.
Locally, this downloads the whole series of a machine in about 100 seconds.

Assisted by Claude
DeltaFile
+14-2.github/workflows/libcxx-lnt-refine-commits.yml
+14-21 files

FreeBSD/ports dd8b22b — java/dbvis Makefile distinfo

java/dbvis: Update 26.2.3 => 26.2.4

Release Notes:
https://www.dbvis.com/releasenotes/26.2/

Sponsored by:   UNIS Labs
MFH:            2026Q4

(cherry picked from commit 279bfe2e9ccf4b9d709f20240bf2ce786695abd8)
DeltaFile
+3-3java/dbvis/distinfo
+1-1java/dbvis/Makefile
+4-42 files

FreeBSD/ports 279bfe2 — java/dbvis Makefile distinfo

java/dbvis: Update 26.2.3 => 26.2.4

Release Notes:
https://www.dbvis.com/releasenotes/26.2/

Sponsored by:   UNIS Labs
MFH:            2026Q4
DeltaFile
+3-3java/dbvis/distinfo
+1-1java/dbvis/Makefile
+4-42 files

LLVM/project 5c56ffe — llvm/test/Transforms/IndVarSimplify implied-nonneg-from-unsigned-bound.ll

[SCEV][IndVars][NFC] Add tests for x >=s 0 from x <u y and y <=u 2^(n-1)

Let n be the bit width of x and y. If x <u y and y <=u 2^(n-1), then
x >=s 0. SCEV can't prove this yet.

Add tests for it.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+287-0llvm/test/Transforms/IndVarSimplify/implied-nonneg-from-unsigned-bound.ll
+287-01 files

LLVM/project 9daf50a — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Transforms/IndVarSimplify implied-nonneg-from-unsigned-bound.ll implied-nonneg-from-unsigned-bound-swapped.ll

[SCEV] Derive x >=s 0 from x <u y and y <=u 2^(n-1)

Let n be the bit width of x and y. If x <u y and y <=u 2^(n-1), then
x <u 2^(n-1), so x >=s 0. Here y <=u 2^(n-1) means y >=s 0 or
y == INT_MIN. In the same way, if x <=u y and y <u 2^(n-1), then
x >=s 0.

This lets a guard like x <u len prove x >=s 0 when len is non-negative.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+21-32llvm/test/Transforms/IndVarSimplify/implied-nonneg-from-unsigned-bound-swapped.ll
+5-17llvm/test/Transforms/IndVarSimplify/implied-nonneg-from-unsigned-bound.ll
+21-0llvm/lib/Analysis/ScalarEvolution.cpp
+47-493 files

LLVM/project ddd0c95 — llvm/test/Transforms/IndVarSimplify implied-nonneg-from-unsigned-bound-swapped.ll

[SCEV][IndVars][NFC] Add tests for x >=s 0 from x <u y with swapped operands

Let n be the bit width of x and y. If x <u y and y <=u 2^(n-1), then
x >=s 0. SCEV can't prove this yet when the operands of the compare to
prove are in the opposite order to the guard, e.g. 0 <=s x with
x <u y known.

Add tests for it.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+1,196-0llvm/test/Transforms/IndVarSimplify/implied-nonneg-from-unsigned-bound-swapped.ll
+1,196-01 files

LLVM/project 1849671 — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Transforms/IndVarSimplify implied-cond-different-signedness.ll

[SCEV] Prove signed/unsigned implications in either operand order

SCEV could prove these implications only with the operands in the same
order:
- If a <u b and a, b have the same sign, then a <s b.
- If a <s b and a, b have the same sign, then a <u b.
- If a <u b and b >=s 0, then a <s b.
- If a <s b and b <s 0, then a <u b.

For example, it proved a <s b from a <u b and b >=s 0, but not b >s a.
Now it proves them in either order.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+3-14llvm/test/Transforms/IndVarSimplify/implied-cond-different-signedness.ll
+7-1llvm/lib/Analysis/ScalarEvolution.cpp
+10-152 files

LLVM/project f66fab8 — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Transforms/IndVarSimplify implied-cond-fall-through.ll

[SCEV] Try other implications when sign-flipped ones fail

SCEV's isImpliedCondBalancedTypes tries to prove an implication
through several rules. There are rules for when a predicate to prove
is sign-flipped from the found predicate, and also there are other
rules, which, for example, try to prove the implication through
ranges.

Before, if a proof for a sign-flipped rule implication returned false,
we wouldn't check other rules and just bail out with false result too.

Now make those rules fall-through - if one rule couldn't be proven,
try other rules in the function.

An example query is x - 5 <s 5 with x <u 10 known.
The implication "a <u b and b >=s 0 --> a <s b" matches it,
but x - 5 <u 5 with x <u 10 known does not hold (e.g. x = 0),
so SCEV gave up.


    [5 lines not shown]
DeltaFile
+13-10llvm/lib/Analysis/ScalarEvolution.cpp
+1-5llvm/test/Transforms/IndVarSimplify/implied-cond-fall-through.ll
+14-152 files