[MLIR][PDLInterp] Enable strict property assembly format (#217293)
Enable the strict properties assembly format mode for the PDLInterp
dialect. Spell the default-valued isNegated attribute directly in the
assembly format so it is no longer parsed from attr-dict in strict mode.
Assisted-by: Codex
[MLIR][OpenMP] DeclareTargetInterface and DeclareTargetAttr cleanup, NFCI
The changes introduced by this patch are intended to avoid triggering
multiple by name lookups to the "omp.declare_target" attribute every
time any data from the `DeclareTargetInterface` is queried, remove the
need for keeping multiple default values for the same data, clean up
the assembly format and generally improve the usage of the interface.
List of changes:
- `DeclareTargetInterface` only provides `setDeclareTarget` and
`getDeclareTarget` methods to handle the "omp.declare_target"
attribute, maintaining a single canonical way of accessing it.
- `DeclareTargetAttr` provides direct access to the capture clause and
device type enums, rather than wrapping them into an `Attribute`.
These are now mandatory as well. Both changes together make accessing
them more straightforward and simplify the attribute representation.
[flang][OpenMP] Reuse canonical default mapper names for nested mappings - fix issue #210402 (#212251)
Summary
Fix issue #210402: [FLANG][OMP] flang compiled application failed with
core dumped at Kernel 'omp target in _QQmain @ 28
(__omp_offloading_3a_5aca0b86__QQmain_l28)' -- Flang OpenMP nested
implicit default-mapper naming so it reuses the same canonical symbol
naming scheme as explicit declare mapper(default: ...) lowering.
Problem
For nested derived types, implicit mapper generation could derive a
mapper symbol from FIR record names that did not match the explicit
mapper naming path. That mismatch could create a second synthesized
mapper, skip intended pointer-component mapping behavior, and lead to
runtime offload faults.
Changes
Add a canonical mapper-name helper:
getCanonicalDefaultDeclareMapperName(fir::RecordType)
[10 lines not shown]
[MLIR][PDL] Enable strict property assembly format (#217296)
Enable the strict properties assembly format mode for the PDL dialect.
Spell the default-valued isNegated attribute directly in the assembly
format so it is no longer parsed from attr-dict in strict mode.
Assisted-by: Codex
[MLIR][OpenMP] Add verification for DeclareTargetInterface
This patch introduces checks to ensure the "omp.declare_target"
attribute is only attached to `DeclareTargetInterface` operations, it is
always the right type attribute and its properties do not conflict with
the operation they are attached to.
ExpandIRInsts: Expand frem when the libcall is unavailable
The legalizer actions have a distinct LibCall kind, separate
from Expand. If the target specifies LibCall, but the call is not
available, fall back to expand. The action is a fixed property
of the subtarget, but the library call availability in the future
will be program state that depends on module flags.
The test is underhanded and exploits a defect in llc's -march
flag handling. Since the library call set is computed from the Module's
triple, and the module has no triple, the computed libcall set is
empty for the apparently unknown arch. Any real triple will have
an frem call, so the only observable case is this buggy -march case.
In the future module flags will be able to remove the call from
the usable set.
Co-authored-by: Claude (Claude-Opus-4.8)
SPARC: Disable generic codegen tests that depend on libcalls (#217264)
The module doesn't get the triple set without any target argument,
so the assumed set of libcalls is empty
[MLIR][NVGPU] Enable strict property assembly format (#217272)
Enable strict property assembly format mode for the NVGPU dialect. Spell
ldmatrix, MMA, async copy, async wait, and warpgroup MMA properties
directly in the affected declarative assembly formats.
Refresh NVGPU dialect, conversion, integration, and Python tests so
those properties use direct syntax while ordinary attributes remain in
attr-dict.
Assisted-by: Codex
[MLIR][Arith] Enable strict property assembly format (NFC) (#217267)
Enable the strict properties assembly format mode for the Arith dialect.
Update tests that still used attr-dict spelling for fastmath attributes
to use the existing declarative fastmath assembly form.
Assisted-by: Codex
net/zsync: Update 0.6.3 => 0.6.6, take maintainership
Change in 0.6.6
- Support and generate zsync 0.8 control files.
- Support MD5 and SHA-224 block checksums.
- Support SHA-256 file hash.
- Use OpenSSL for cryptgraphic digests.
Changes in 0.6.5
- Fix an incompatibility between zsync and the RFC7233 rules for
multipart/byteranges. zsync was written to RFC2046 a long time ago,
now obsolete; responses from newer HTTP servers following the newer
standard could cause zsync to fail to parse the response. zsync also
was not treating failing to find the MIME boundary as a hard error and
retrying indefinitely; changed to report this as an error.
Changes in 0.6.4
- Support for looking inside gzip files is deprecated; all options
related to compressed files are correspondingly deprecated except -Z.
[20 lines not shown]
[MLIR][Async] Enable strict property assembly format (#217268)
Enable the strict properties assembly format mode for the Async dialect.
Spell call argument/result attribute arrays and runtime reference counts
directly in assembly formats so they are not parsed from attr-dict in
strict mode.
Assisted-by: Codex
[MLIR][Bufferization] Enable strict property assembly format (#217270)
Enable strict properties-in-assembly-format mode for Bufferization.
Update the remaining test case that spelled the read_only inherent
attribute through attr-dict so it uses the declarative keyword form.
Assisted-by: Codex
[SCEV] Directly use NUW on mul in getUDivExpr (NFC) (#217235)
Eliminate the roundabout and expensive zero extend expressions, and use
the wrap flags on the expression directly.
Proof: https://alive2.llvm.org/ce/z/-NnV2C
[X86] Narrow vXi32/vXi64 usubsat to vpsubusb/vpsubusw when LHS is known to fit in fewer bits (#206592)
When both operands of a wide vector USUBSAT are known (via KnownBits
analysis) to fit within a narrower type, reinterpret the operation as a
narrower saturating subtract instead. x86 has native vpsubusb/vpsubusw
instructions but no vpsubusd/vpsubusq, so wide USUBSAT on i32/i64 lanes
is currently emulated with vpmaxu* + vsub*, requiring two instructions.
- The transformation searches for the smallest power-of-2 narrow width
(starting at 8) where both operands are proven to fit via
computeKnownBits. Both operands are then bitcast to the narrow vector
type and a single vpsubusb/vpsubusw is emitted — no mask, no extra
constant, strictly fewer instructions on every target.
For example, llvm.usub.sat.v8i32 where both LHS and RHS are masked to 8
bits:
```
Before:
[16 lines not shown]
[InstCombine] Fold length-one memset with variable fillFold length-one memset with variable fill (#217224)
A one-byte memset does not require replicating the fill byte into a
wider integer value. Allow a nonconstant i8 fill value to be stored
directly when the memset length is one.
Keep the existing constant-fill handling for lengths 1, 2, 4 and 8.
Preserve volatility and unordered atomic ordering on the generated
store.
This is the InstCombine prerequisite for #213027.
Assisted-by: GPT-5
[flang][Lower] Reassociate nested assignment sums
Search eligible assignment RHS expressions top-down for scalar REAL
and COMPLEX additive spines. Rewrite a qualifying node once; otherwise
recurse through ordinary operations, conversions, conditional wrappers,
and separate arguments of pure calls. Preserve effect-sensitive
boundaries.
Rename the public rewrite entry point to reflect recursive behavior. Add
coverage for nested conversions, conditions, direct and conditional call
arguments, parentheses, impure calls, short sums, single rewriting, and
contexts outside assignments.
Assisted-by: Codex
[flang][Lower] Reassociate sums before kind conversion
Handle one REAL or COMPLEX kind conversion around an eligible sum.
Leave the conversion around the rebuilt expression.
Keep conversions embedded in mixed-kind trees ineligible.
Tests cover enabled and disabled lowering for both numeric categories.
Assisted-by: Codex
[flang][Lower] Reassociate sums containing pure calls
Allow pure procedure references to remain opaque terms while splitting
an additive expression. Continue rejecting impure calls and expressions
that reference volatile or asynchronous objects.
Add lowering coverage for movable pure calls, opaque additive arguments,
impure calls, and volatile actual arguments.
Assisted-by: Codex
NAS-142191 / 27.0.0-BETA.1 / Don't swallow app upgrade failures in upgrade_impl (#19506)
## Problem
`upgrade_impl()` returns from inside a `finally` block, which discards
any exception raised by `pull_images_internal()`. For custom apps the
`or app.custom_app` condition makes that branch unconditional, so a
failed `docker compose pull` gets reported to the user as a successful
upgrade.
What you see: the Update job finishes in about a second with state
SUCCESS and progress "App successfully upgraded and redeployed", then
the update badge reappears. The real error only lands in
`/var/log/app_lifecycle.log`.
The wrong status also hides two steps that get skipped when the pull
raises, both sitting after `compose_action()` in
`pull_images_internal()`: the `clear_update_flag_for_tag` loop and
`app.redeploy`. So the app isn't recreated and the update flag stays
[29 lines not shown]