[Sema] Call ActOnFields before late parsing in ParseStructUnionBody (#187166)
Implements for: #186914
Move the call to `ActOnFields()` before `ParseLexedCAttributeList()` in
ParseStructUnionBody for reordering so that the struct type is complete
when late-parsed attributes like counted_by get evaluated. This is a
prerequisite for supporting sizeof/offsetof expressions in counted_by
evaluation.
Update the heuristic for `GetEnclosingNamedOrTopAnonRecord`. Remove the
`isCompleteDefinition()` condition since it will always return true
under the new ordering. The `GetEnclosingNamedOrTopAnonRecord` intend to
treat the unnamed and anonymous struct permissively.
Add one test to verify the new ordering still make sure the function of
unnamed and anonymous struct works normally.
[GlobalISel] Recursively Optimise MatchTable Matchers (#197143)
The core of this change is the additional call to `Matcher::optimize()`
in the `optimizeRules` function,
which enables the match table optimization logic to recurse on the
children of every GroupMatcher, forming
additional groups (which hoist more common predicates into a shared
group).
To enable that, I had to update the `getFirstConditionAsRootType`
implementation to support `GroupMatcher`.
I also included a small refactoring of the match table optimization
pipeline that was identical between the
GlobalISel and GlobalISelCombiner emitters.
The results of this change are up to a 25% size reduction for GlobalISel
match tables.
There is a tiny increase (a few bytes) in a combiner table because we
now create new groups
[16 lines not shown]
[AMDGPU] Clamp load_monitor scope to minimum SCOPE_SE
The load_monitor instructions monitor L2 cache lines and therefore require at
least SCOPE_SE to ensure the L2 cache is hit. The current memory model requires
the user to ensure that the specified scope is such that it results in at least
SCOPE_SE, otherwise the behaviour is undefined. Instead, we now clamp the
emitted scope at a minimum of SCOPE_SE, so that the undefined behaviour is
converted into a performance loss instead.
Assisted-By: Claude Opus 4.6
[mlir][spirv] Set signed coop matrix operands (#197932)
Populate CooperativeMatrixOperandsKHR on KHR cooperative matrix
multiply-add based on the cooperative matrix element types. Signed
integer A, B, C and result matrices require their corresponding signed
component bits; otherwise SPIR-V treats those integer components as
unsigned.
Added lit test
Co-authored-by: Hsiangkai Wang <hsiangkai.wang at arm.com>
[libc] Introduce a typed syscall wrapper and use it in mmap (#197459)
Linux reserves a range of values (everything above -4096u, aka
MAX_ERRNO) as an error value, so the check can be performed without
knowing the details of the specific syscall. libc functions where these
values would be a valid result (e.g. PTRACE_PEEKDATA) are implemented
differently at the kernel level (e.g. returning the result through a
pointer argument). The only exception are a handful of syscalls (getpid,
getuid, ...) which can never fail, and where this could be an actual
user/group ID (particularly on 32-bit systems).
Specifically, for mmap, this lets us remove the is_valid_mmap helper and
SYS_mmap2 ifdefs in various places.
More generally, this can simplify many syscall wrappers as often the
only thing they are doing is converting the return value into an
ErrorOr.
libXi: update to 1.8.3.
libXi 1.8.3 is now available. This release fixes an issue with
potentially uninitialized memory if auxiliary events (DeviceValuatorNotify,
KeyStateNotify, ButtonStateNotify) are received when the event they
are supposed to follow got lost.
[MLIR][NVVM] Add sqrt Ops (#197422)
Adds two NVVM dialect ops covering all 14 floating-point `sqrt` forms:
- `nvvm.sqrt` -- IEEE-compliant sqrt with explicit rounding mode
(`sqrt.<RM>[.ftz].{f32,f64}`), 12 forms.
- `nvvm.sqrt.approx` -- fast approximate sqrt (`sqrt.approx[.ftz].f32`),
2 forms; uses the `NVVM_F32UnaryApproxOp` base class.
The two ops are split because the rounded forms require an explicit rounding mode and support both f32 and f64, while the approx forms have no rounding mode and are f32-only.
glib2-introspection: depend on latest gobject-introspection
just to make sure we get a consistent package set if the
gobject-introspection change is problematic after all.
Bump PKGREVISION.
gobject-introspection: remove patches that seem unneeded
No change to gobject-introspection or glib2-introspection
(except the actual change in maintransformer.py)
Bump PKGREVISION.