AArch64/GlobalISel: Drop redundant IMPLICIT_DEFs before the ptrauth pseudos
MOVaddrPAC, LOADgotPAC, AUTPAC and AUTx16x17 all fully define X16/X17;
none of them read X17, and the only X16 read is the one the surrounding
code sets up with a COPY.
Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
AArch64: Error on unsupported calls with no arguments
This was calling CCAssignFnForCall inside the loop over arguments instead of
once for the function, so it would skip the error if the function had no
arguments. Instead of checking IsFixed, change the logic to mirror what
LowerFormalArguments does.
Also required adding a calling convention definition for anyregcc to avoid
breaking patchpoint tests. These happened to work before because the assignment
function was never looked up for calls without arguments.
[clang][OpenMP] Extend no-loop promotion to the split teams loop
Widen the no-loop promotion to apply not only to the fused target teams
distribute parallel for but include the same region written as separate
directives, other directives promotable to parallel for, and regions
carrying a schedule clause that asks for a mapping a no-loop kernel
already provides.
Use the SPMD_NO_LOOP kernel tag to carry the promotion decision, based
on whether the kernel can get fully promoted to a no-loop kernel. This
eliminates the previous discrepancy where a clause got the tag but not
the promotion.
[clang][OpenMP] Emit lastprivate final copies in no-loop kernels
Promotion rejected lastprivate because the no-loop branch leaves the
worksharing path before it privatizes or copies out, so the clause would
have been silently dropped.
Privatize the non-counter variables in the parallel region and copy them
out under the last iteration that applyWorkshareLoop publishes, forcing
the exit barrier the copy reads through. Loop counters stay at the
distribute level and reach EmitOMPSimdFinal.
[clang][OpenMP] Add no-loop SPMD kernel promotion
A target teams distribute parallel for that is guaranteed a thread for
every iteration does not need the loop around its body. Flang already
drops it and runs the region as a no-loop kernel.
Enable the same optimization for Clang through mirroring Flang's MLIR
promotion using OpenMPIRBuilder. The kernel is tagged SPMD_NO_LOOP, so
the runtime sizes the grid to the iteration space, and the body is
emitted without a loop around it. The canonical loop it consumes is
reconstructed in the no-loop branch rather than taken from an
OMPCanonicalLoop node, so the promotion does not require
-fopenmp-enable-irbuilder.
Restrict offload entry creation to module level finalize, preventing
asserts on missing offload entries from nested CodeGenFunction
finalizing before module completion.
system: make "noroot" the standard option with 27.1 #9352
As discussed internally, we want to aim for this to be the new standard,
but we will not migrate any existing setups just yet. This may need more
documentation/annotation for components (mostly legacy plugins) where this
won't work, but it's a very good start to root these out via user reports.
[NFC][TSan] Check IsFiredSuppression before ScopedReport in ReportErrnoSpoiling (#228811)
Check IsFiredSuppression(ctx, ReportTypeErrnoInSignal, stack) and return
early before constructing ScopedReport in ReportErrnoSpoiling (matching
SignalUnsafeCall and ReportRace). This avoids acquiring
ScopedErrorReportLock and ThreadRegistryLock for already-suppressed
reports.
Assisted-by: Gemini
Skip serial and model license checks for non-enterprise licenses
This commit fixes an issue where TrueNAS Connect community and commercial licenses raised critical serial mismatch and unsupported hardware alerts, because the serial, chassis model and expansion shelf checks ran for every license type. Those checks only make sense for serial-bound enterprise licenses, so they are now gated on the license type while support expiry alerts keep firing for everyone.
NAS-144046 / 28.0.0-BETA.1 / Skip serial and model license checks for non-enterprise licenses (#19934)
This commit fixes an issue where TrueNAS Connect community and
commercial licenses raised critical serial mismatch and unsupported
hardware alerts, because the serial, chassis model and expansion shelf
checks ran for every license type. Those checks only make sense for
serial-bound enterprise licenses, so they are now gated on the license
type while support expiry alerts keep firing for everyone.
Remove hw_l and ce_l entitlement columns
This commit adds changes to drop the HW+L and CE+L columns from the entitlement engine. Fibre channel was the only feature granted through them, so it is now gated purely on the license carrying the FIBRECHANNEL key (hw_k/ce_k), and a license lacking a feature's key resolves to no column and is denied.
(cherry picked from commit e97329a44d29b0c8033cc8a75646256855a6e3d0)
NAS-143829 / 28.0.0-BETA.1 / Remove hw_l and ce_l entitlement columns (#19935)
This commit adds changes to drop the HW+L and CE+L columns from the
entitlement engine. Fibre channel was the only feature granted through
them, so it is now gated purely on the license carrying the FIBRECHANNEL
key (hw_k/ce_k), and a license lacking a feature's key resolves to no
column and is denied.
[alpha.webkit.UncountedCallArgsChecker] Don't treat a call returning a reference to a smart pointer as a safe origin (#229301)
Previously, when walking a call argument or a local variable's
initializer back to its origin, `tryToFindPtrOriginImpl` treated any
call whose type is a smart pointer type as safe. That is correct for a
call returning a smart pointer by value, but a call returning a
reference to a smart pointer has the same type, which caused a missing
warning for any raw pointer/reference obtained through it. This only
treats such a call as safe when it returns by value.
[TSan] Defer symbolization in AddStack and AddSleep to SymbolizeStackElems (#228795)
#151120 delayed symbolization for memory accesses, locations, threads,
and mutexes until OutputReport (which #151495 and #228554 moved after
ThreadRegistryLock is released), but missed ScopedReport::AddStack and
ScopedReport::AddSleep. As a result, ReportRace (via AddSleep) and
ReportMutexMisuse, ReportDeadlock, and ReportDestroyLocked (via
AddStack) still invoked the symbolizer while holding ThreadRegistryLock.
Store the unsymbolized stack traces and sleep stack ID in ReportDesc and
symbolize them in ScopedReport::SymbolizeStackElems().
Assisted-by: Gemini
[KnownFPClass] Fix KnownFPClass::frexp subnormal mode handling (#219114)
Fixes a bug where positive-zero would be incorrectly ruled out since a
negative-subnormal could flush to positive-zero.
Also update demanded `KnownFPClass` propagation for `frexp` to account
for negative subnormal inputs that may flush to +0.0.
Additionally, teach `SimplifyDemandedUseFPClass` that `frexp(+-0.0, ptr)
== +-0.0` (`+-inf` and `NaN` were already handled prior).
I also added a basic test to
`CodeGen/AArch64/GlobalISel/knownfpclass-ops.mir`.
Part of https://github.com/llvm/llvm-project/pull/219091
AI Disclosure:
I used ChatGPT Codex (sol 5.6) to generate the tests, which I reviewed
and tested locally.
textproc/py-codespell: New port: Fix common misspellings in text files
PR: 299068
Approved by: Baptiste Daroussin <bapt at FreeBSD.org> (on behalf of portmgr@)