[flang][Evaluate] Fold type-only inquiries of conditional arguments (#227466)
Fold a reference to an intrinsic inquiry function whose result depends
only on the declared type, kind type parameters, or rank of an argument
when that argument is a conditional argument with a non-constant
condition:
integer, parameter :: k = kind((flag ? a : b))
Every consequent-arg of a conditional argument has the same declared
type and kind type parameters (F2023 C1538) and the same rank unless
all of them are assumed-rank (C1539), so such an inquiry has the same
value whichever consequent-arg is chosen at run time.
FoldOperation(FunctionRef) folds the reference by substituting the
first consequent-arg for the conditional argument in a copy of the
reference and keeps the result when it is a constant.
Accepting such a reference in a constant expression, as in the
PARAMETER above, is an extension. F2023 10.1.12 item (6) admits a
[41 lines not shown]
ZTS: failmode_dio_unwritable: accept musl's EIO error message
failmode_dio_unwritable expects stride_dd to report the failed write as
"Input/output error", which is glibc's wording for EIO. musl, used on
Alpine, words the same error "I/O error", so the test fails there even
though the write failed with EIO as intended.
Accept both wordings, as procfs_list_stale_read already does.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Matthew Ahrens <matt at mahrens.org>
Signed-off-by: Alexander Moch <mail at alexmoch.com>
Closes #19424
[Clang][Sema] Fix lambdas mistakenly inheriting InImmediateFunctionContext (#232458)
This fixes a regression since Clang 21.
As per [expr.const]/p14.1, only the innermost enclosing function
parameter scope matters for determining whether a function or lambda is
in an immediate function context. It does not matter whether the parent
is an immediate function or not.
However, synthesized functions such as Lambda conversion operators and
constructors do need to inherit immediate function context from the
parent. Fix this by explicitly exempting the lambda call operator.
Fixes #183415.
Fixes #169139.
[TableGen] Declare `MCRegisterClassStorageType` as `inline constexpr` (NFC) (#232403)
This reduces size of binaries generated by MSVC on Windows. After
#207168 was merged some of the binaries that include AMDGPU back-end
grew by around 15% on Windows. Declaring the storage class as
`constexpr` allows MSVC to correctly optimize the code brining the
binary size back to its original size.
This is an alternative to #232010 that was reverted due to not being
compatible with MSVC 2019.
[AArch64] Ignore debug uses when splitting immediates (#231717)
and make the debug users of the erased MOV and SUBREG_TO_REG undef.
Assisted-by: Claude
NAS-144543 / 28.0.0-BETA.1 / Fix flaky scrub alert (by themylogin) (#20027)
Sometimes scrub finished before even have the time to see the alert. We
need to listen for `alert.query` events to see when it appears.
Original PR: https://github.com/truenas/middleware/pull/20026
Co-authored-by: themylogin <themylogin at gmail.com>
asciinema: Update to 3.2.1
Changes:
3.2.1 (2026-06-16)
* Improved error reporting for server API failures - server-provided error
messages are now surfaced, with actionable guidance
(e.g. running `asciinema auth`)
* Built release binaries on Ubuntu 22.04 for broader compatibility with older
Linux systems (#742)
* Upgraded the virtual terminal (avt) to the latest version
* Upgraded dependencies, including security fixes
3.2.0 (2026-03-01)
* Improved querying for terminal theme and version
* Added support for playback from stdin (thanks fopina!)
* Improved implementation of ALiS protocol
* Switched from full jitter to equal jitter when timing stream reconnection
attempts
* Added `--description`, `--visibility`, `--audio-url` options for `stream`
[21 lines not shown]
[clang][ThreadSafety] Do not read a C field's address as a pointer to member (#231604)
The analysis reads `&Class::mu` in an attribute as a wildcard, matching
`mu` of any object, and tested for it with `isCXXInstanceMember()`. That
test is true of a C field too -- probably unexpectedly given the CXX in
the name -- so in:
struct Dev {
struct Mutex mu;
int a GUARDED_BY(&mu);
};
`a` was guarded by the `mu` of any object: locking `other->mu` allowed
writing `dev->a`. C has no pointer-to-member syntax, so there `&mu`
names the field of the same object, as `mu` does. The wildcard is kept
for C++ only, as seems likely to have been intended (despite the test
from #191187 being changed here). This ensures the struct annotation now
has the same meaning on C and C++ parsing.
ProcessImplicitDefs: Mark kept physreg IMPLICIT_DEFs dead
A physreg IMPLICIT_DEF has undef set on all of its readers in the block,
but is only erased if the block has no successors. Otherwise it was left
live even when no successor has the register live-in. Mark it dead in
that case.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[IR] Fold `bitcast` pairs through bytes with `ptrtoint`/`inttoptr` (#229107)
Fold `bitcast` pairs through bytes with `ptrtoaddr`.
- A pointer `bitcast` to a byte and then to an integer becomes
`ptrtoint`.
- An integer `bitcast` to a byte and then to a pointer becomes
`inttoptr`.
- Both only fold when the integer has the pointer width.
- A byte `bitcast` to a pointer and then `ptrtoaddr` becomes one
`bitcast`, when the address is the whole pointer.
```diff
-%b = bitcast ptr %p to b64
-%x = bitcast b64 %b to i64
+%x = ptrtoint ptr %p to i64
-%c = bitcast i64 %i to b64
-%q = bitcast b64 %c to ptr
[9 lines not shown]
[IR] Don't fold `bitcast` pairs through bytes into invalid casts (#229105)
Fixes #207532.
`CastInst::isEliminableCastPair` merged any two `bitcast`s into one.
Through a byte type, the merged `bitcast` can be invalid:
```llvm
%b = bitcast ptr %p to b64
%x = bitcast b64 %b to i64 ; was merged into `bitcast ptr %p to i64`
```
A `bitcast` pair now only folds when:
- Neither end is a pointer.
- Both ends are pointers in the same address space.
- One end is a pointer and the other is a byte type.
The following are not folded, as one `bitcast` isn't equivalent. These
pairs used to hit an assertion.
- `inttoptr` + pointer-to-byte `bitcast`: `inttoptr` can recover
provenance, but a byte holding integer bits can't.
[9 lines not shown]
Reapply "[NVPTX] Mark SMUL_LOHI and UMUL_LOHI as Expand for v2i16 (#25808)" (#232763)
This reverts commit 21200de12ab3364b51f8106a9211299ee1d9a8a2.
Ran `update_llc_test_checks.py` to update `test_smulh` and `test_umulh`
in `i16x2-instructions.ll` to match the `-O0` argument lowering behavior
after #232309 .
rework unifi ports to use a snappy-java package rather than pulling in a
pre-generated jar to unifi. allow this to be packaged, so that it can track
libc++ bumps.
currently just using a single 1.10.8 version. tested with unifi 10.6.106
which actually wants that version; hopefully this also works with 9.0.118
which really wants 1.10.5 (let me know if not, I can rework it, but it's
more complexity that I'd like to avoid unless needed)
clang: Add convergence control bundles when creating calls
Instead of creating a call and then recreating it with a convergencectrl
operand bundle, add the bundle when the call is created. Recreating the
call left EmitCall's callOrInvoke pointing at the erased call, and lost
any metadata already attached to it, such as !alloc_token and
!callee_type.
For calls from EmitCall, decide whether a token is needed from the call
site attributes derived from the callee declaration, rather than from
the IR.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>