[OpenACC] Wrap multi-block acc.loop bodies in scf.execute_region (#238974)
convertACCLoopToSCFFor always cloned the loop body directly into the
innermost scf.for. cloneACCRegionInto only handles single-block regions,
so a structured acc.loop whose body has more than one block hit an
unreachable in the orphan-loop path of acc-specialize-for-host.
Wrap multi-block bodies in scf.execute_region, as
convertACCLoopToSCFParallel already does. Single-block bodies are still
cloned directly into the scf.for, so existing output is unchanged.
Add a unit test for a two-block body and a acc-specialize-for-host check
for an orphan multi-block loop.
[CLANG][OpenMP] Restore loop variable values after transformation directives (#214717)
This patch fixes loop variable finalization for OpenMP 6.0
loop-transformations constructs: tile, stripe, reverse, interchange and
fuse to comply with spec requirement page 371, lines 19-21. The spec
requires that "After the execution of the loop-transforming construct,
the loop-iteration variables of any of its transformation-affected loops
have the values that they would have without the loop-transforming
directive".
[mlir][bufferization] Drop unused MLIRSparseTensorDialect dependency (NFC)
MLIRBufferizationDialect has not used anything from the sparse tensor
dialect since #85482 removed the sparse-specific verification of
bufferization.alloc_tensor, and #147549 removed the last include of
SparseTensor.h. Drop the stale link dependency.
Co-authored-by: Claude <noreply at anthropic.com>
[AMDGPU][True16] Don't narrow 32-bit uses when folding a VGPR-to-SGPR copy
True16 has no 16-bit SGPRs, so a 16-bit VGPR value is copied into a
32-bit SGPR:
%3:sreg_32 = COPY %2.lo16:vgpr_32
Since #211848, moveToVALU removes this copy by replacing every use of %3
with %2.lo16. Uses that read all 32 bits become malformed, e.g. a PHI:
%5:vgpr_32 = PHI %x, %bb.0, %2.lo16, %bb.1
DetectDeadLanes then treats %2 as dead, and the load defining it is
deleted. On gfx1250 this drops the conditional f16 load of alpha/beta
in rocSPARSE and rocBLAS kernels in device pointer mode.
Now uses that read 16 bits, including %3.lo16, get %2.lo16. Uses that
read 32 bits get one 32-bit value built at the copy with REG_SEQUENCE.
[6 lines not shown]
[AMDGPU][NFC] Add a helper to widen a 16-bit VGPR value to 32 bits
Three places in SIInstrInfo and SIFixSGPRCopies build the same sequence
to put a 16-bit value into the low half of a 32-bit VGPR:
%undef:vgpr_16 = IMPLICIT_DEF
%dst:vgpr_32 = REG_SEQUENCE %src.sub, %subreg.lo16, %undef, %subreg.hi16
Move it into SIInstrInfo::buildVGPR32FromLo16(). The source subregister
is a parameter, so callers can't silently drop it.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[AMDGPU][NFC] Pre-commit tests for true16 VGPR-to-SGPR copies of 16-bit subregs
Add tests for VGPR-to-SGPR copies of a 16-bit VGPR subregister in
true16 mode. The current output is wrong in all of them:
- v2s_copy_lo16_phi (MIR) and true16-v2s-copy-subreg-phi.ll: a 32-bit
PHI gets a 16-bit subregister operand (%src.lo16). On gfx1250 the
conditional f16 load feeding the PHI is then deleted.
- v2s_copy_hi16_through_sgpr32 (MIR): a copy of %src.hi16 ends up
reading %src.lo16.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[AMDGPU] Stop publishing reserved registers from AMDGPUReserveWWMRegs (#237446)
Since #226523, the register allocators publish the reserved register set
they
freeze to the shared RegisterClassInfo. That makes the publication in
AMDGPUReserveWWMRegs redundant: it recomputes the set with
TRI->getReservedRegs(), and the VGPR allocator republishes the same set
right
after it.
The first commit asserts at the entry of AMDGPURewriteAGPRCopyMFMA, the
consumer
that was handed a reserved register before #221849, that the analysis
matches
MRI's frozen set. It adds RegisterClassInfo::hasCurrentReservedRegs()
for the
comparison. check-llvm passes with it; without the allocators'
publication,
many AMDGPU tests trip it, whereas no test notices without the
[9 lines not shown]
[MLIR][Bytecode] Fix test failure depending on version length (#239179)
This test is testing alignment, and would fail whenever the version
string (which is embedded in the bytecode as the producer) ended up
putting the resource section at a 32-byte aligned offset. This doesn't
happen with the default producer string, but can happen with an unlucky
value of `LLVM_VERSION_SUFFIX`.
Fixes an issue that was exposed by
https://github.com/llvm/llvm-project/pull/222776.
devel/opencl-clang: add LLVM 18-22 support
Remove blanket deprecation and replace with deprecation of flavors using
LLVM < 19 (current LLVM_DEFAULT). (brooks)
PR: 293448
Co-authored-by: Brooks Davis <brooks at FreeBSD.org>
Co-authored-by: Hiroo Ono <hiroo.ono+freebsd at gmail.com>
www/worldmonitor: Update to 2.11.8
Upstream now has settings for the bind address of the Redis REST proxy
and the relay, fixes the User-Agent for Overpass and pins the Lua
scripts of the military bases seeder. Drop our patches for these.
A Pro subscriber can now unlock the Pro panels with a desktop key,
install the file this needs.
Changelog: https://github.com/koala73/worldmonitor/releases/tag/v2.11.8
Sponsored by: Netzkommune GmbH
[mlir][ODS] Include headers required by generated enum declarations and definitions
Generated enum declarations and definitions use C++ constructs that are
not declared by any header they include. They therefore relied on the
surrounding source file to include these headers first.
The enum declarations and definitions now include the headers declaring
these constructs, depending on the features of the enums.
The declarations still only forward declare `AsmParser` and `FieldParser`
to keep the generated headers cheap to include.
Similar to #236155 and #238735 but for the enum generator.
Co-authored-by: Claude <noreply at anthropic.com>
[mlir] remove dead values: don't remove used symbols (#238760)
This was hitherto accidental for functions and region-carrying globals,
make it intentional. In a custom dialect, one may have a side effect
free global-like operation with a symbol referenced from elsewhere in
the translation unit. We don't want that to be removed.
Assisted-by: Gemini 4 Argon
textproc/elasticsearch8: Fix path to distfiles in LOCAL
While here fix whitespaces in one patch.
PR: 288653
Approved by: blanket (fix fetch)
Reported by: linus.sundqvist at loopia.se
Sponsored by: UNIS Labs
MFH: 2026Q4
(cherry picked from commit abde9a63044975aa2d41da654e437c17196864e2)
textproc/elasticsearch8: Fix path to distfiles in LOCAL
While here fix whitespaces in one patch.
PR: 288653
Approved by: blanket (fix fetch)
Reported by: linus.sundqvist at loopia.se
Sponsored by: UNIS Labs
MFH: 2026Q4
[clang][LoongArch] Pick the default ABI of environment-less triples from the architecture (#231441)
For a LoongArch triple without an environment, such as
loongarch32-unknown-none-elf, the
driver defaults to the double-float ABI (ilp32d), but none of the 32-bit
architectures
(loongarch32, la32v1.0, la32rv1.0) has an FPU, so the driver passes
`-target-abi ilp32d`
together with features that cannot implement it. Compiling anything then
warns:
```
warning: both target-abi and the triple-implied ABI are invalid, ignoring and using feature-implied ABI
```
and the parts disagree on the ABI: the backend falls back to ilp32s,
while clang lowers calls
and defines the predefined macros for ilp32d (`__loongarch_double_float`
is 1 while
[14 lines not shown]
[LoongArch] Load scalars into vector lane 0 with FLD/VLDREPL (#234119)
Inserting a loaded integer into lane 0 of an undefined vector, which is
also how sub-128-bit vector loads are legalized, was lowered to a scalar
load plus [X]VINSGR2VR. VINSGR2VR merges into its destination, so it
carries a false dependency on the previous value of that register, and
it needs a GPR-to-vector move.
Use FLD.{S/D} for 32/64-bit elements and [X]VLDREPL.{B/H} for 8/16-bit
elements instead. They write the whole register in one instruction.
When the register allocator reuses one vector register for several such
loads, the false dependency serializes otherwise independent chains. In
the GSM autocorrelation loop (9 x i64 multiply-accumulate over i16 taps)
on LA664:
VF2: 0.953s -> 0.724s
VF4: 1.446s -> 0.856s
[hlsl][spirv] Add late pass in spirv backend to remove dead resources (#225270)
Add a pass to remove unused resource handle intrinsics and unused global
variables used to store these handles.
Also remove stores to aforementioned globals that are generated by Clang
as initializers as well as string names only used in dead handle calls.
Based on DXILUnusedResources pass, but differs by removing a resource
global variable if dead regardless of whether the corresponding handle
intrinsic used in its initializer is dead.
Assisted by: codex
[analyzer] Handle null nodes from CheckerContext node creation (#238414)
Node creation (addTransition, addSink, generateNonFatalErrorNode)
returns null when the node already exists or the state is
overconstrained. Several callers dereferenced or reported against the
result unchecked.
Fixes:
- NullabilityChecker: reportBugIfInvariantHolds got null from 4 callers
and from its own addTransition
- DynamicTypeChecker, DynamicTypePropagation, PutenvStackArrayChecker
- Unit test checkers that fed addSink() into a bug report unchecked
Authored-By: Claude
[flang][OpenACC] Fix remapping of SELECT TYPE associate names in data clauses
Using the associate name of an allocatable or pointer SELECT TYPE selector
in an OpenACC data clause hit an assertion while lowering, because the
associate name's descriptor type still marked it allocatable or pointer
while the data clause's did not. Convert between the two descriptor types
when they differ only in that way.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
biology/seaview: Improve port, take maintainership
* Switch MASTER_SITES to official site
* Use localbase for locating FLTK
* Prefer static patching of CC/CXX over dynamic one
* Remove old workaround for 'boolean javarun;' in csrc/phylip.c
* Pet portclippy(1) and portfmt(1)
* Improve pkg-descr
MFH: 2026Q4
(cherry picked from commit c4293503664000a6914433a870dd0edd3d023b08)