[InstCombine] Fold scmp(X, 0) to sext_or_trunc(X) when X is in [-1, 1] (#216046)
If `X` is known to be one of -1, 0 or 1 (via signed constant range
analysis), then `scmp(X, 0)` is equal to `X` itself, so it can be folded
to a sign-extension or truncation of `X` to the result type.
This handles cases where the range comes from argument attributes (e.g.
`range(i32 -1, 2)`) as well as ranges inferred from instructions (e.g.
`ashr X, 31` or `and X, 1`). For i1 operands the fold applies
unconditionally, since an i1 is always 0 or -1 when interpreted as
signed.
Alive2 proofs: https://alive2.llvm.org/ce/z/iRno8U
Fixes #215959
RuntimeLibcalls: Stop providing __powitf2 on MSVCRT
MSVCRT does not provide the powi helpers, so gate the fp128 __powitf2 on
isNotOSMSVCRT alongside the f32/f64 __powisf2/__powidf2, instead of adding it
unconditionally. The unconditional add was a hack to satisfy a test that
expected a wrongly-typed powi call on windows-msvc.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
[DAG] Add computeKnownBits(FREEZE(X)) handling (#214095)
The patch mirrors `ComputeNumSignBits` handling from #161507.
Fixes #161642
AI Note: I've used Claude to help familiarize the repository and explain
several concepts with `SelectionDAG`. Additionally, I've used it to tidy
up code and help me with my workflow of building LLVM and understanding
the tools and commands, e.g. `llc` and `ninja`
EDIT: AI disclaimer
Uses/kde.mk: Use the latest KDE Frameworks if the version is omitted
Diffrential: D58578
Reviewed by: adridg, arrowd, jhale
(cherry picked from commit ee319c49617da1da49e5695aac0133743b2d93bc)
multimedia/vlc: Update to 3.0.23
- Allow to build with Qt 6 (experimental). Add general QT option and
QT5/QT6 radio switch.
- Enable FRIBIDI by default (required by HARFBUZZ).
- Remove DEBUG from OPTIONS, respect WITH_DEBUG instead.
- Do not silence commands.
Release notes: https://code.videolan.org/videolan/vlc/-/tags/3.0.23
PR: 296939
Co-authored-by: Max Brazhnikov <makc at FreeBSD.org>
(cherry picked from commit 03699b0de7a3cd995d346a816674d6710a8f4603)
[SCEV] Print use-specific no-wrap flags (NFC). (#216663)
Add support for printing use-specific no-wrap flags.
Currently no in-tree user sets use-specific flags yet, hence the C++
based unit test.
PR: https://github.com/llvm/llvm-project/pull/216663
[Utils] Hoist ValueMapper out of per-instruction remap loops in CloneFunction (#216014)
Remapping heap-allocates a ~500-byte Mapper per call and the clone paths
call these once per instruction. Since every public ValueMapper method
flushes on exit, a single instance of ValueMapper is used per loop
reducing allocations from 500*N to 500 per loop.
This change was developed with AI assistance. I have reviewed, tested,
and understand it and take ownership of it.
[KnownFPClass] Infer signs of finite nonzero fdiv results (#214912)
The only time a non-zero finite result can be generated from `x / y` is
if both `x` and `y` are either normal or subnormal. I used this
information to rule out sign information in some cases, such as
`sqrt(x)`, which can either be `-0.0` or `positive`. This is useful for
`1.0 / sqrt(x)` since `1.0 / -0.0` will never generate a negative normal
or negative subnormal.
AI disclosure:
I used OpenAI Codex (ChatGPT 5.6 sol) to write update the test cases,
implement the changes, and enable the additional analysis passes for the
FDIV intrinsic
***
Background:
I discovered that `1.0 / sqrt(x)` was not able to rule out the result
[7 lines not shown]
18328 Update AMD microcode to 20260724
Reviewed by: Bill Sommerfeld <sommerfeld at hamachi.org>
Reviewed by: Toomas Soome <tsoome at me.com>
Approved by: Robert Mustacchi <rm+illumos at fingolfin.org>
[AArch64] Combine shift and truncate into deinterleave. (#216060)
This is an alternative approach to #213252, from which I've taken some
of the tests.
Co-authored-by: Jacob Crawley <jacob.crawley at arm.com>
[lldb][NFC] Fix GetPointeeDataTest after the ProcessAddress migration (#216978)
One unit-test override was missed when `Process::DoReadMemory` was
changed to accept `const ProcessAddress &`. `SentinelProcess` in
`GetPointeeDataTest.cpp` still uses `lldb::addr_t`, so the override does
not match, the mock remains abstract, and `check-lldb` fails to build.
Update the parameter type and the remaining stale `Process.h`
documentation. This is a quick NFC fix for the broken build.
## Testing
`check-lldb` builds successfully.
[SPIR-V] Fix crash when a function pointer global is a use of a cloned function (#216638)
GlobalValue operands must be updated via replaceUsesOfWith, not
Constant::handleOperandChange, which doesn't support them
Fixes LCOMPILER-2616
deskutils/cairo-dock-plugins: Add missing headers
Include missing math.h in a couple of c source files
PR: 296978
Reported by: Ott Köstner <ottkostner at gmail.com>
Reviewed by: thierry (mentor)
Approved by: thierry (mentor)
devel/gitpane: update to 0.12.0
[0.12.0] - 2026-08-17
Added
p pulls and P pushes the selected repo or worktree from anywhere, lazygit-style, and the GitHub panel toggle moved from p to =. Modified keys (Ctrl/Alt combinations) never trigger the repo-mutating shortcuts, and the reserved-key documentation covers the new bindings. Thanks @expoli.
Sleep-when-hidden now also applies outside tmux, superseding the v0.11.0 note that outside-tmux behavior was unchanged. With watch.sleep_when_hidden = true (the default), a session with no input for watch.doze_after_secs (default 120) drops to deep sleep: periodic polling, fetching, and watcher-driven refreshes all pause until the next input. Any deliberate input counts as presence (keys, mouse clicks and scrolls, paste, resize, focus changes), the idle timer wakes exactly once at the deadline instead of polling every 3 seconds, and the probe reports its state immediately on startup so a resumed session never sits stale. Thanks @expoli.
Fixed
Pull and push no longer hard-code origin. A branch with a configured upstream or push remote runs bare, so git's own config decides the destination, including renamed upstream branches; otherwise gitpane resolves the repo's real remote (origin when present, else the workspace's own remote, as in Gerrit and mirror setups). Submodule update-to-latest, GitHub owner/repo detection, and the review launcher's default-branch base follow the same resolution. Thanks @expoli.
Quitting no longer hangs for tens of seconds while in-flight status queries drain on a large workspace. Mutating operations (pull, push, submodule updates) still complete before exit, with a status-bar notice and a second q as the force-quit escape, and a panic no longer reintroduces the hang or interrupts an in-flight pull mid-write. Thanks @expoli.
Pasting no longer copies the clipboard content an extra time per paste event.
RuntimeLibcalls: Fix wrongly typed x87/fp128 long double libcalls on x86
The x86 and default libcall sets gated the l-suffixed long double libm
functions on OS conditions rather than the long double format. This
incorrectly provided the f80 libcalls on targets whose long double is not x87
(Windows-MSVC, UEFI, x86_64 Android), double-provided frexpl/ldexpl on musl,
and provided the fp128 sincosl on targets using double as long double (m68k).
Gate the l-suffixed libm math on the long double format, mirroring the earlier
AArch64 fix: x87 targets get the _f80 calls, fp128 targets the _f128 calls, and
double targets neither. The compiler-rt f80 helpers (__extendxftf2, __fixxfti,
__powixf2, ...) are keyed to the x86_fp80 IR type, not the long double format,
so they stay unconditional on x86.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>