[flang] Use correct dummy argument name X for IEEE_IS_NAN/IS_NEGATIVE/IS_NORMAL (#233757)
Also adds flang/test/Semantics/ieee_keywords.f90 covering positive X=,
positional, and negative A= references.
Fixes #233449
AI assistance was used for code review analysis and local build
verification.
Co-authored-by: Claude Code <noreply at anthropic.com>
Attributor: Volatile calls may access inaccessible memory
AAMemoryLocation only used the callee's memory locations for calls, so
a function doing a volatile memcpy between its arguments was
memory(argmem: readwrite). Add inaccessible memory for volatile calls,
as CallBase::getMemoryEffects does.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Attributor: Fix use-after-free clearing tail calls in AAPrivatizablePtr
The tail calls collected during manifest may be erased by a signature
rewrite of their callee before the repair callback runs. Find them in
the callback instead.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
ZIL: Sync the txg that a suspended commit waits for
zil_suspend() raises zl_suspend and then calls zil_commit_impl(). With
zl_suspend set, zil_get_commit_list() leaves every itx on the per-txg
lists, including the commit itx that carries the caller's own waiter,
and returns that txg for the caller to wait for instead. But
zil_commit_impl() waits on the waiter first, and the waiter is on no
lwb. Only zil_itxg_clean() can mark it done, once the txg syncs, and
nothing asks for that sync. The wait lasts until the sync thread's
zfs_txg_timeout timer fires. A zil_commit() that loses the race with
zil_suspend() waits the same way.
spa_reset_logs() suspends the ZIL of each dataset in turn while it
holds spa_namespace_lock. zpool remove, zpool split, removing a log
device that holds log blocks and offlining a non-redundant log device
all call it. Each dataset with a ZIL chain adds up to zfs_txg_timeout
to the command, and every other pool command waits for the lock
meanwhile. At the default of 5 seconds, the zpool remove in
removal_nopwrite takes 10 to 11 seconds for its two file systems.
[17 lines not shown]
[CodeGen] Remove init from ThunkInserter (#239055)
This is not needed and the module reference made things uglier for NewPM
implementations (e.g., we couldn't initialize until run but still needed
to ensure we only initialized once).
Assisted-By: LLM
Attributor: Work around GCC 9 ICE in AAHeapToStack manifest
GCC 9 crashes on the generic lambda added in f4b99f3edd466. Use an
explicit parameter type instead.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
dmu_recv: keep rrd->abd current in do_corrective_recv()
do_corrective_recv() works on a local copy of rrd->abd, and may replace
it up to three times: with the decompressed stream data, with the
recompressed data, and with the re-encrypted data. Each time the old
buffer is freed, but rrd->abd is only updated just before the rewrite
zio is issued. receive_process_record() unconditionally frees
rrd->abd after do_corrective_recv() returns for a healing receive, so
any error return between the first swap and that assignment frees the
original stream buffer a second time and leaks the current one.
The affected returns are the three error returns in the re-encryption
block (taken for a non-raw receive into an encrypted dataset), when
reached after the data has been decompressed (compressed stream) or
recompressed (compressed on-disk block):
- dsl_dataset_hold_flags(..., DS_HOLD_FLAG_DECRYPT, ...) failing
(returns EACCES),
- spa_keystore_lookup_key() failing (returns EACCES),
[20 lines not shown]
[Attributor] Don't move allocations passed to musttail calls to the stack
Like a tail call, a musttail call cannot access allocas of the caller,
but its marker cannot be removed. AAHeapToStack still moved an
allocation to the stack when it was passed to a musttail call, so the
callee got a pointer into a stack frame that no longer exists.
This PR treats such a use as a bad use. The free-based check still applies,
because an allocation that is always freed is freed before the musttail
call.
This PR was assisted by AI but I reviewed all the changes.
[libc][math] Refactor set_overflow and set_underflow from pow*_utils. (#239013)
- Refactor `set_overflow` and `set_underflow` from `pow*_utils.h` to
`except_value_utils.h`.
- Migrate most math functions to `fputil::set_overflow /
fputil::set_underflow`.
Assisted-by: Gemini