VE: Use i32 registers for 32-bit loads in the SjLj dispatch block
Fix verifier errors in exception test. The call site index and the
PIC jump table offset were loaded with ldl.zx, which defines an i32
register, into vregs with the i64 register class.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
VE: Default to SjLj exception handling
The clang driver selects SjLj exceptions for VE (96d4ccf00c8f), but the
triple defaulted to no exception model. Make SjLj the default for the
triple and MCAsmInfo so llc agrees with the driver.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
AMDGPU: Add vgpr32_lo16/vgpr32_hi16 OutPatFrags
Add OutPatFrags for extracting a 16-bit half of a value after copying
it to a VGPR_32, and use them for the existing open-coded instances.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
AMDGPU: Use lo16_to_vgpr32/hi16_to_vgpr32 OutPatFrags (NFC) (#231650)
Replace open-coded REG_SEQUENCE widenings of 16-bit values into a
VGPR_32 with the existing OutPatFrags.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[SelectionDAG] Implement SDTCisVTSmallerThanOp/SDTCisOpSmallerThanOp in SDNodeInfo::verifyNode. (#230679)
I've tried to capture the rules based on what tablegen does:
-Both should be FP or int.
-Both should be vector or scalar.
-If the scalar size is smaller then they contraint is satisified.
-If the scalar size is equal, the total size must be smaller.
We throw an error for comparing the total size of a fixed and
scalable vector. I don't know if we have good examples of what the rules
should be for mixing.
Assisted-by: Claude
devel/llvm18: drop GOLD_PLIST_FILES again
f848297955e2 removed it from llvm16 to llvm22 because LLVMgold.so is
shipped by the -libs port, but merge b7c138dca937 brought it back in
llvm18. Both llvm18 and llvm18-libs then packaged the same file, and
llvm18 depends on llvm18-libs, so installing it would conflict.
[flang][OpenMP] Fix variant selector identity and candidate ranking
Identify user conditions by a profile of the parsed expression instead of
their source text: names by their ultimate symbol and literals by value
and kind. Equivalent spellings of the same condition share an identity,
including across module imports, while distinct variables stay distinct.
Record unknown trait properties with addUnknownTrait instead of an invalid
trait, so their selectors still score under match_any and match_none.
Recognize construct={simd}.
Rank METADIRECTIVE candidates once against the complete candidate set and
keep that order when runtime guards fail, so removing a failed guard does
not restore the raw score of its strict subset. Represent the false
outcome under match_any and match_none with a false condition to preserve
selector identity, and score an implicit NOTHING like an explicit
replacement; explicitness only breaks ties.
Split from #224431.
[2 lines not shown]
Support module importing with differing code models
First, module-level code model information is stored as a module flag.
To support merging of modules with different module flag values, we add
a new module flag behavior, `Ignore`, which ignores differences between
values and takes the flag from the first module.
Second, when a module imports a value from another module with a
dfferent code model, the imported value should retain the code model of
its source module. A small value imported into a large module should
remain small in order to prevent disturbing other references to that
small value in its original module. At the same time, a large value
imported into a small module should remain large as otherwise the value
may not be reachable in the small value.
Co-authored-by: Alan Zhao <ayzhao at google.com>
comms/flwrap: prepare the port for upcoming FLTK 1.4.x
- Don't demand particular FLTK API version for no reason
- Drop seemingly useless (or no longer needed) USES list
devel/llvm23-libs: New port: LLVM 23 runtime shared libraries
llvm23 had no -libs split, so lang/lfortran (USES=llvm:23,lib) pointed
llvm.mk at a devel/llvm23-libs that did not exist.
Add llvm23-libs based on llvm22-libs, without the GOLD option that
llvm23 dropped and with -DLLDB_EXPORT_ALL_SYMBOLS=ON to match the
parent. Make llvm23 depend on it and stop staging libLLVM, libLTO and
libRemarks, like llvm15 to llvm22.
HBSD: Garbage collect old DNSSEC root key material
This completes the migration to the new DNSSEC key material.
Signed-off-by: Shawn Webb <shawn.webb at hardenedbsd.org>
MFC-to: 15-STABLE
X-MFC-with: 505acb182e96baee81bb398c490555b681565f8e
Free import progress notes with kmem_strfree()
spa_import_progress_set_notes_impl() allocates spa_load_notes with
kmem_vasprintf(), and three of the four places that free it use
kmem_strfree(). spa_import_progress_remove() uses spa_strfree(),
which is kmem_free().
On Linux, kmem_vasprintf() allocates with kvasprintf(), which the
SPL's kmem accounting never sees. A debug build with
--enable-debug-kmem-tracking finds no record of the pointer and
panics in spl_kmem_free_track(). It does this whenever a pool load
finishes, including the tryimport that zpool import runs to list
pools. With --enable-debug-kmem alone, the free subtracts bytes the
SPL never counted. Other builds, and FreeBSD, are unaffected.
Use kmem_strfree(), as the other three frees do.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Patrick Domack <patrickdk at patrickdk.com>
Closes #19330
[Clang][AllocToken] Support TypeFuncHash and TypeFuncHashPointerSplit modes (#228492)
Extend Clang to support the `-falloc-token-mode=typefunchash` and
`-falloc-token-mode=typefunchashpointersplit` modes, which were added
to LLVM in #227686.
In these modes, CodeGen attaches the qualified name of the enclosing
function as the third operand of !alloc_token metadata. Allocations
outside functions use an empty function name. When type inference fails,
metadata is still emitted with an empty type name, so that a
function-based
token can be assigned. This allows distinguishing allocations that would
otherwise all share the fallback token.
Like the Increment and Random modes, `__builtin_infer_alloc_token()`
is not supported in constant expressions under these modes.
[lldb] Forward step plans through BorrowedStackFrame (#231657)
When a frame provider returns an index relative to its input frames,
LLDB wraps that frame in a BorrowedStackFrame. BorrowedStackFrame
forwards most StackFrame methods to the frame it borrows, except for
GetThreadPlanForStepType, so a scripted frame lost its custom step plans
as soon as another provider was stacked on top of it.
Forward it like the methods, and test stepping with a pass-through
provider stacked on top of a provider whose frames have step plans.
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>