dashboard: ensure controller updates front-end state in case of a reset
This prevents the edge case of changing user permissions producing either
broken widgets or widgets that are missing.
Handle multiple uncm(4) notifications per interrupt.
Diff from Mikolaj Kucharski, who wrote:
CDC 1.2 defines notifications as an 8-byte header carrying the length of
the data that follows. I don't know how notifications map to transfers.
uncm_intr() assumes exactly one per transfer and silently ignores
anything after it. This walks the buffer by wLength, with every read
bounds-checked against the received length.
ok Jan Schreiber (uncm author), and myself
[orc-rt] Complete the static/global x load/store data tests. (#231853)
Binding affects which fixups a store uses: static data is always
addressed directly, so the store carries a fixup, while global data may
be addressed through the GOT. Add static-data-store.c to cover the
former, and global-data-load.c to complete the grid.
Update the Stresses: lines to say what each test checks: load tests
check the section's initial contents, and store tests check that it is
writable.
[mlir][tosa] Lower MATMUL_T to Linalg (#222661)
Broadcast a singleton RHS batch explicitly before lowering
floating-point operations to linalg.batch_matmul_transpose_b. Lower
quantized operations with linalg.generic so zero-point adjustment is
represented in the reduction.
Assisted-by: Codex
[AMDGPU] Preserve noclobber after acquire operations from a different addrspace
Follow-up to #219991 to address reviewer comments:
AMDGPUAnnotateUniformValues should annotate uniform global loads as
`!amdgpu.noclobber` if the memory they are reading is never clobbered (since
kernel launch) before the load is executed.
PR #219991 strengthened the logic to consider acquire operations before the
load as clobbering (because they cause stores from other threads to be observed
by the load without a data race).
This PR weakens this criterion to ignore acquire operations that don't affect
the global address space (because they don't affect what the load in question
may or may not see). This addresses the performance-relevant case of s_barriers
with LDS-only fences.
The logic is still overly pessimistic for one-as load acquires, they could also
be ignored when looking for clobbering operations.
Disclaimer: Claude gave review comments and suggestions that I addressed during
[5 lines not shown]
[NFC][analyzer] Remove guaranteedNotToCloseFile from SimpleStreamChecker (#230288)
`SimpleStreamChecker` is a "demo checker", a simplified variant of
`StreamChecker` which can be used to demonstrate the architecture of a
checker without getting bogged down in the technical details.
Despite this, the `checkPointerEscape()` callback was more complex in
`SimpleStreamChecker` than in `StreamChecker`. (The complex callback in
`SimpleStreamChecker` was present since 2012, the simpler callback in
`StreamChecker` was only added in 2020.) This commit rectifies this by
replacing the logic in `SimpleStreamChecker` with the simpler logic
taken from `StreamChecker`.
As `SimpleStreamChecker` is just an educational tool and not used in
production, the impact of this change is very limited.
The motivation for this simplification is that it removes a reference to
`CallEvent::argumentsMayEscape()`, which prepares the ground for #225489
to inline that method into `MallocChecker` (the only place where its
logic is really useful).
[LifetimeSafety] Add warning for member functions returning field origins (#229784)
This patch introduces an opt-in `-Wexperimental-lifetime-safety-field-origin-escape`
diagnostic in Lifetime Safety to detect non-constructor instance methods
whose return value depends on the origin of a reference, pointer, or
view field rather than the lifetime of the enclosing object (`*this`).
To support this, placeholder loans are issued for origin-carrying fields
(`$this.field`) during analysis of instance methods, distinguishing
between returning a borrow of a field's storage (which depends on
`*this` and warrants `[[clang::lifetimebound]]`) and returning a value
derived from a field's origin (where the returned reference or view
outlives the wrapper object and instead depends on the underlying
referent).
This diagnostic helps identify wrapper/view methods where
`[[clang::lifetimebound]]` cannot express the true lifetime
contract—annotating such methods with `[[clang::lifetimebound]]` would
cause false-positive use-after-scope warnings when a temporary wrapper
is destroyed while its underlying referent remains alive, whereas
[6 lines not shown]
[lldb][test] Fix TestWriteOverSoftwareBreakpoint (#231850)
After the changes made in #230518. They are correct, but broke an
assumption that I had made that there would be no live code between the
set of nops and the breakpoint location.
Before:
730: d503201f nop
734: 14000001 b 738 <place_break_here>
0000000000000738 <place_break_here>:
That "b" is dead code, but -
After:
73c: d503201f nop
740: 14000001 b 744 <foo+0x30>
744: b9400fe0 ldr w0, [sp, #12]
0000000000000748 <place_break_here>:
748: d503201f nop
[10 lines not shown]
[mlir][SPIR-V] Add ComplexToSPIRV lowering for complex.sign (#216722)
Computes complex.sign as z / abs(z), using a component-wise spirv.Select
to pick a zero result when z is zero without requiring SPIR-V 1.4 (a
vector-result Select would need a scalar condition paired with a
composite result, which is only legal from 1.4 on)
[mlir][vector] Document dimension kinds in `vector.contract` (NFC) (#230458)
Add a table to the `vector.contract` description summarizing _batch_,
_free_, _contracting_, and _single-operand reduction_ dimensions.
The terminology matches `linalg.contract` and [TensorFlow's einsum
implementation](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/util/einsum_op_util.h#L28-L46),
as suggested by @banach-space.
Related to #230155, issue identified in #228971 (and #229824).
---------
Signed-off-by: Federico Bruzzone <federico.bruzzone.i at gmail.com>