GlobalISel: Match loads by pointer operand in CombinerHelper
Add a load matcher that binds the pointer operand (like IR's m_Load), with
optional outputs for the load instruction and its MachineMemOperand via m_MMO.
Use it to replace the getVRegDef + dyn_cast idiom in the load combines.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
GlobalISel: Migrate misc. CombinerHelper def checks to MIPatternMatch
Replace getVRegDef + cast/opcode-check idioms across CombinerHelper
with mi_match, adding named instruction binders and operand-form matchers
as needed.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
[mlir][affine] Require a vector size in affine-super-vectorize (#171110)
Diagnose invocations that omit the `virtual-vector-size` option. A
vector rank is required to construct a vectorization pattern, so
accepting an empty size list would silently leave the input unchanged.
Check that vector sizes are present and positive before applying
rank-dependent constraints.
Fixes #114528
GlobalISel: Use MIPatternMatch in GIMatchTableExecutor
Replace the getVRegDef + opcode-check idiom in isBaseWithConstantOffset with
mi_match using m_GPtrAdd and m_GConstant.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
[lldb] Fix GetIndexOfChildWithName and GetChildMemberWithName on register sets (#212727)
And GetChildMemberWithName which had the same issue.
Fixes #211787.
Both of these methods were doing a lookup on the register info array as
a whole, rather than the subset of indexes into that array. That subset
of indexes is the "register set".
This lead to problems like this where index and name getters disagreed:
```
>>> lldb.frame.GetRegisters()[1].GetChildAtIndex(0)
(unsigned char __attribute__((ext_vector_type(16)))) v0 = (0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f)
>>> lldb.frame.GetRegisters()[1].GetIndexOfChildWithName("v0")
63
```
GetChildAtIndex told us that v0 was at index 0, but looking up v0 by
[18 lines not shown]
GlobalISel: Introduce m_GPtrAdd flags matcher in CombinerHelper (#216600)
Add an optional MIFlags output operand to the binary-op matcher and a
m_GPtrAdd(L, R, m_MIFlags(F)) overload, and use it to replace getVRegDef
+ opcode checks.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
[lldb-dap] Preserve watchpoints from console (#215228)
We should not delete watchpoints created via LLDB console when
processing DAP `setDataBreakpoints` request.
[Flang][OpenMP] PoC module support for allocate directives
This patch implements partial support for `allocate` on Fortran
module variables, based on adding global constructor functions for each
impacted variable.
Shared as a proof of concept, because I have a few concerns about it:
1. It appears that Clang ignores `allocate` directives on global
variables instead. Is that the expected behavior?
2. The existing implementation for `allocate` in Flang doesn't
actually impact where the memory used for a variable resides. It
allocates/deallocates extra memory for it using OpenMP internal
compiler calls but then that storage is never used. The original
alloca is still used. This addition suffers from the same issue:
global constructors allocate extra memory that is never used to
update in any way the associated global variable or its users.
3. No `omp.allocate_free` (should be `omp.allocate.free`) can be added
by this approach.
4. The representation of `omp.allocate_dir` (should be `omp.allocate`)
[10 lines not shown]
[Flang][OpenMP] Prevent allocate directive ICE on module variables (#216021)
The current lowering implementation for `allocate` directives assumes
the MLIR function in which it is creating operations will still be there
by finalization time, so that it can add a deallocation call.
When lowering Fortran modules, this is not the case (lowering happens in
a temporary dummy function) and it results in a compiler crash while
running cleanup callbacks. This patch adds a TODO for this case.
[mlir] Filter out failing tests when expensive checks are ON (#216323)
Adds logic to conditionally disable tests that fail when expensive
checks are enabled,
* -DMLIR_ENABLE_EXPENSIVE_PATTERN_API_CHECKS=ON.
When the expensive API checks are disabled, the newly marked tests
are run as usual.
This is a temporary measure to enable the introduction of a buildbot
that will run with expensive API checks enabled. No new tests disabled with
expensive checks should be added, i.e. tests with
* `XFAIL: mlir-expensive-checks`.
The existing failures marked in this PR should be fixed.
GitHub issue that reported these failures prior to this PR:
* https://github.com/llvm/llvm-project/issues/163599
[libc] Fix FreeBSD build for 53-bit-rounded fp80s (#216332)
Fix build issues on FreeBSD, which reports `LDBL_MANT_DIG == 53` for
`long double` on some targets despite using fp80 as the underlying type.
This is because it stores the value as an fp80, but configures the FPU
to round the mantissa to 53-bits. However, this causes some parts of
libc to misidentify the fp80 as an fp64 since both use a 53-bit
mantissa. This led to build issues on FreeBSD when trying to bitcast the
12-byte `FPBits<long double>` to an 8-byte fp64 value.
This is fixed by checking both the mantissa size and the exponent range
when determining the correct format for `long double`. Also, move the
check for this to a single place in `types.h`, rather than re-checking
the `LDBL_MANT_DIG` and `LDBL_MAX_EXP` values in `FPBits.h`.
[APFloat] Report the sign and the zero a conversion cannot represent (#216056)
`APFloat::convert` reports through `losesInfo` what rounding lost, but
not what
the target format has no encoding for at all. Two properties of a format
are not
rounding:
| property | formats today | what happens |
|---|---|---|
| `hasSignedRepr == false` | `f8E8M0FNU`, `f8E5M3FNU` | the sign bit is
carried into a format with no room for it |
| `hasZero == false` | `f8E8M0FNU` | zero is replaced by the smallest
normalized value, 2^-127 |
Both were reported as `opOK` with `losesInfo == false`. Callers gate on
`losesInfo` -- that is how `arith.truncf`'s folder decides whether a
constant
fold is legal -- so they kept a value the format cannot hold.
[84 lines not shown]
ix(4): Remove workaround for 2.5/5G speeds on E610
The problem observed on X550 adapters with 2.5 and 5 Gbps speeds
negotiation on some switches is not affecting E610 adapters.
Remove workaround, which omitted those speeds in the list
of initially advertised speeds and advertise all speeds
supported by adapter.
Signed-off-by: Krzysztof Galazka <krzysztof.galazka at intel.com>
Reviewed by: kbowling
Tested by: Mateusz Moga <mateusz.moga at intel.com>
MFC after: 1 week
Sponsored by: Intel Corporation
Differential Revision: https://reviews.freebsd.org/D57339
[MLIR][NVVM] Spell strict assembly properties directly
Bind every NVVM inherent property in its operation assembly format and
re-enable strict property parsing for the dialect. Use direct named clauses
for declarative formats and custom MMA parsers while retaining dictionaries
for discardable attributes.
Assisted-by: Codex
Mk/bsd.port.mk: fix install-missing-packages without a tty
install-missing-packages runs xargs with -o, which reopens stdin from
/dev/tty so that pkg can prompt interactively. In automated or batch
runs there is no controlling terminal, so xargs fails with "can't open
/dev/tty: Device not configured".
Make the -o flag conditional on BATCH: keep the interactive pkg prompt
outside BATCH, and use pkg install -yA (auto-confirm) inside BATCH.
PR: 267416
Reported by: patmaddox at FreeBSD.org
py-fastjsonschema: updated to 2.22.2
2.22.2
* Fixed wrong results of anyOf, oneOf, not, if/then/else, contains and propertyNames when `fast_fail` is off
* Fixed collecting errors from subschemas behind `$ref` when `fast_fail` is off
* Fixed escaping property name in boolean `dependencies` validation (prevents schema-controlled code injection)
py-project-api: updated to 1.11.0
1.11.0
Adds support for Python 3.15 and 3.15t, and fixes a race in
SubprocessCmdStatus.done: it keyed off returncode, which communicate() sets
before the thread stores the output, so a poller could reach out_err() while it
was still None (free-threaded builds hit this window). done now reports
finished only once the output is stored
[mlir][gpu] Fix L0_SAFE_CALL in LevelZero runtime (#215308)
Using NULL as `RTContext` can lead to crashes when calling
`zeDriverGetLastErrorDescription`.
Now using `getRtContext()` instead.
Mk/Scripts/do-depends.sh: summarize dependency errors
Accumulate and number dependency resolution errors in do-depends.sh
instead of only setting a flag, so that a clear summary of all errors
is printed at the end of the run rather than being buried in the
output of the dependency traversal. (#257069)
Add a record_error() helper that increments an error counter, prints
each error to stderr, and accumulates the messages for the final
summary. Use printf "%b" with a literal format string to avoid
interpreting user-controlled data (origins, patterns) as format
specifiers.
PR: 257069
Submitted by: sobomax at FreeBSD.org