[SystemZ] Split SystemZAsmPrinter into 2 classes - ELF and XPLink (#214343)
This PR splits the ELF and XPLink implementations in the
SystemZAsmPrinter into 2 new classes. Each new class is derived from the
SystemZAsmPrinter class. This is to avoid adding `isOSzOS()` checks in
multiple places in SystemZAsmPrinter.
---------
Co-authored-by: Yusra Syeda <yusra.syeda at ibm.com>
[SPIRV] Legalize byte-buffer reinterpretation ptrcasts (#192523) (#212999)
Fixes #192523 by extending SPIRVLegalizePointerCast to legalize
reinterpretation spv.ptrcasts on byte-addressable buffers ([0 x i8] /
RWByteAddressBuffer). When Clang emits a typed load or store through
such a pointer (e.g. i32, <4 x i32>), the pass now lowers it to valid
logical SPIR-V instead of hitting an unreachable or producing invalid
OpAccessChain into uchar storage.
For HLSL/Vulkan byte-address buffers, codegen produced IR like:
1. spv.resource.getpointer → pointer tagged as i8 byte storage
2. spv.ptrcast → pointer tagged as the access type (i32, vector, etc.)
3. Typed load/store through the cast
The existing legalizer only handled aggregate layout mismatches (GEP
drilling, partial vector loads). When getPointerToFirstCompatibleType()
found no compatible nested type—as with flat byte buffers—it hit
llvm_unreachable.
[15 lines not shown]
CI: Add tzdata, libcap-utils, and ksh93's stable branch to Alpine
Missing tzdata silently breaks history_007_pos's TZ-dependent timestamp
check (stays in UTC instead of shifting). Missing libcap-utils breaks
zoned_uid_common.kshlib's capsh-based tests ("unshare: failed to
execute"). And building ksh93 from its unpinned "dev" branch, rather
than the stable "1.0" branch, causes musl crashes in ksh93's own
environment-building code, hit by the zpool_iostat/zpool_status "-c"
custom-script tests.
Combined into one commit since all three touch the same function in
qemu-3-deps-vm.sh.
Fixes the following tests on Alpine 3.24:
- history/history_007_pos
- zoned_uid/zoned_uid_023_pos
- zoned_uid/zoned_uid_025_pos
- zoned_uid/zoned_uid_026_pos
- zoned_uid/zoned_uid_030_pos
[10 lines not shown]
devel/opencircuitx: Add new port
OpenCircuitX is a free, open-source EDA (Electronic Design Automation)
platform for VHDL and Verilog: the hardware description languages (HDL)
used to design digital logic. It is developed by OpenLabX and unifies an
IDE-quality HDL editor, a visual circuit canvas, an RTL schematic
viewer, a waveform viewer, and a full FPGA toolchain in one window, for
hardware engineers, students, and FPGA hobbyists alike.
PR: 297258
[MachinePipeliner] Increase the default maximum MII to 256
The pipeliner rejects a loop whose minimum initiation interval exceeds
-pipeliner-max-mii. Its default of 27 suits targets with short instruction
latencies, but is too small for others: on AMDGPU a couple of MFMA
instructions already push the MII past it, so the loop never pipelines.
Increase the default limit from 27 to 256. An explicit -pipeliner-max-mii
still overrides the default.
[AMDGPU] Configure the software pipeliner policy
Set the pipeliner policy in overridePipelinerPolicy() to opt into the generic
register-pressure detector.
Schedules exceeding the target-provided pressure-set limits are rejected and
retried at a higher II.
[SPIRV][Matrix] Legalize ICmp and Fcmp (#218467)
fixes https://github.com/llvm/llvm-project/issues/218444
Simple fix we just need to apply the same fewerElementsIf change we have
done for other Global opcodes. This is going to feel like wack-a-mole
for a bit but the fix will be generally the same everytime.
[libc++] Remove the historical benchmarking utilities (#217978)
benchmark-historical, visualize-historical and find-rerun-candidates
were built around storing historical benchmark data int a local
directory. We now store it in LNT instead.
[AArch64ISel] Lower dup(bitcast) to duplane(insert_elt(bitcast)) (#217931)
`performDUPCombine` in AArch64 ISel has been updated to lower
`dup(bitcast)` to `duplane(insert_vector_elt(poison, bitcast, 0), 0)` to
eliminate roundtrip to GPRs.
[lldb] Harden register type XML serialization (#218503)
This is patch 1/5 preparing LLDB's register-type infrastructure for GDB
XML vector types.
- Deduplicate emitted type definitions by XML ID instead of object
address.
- Centralize XML attribute escaping in `RegisterType`.
- Escape enum, flags, field-reference, and register type IDs.
- Add missing `&` escaping to LLGS XML attributes.
XML references identify types by their textual ID, so separate objects
with the same ID must not produce duplicate definitions.
Co-authored-by: Bar Soloveychik <barsolo at fb.com>
[ExtractAPI] Deterministically emit macros (#215381)
Macros are processed by iterating over the preprocessor's stored
`DenseMap`, which is pointer-keyed with `IdentifierInfo`. This map is
not ordered, leading to the contents of the symbol graph changing across
runs with identical inputs. Sort macros lexicographically by name to
ensure consistent output.
rdar://184545768
[Transforms] Remove unused wouldInstructionBeTriviallyDeadOnUnusedPaths (#218609)
This function was added on Dec 1, 2021 in commit
72750f00121eb10f27ccd62270e5695d9e3322a5 without any callers and has
remained unused since.
[CIR] Lower records carrying a vptr for x86_64 (#218457)
A record carrying a vtable pointer could not be passed or returned by
value. `isSupportedType` had no case for `!cir.vptr`, so the whole
signature was reported NYI. That covers any class with a virtual
function or a virtual base.
Accept the type and map it to an `llvm::abi::PointerType`.
A record CIRGen also marks packed stays NYI, which is where a
polymorphic class with tail padding lands.
Assisted-by: Cursor / claude-opus-5
dmu_objset_open_impl: unregister prop callbacks on error
If dsl_prop_register() fails partway, the error path frees the objset
without removing the callbacks already registered, leaving records
that point at freed memory. Call dsl_prop_unregister_all() first.
Reviewed-by: Tony Hutter <hutter2 at llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin at TrueNAS.com>
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Martin Minkus <martin.minkus at gmail.com>
Closes #18903
[flang-rt][OpenMP] fix buildbot failures after commit 01079d2605aabd0beccecb270f51d40119422f04 (#218611)
The commit that introduced integer kind wrappers in libomp-mod caused a
regression in CUDA Flang runtime builds. This change resolves the issue
by skipping the build of libomp-mod for experimental CUDA offload
configurations, ensuring that host-side Fortran objects are not included
in the CUDA/PTX compilation path.
Fixes: https://lab.llvm.org/buildbot/#/builders/152
lang/elixir-mode.el: Update to 2.5.0
Upstream added elixir-format.el, so pick it up in pkg-plist. Switch to
DISTVERSION for the ordering expected alongside DISTVERSIONPREFIX.
[libc++] Add test for LWG4043 ASCII in text_encoding (#218175)
It turns out the ASCII entry was not an extension as I had initially
thought, and was added as part of the resolution of LWG 4043. Update
the test and correct the status page.
Resolves #209899
[AMDGPU] Canonicalize num_records to its actual width in InstCombine
llvm.amdgcn.make.buffer.rsrc is overloaded on the type of its
num_records argument, but the hardware field it ends up in has a fixed
width (32 bits, or 45 bits on gfx1250 and up). Rewrite the intrinsic to
use that width, zero-extending or truncating num_records as needed, so
that IR-level optimizations can see that the extra bits of, for example,
the i64 that Clang emits are not demanded.
Targets that aren't concrete enough for the buffer resource layout to be
known are left alone.
AI disclosure: This was my idea but Claude wrote the code (and I've
tried to tighten up the comments)