[Flang][OpenMP] Generate maps for allocatable components of privatized symbols for target offload (#214015)
Currently we do not generate maps for allocatable components of derived
types for privatized derived type symbols, this can be a problem when
the variable requires initialization from the original copy, as the
device will try to perform initialization and the data will not be
present to do so. This causes a runtime memory access error on device.
Some example code that can trigger this:
type :: btype
real(kind=8),allocatable, dimension(:) :: a
end type
!$omp target teams distribute parallel do firstprivate(b)
This does not apply to pointers as they aren't mandated to be
initialized as allocatables are at the moment I believe when they're
sub-objects. But it does apply to allocatables where initialization and
copy blocks are generated.
[4 lines not shown]
[flang][AIX] Diagnose unsupported OBJECT_MODE setting and -maix32 option (#209919)
This patch is to align flang's default behavior to the other tools in
toolchain on AIX. Flang assumes 32-bit compile by default. The compile
mode can be overridden by setting environment variable OBJECT_MODE=64 or
specifying the -maix64 option.
[CIR] Change the 'inline_kind' enum to have an explicit attribute (#215335)
If we use the builtin automatic inline-kind here, we don't get to have
it printed reasonably/normally. This patch adds the
'genSpecializedAttr=0' and adds an explicit attribute so we print it as
an enum value.
[SandboxVec][Scheduler] Fix false negatives (#211108)
This patch fixes an issue where trySchedule() could return false even
though scheduling was legal. This would happen after a failed
trySchedule(Bndl1) attempt for a bundle that would span a large number
of instructions. Any subsequent trySchedule(Bndl2) for a bundle that
would span fewer instrs than Bndl1 would return false because the
scheduler would not scan the required instructions to add them to the
ready list.
lang/gcc16-libjit: import gcc16-libjit-16.1.0
The GNU Compiler Collection (GCC) includes front ends for C, C++,
Objective-C, Fortran, and Go.
This package contains libgccjit, an API for embedding GCC inside
programs and libraries.
[NVPTX] Make `shortptr` a target ABI (#214112)
Refactor our handling of `shortptr` to make it a proper target ABI
instead of plumbing it through with CLI options.
Assisted by AI.
lang/gcc16-libs: import gcc16-libs-16.1.0nb1
The GNU Compiler Collection (GCC) includes front ends for C, C++, Objective-C,
Fortran, and Go, as well as libraries for these languages (libstdc++,
libgfortran, ...).
This packages provides GCC support libraries in a specific location and allows
packages to depend on just the libraries rather than having to pull in the full
GCC package.
[clang][OpenMP] Split OMPOrderedDirective into two classes
Now that OMPD_ordered has been replaced with two variants, split
the OMPOrderedDirective class into two classes, one for each
variant.
[clang][OpenMP] Use different ids for block and s/a ORDERED directive
Use OMPD_ordered_blockassoc for the block-associated ORDERED directive,
and OMPD_ordered_standalone for the standalone variant.
This still uses a single AST class for both though. The directive
kind stored in can now take either of the two values.
Reconcile license derived config when the license changes
This commit adds changes to converge every subsystem whose configuration is derived from the license once that license changes. `truenas.license.upload` regenerated exactly one etc group and then fired `system.post_license_update` detached. That was survivable while gates asked `is_enterprise`, which expanded to `is_ha_capable OR (licence AND model AND not freenas)` -- on appliance hardware the first limb was already true before any license was installed, so those gates did not change their answer when one arrived and never re-rendering them cost nothing. Now that they are feature key checks they do change their answer, and a spread of etc groups were left silently stale until something unrelated regenerated them or the box rebooted. The plainest case is sudoers, where sudo command auditing simply did not turn on when an appliance was licensed.
Each affected subsystem now registers a LicenseReconcileDelegate from its own setup, naming the etc groups it owns and what should happen once they have been re-rendered, and a runner walks the eight of them on the hook. Doing this per plugin rather than centrally in etc matters because the right action differs between them, and not always for the obvious reason. The block target delegates only render, but they still decline to run when their service is stopped, because for nvmet and LIO writing the config is itself the reconfiguration rather than a file something reads later. smb and discovery reload a real daemon. The user delegate reloads a pseudo service that has no daemon behind it at all, so there the reload is simply how the group gets regenerated. And ctdb gets a restart because the presence of its config file is what decides whether the daemon can start. Registration refuses a duplicate name or a group another delegate already claims, so two plugins cannot quietly both own one.
The hook is still fired detached, so the upload itself does not wait on the pass. failover.status is dropped from its cache ahead of it, since a good half of these groups read that while rendering and would otherwise reconcile against the status cached under the old license, and truesearch is registered async so that waiting on its service job cannot hold the other consumers up behind it.
The cron template also goes back to rendering unless failover.status is definitively BACKUP. Keying it on SINGLE or MASTER instead, which is where it had drifted to, meant a transient ELECTING, IMPORTING or ERROR read emptied the whole schedule -- every user cronjob, rsync task, cloud sync, scrub and update check -- with nothing to put it back until the group happened to be regenerated again.