PPC: Replace EnableAIXExtendedAltivecABI with "target-abi" module flag
Continue purging ABI-influencing TargetOptions fields. Eliminate this case
by migrating to a module flag, reusing the generic target-abi module flag
with a new value.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
PPC: Read the ELF ABI from the "target-abi" module flag (#221669)
Resolve the ELFv2 ABI from the effective ABI name module flag,
rather than strictly relying on the -target-abi flag.
Also start emitting "target-abi" for PPC from clang.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
[SLP]Loop-scale the extract cost in the splat subtree keep/drop check
The unscaled extract estimate kept extract-heavy subtrees in hot loops,
rejecting profitable trees.
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/223524
Revert "[clang][NFC] Refactor flag enum caching (#210632)" (#223244)
This reverts commit f5437c4d4f2e9920614d856158d9683d650acffa.
That change moved population of Sema::FlagBitsCache out of
IsValueInFlagEnum and into ActOnEnumBody, and turned the lookup into
DenseMap::at(). ActOnEnumBody only runs for enum definitions that are
parsed in the current translation unit, so an EnumDecl deserialized from
a PCH never gets a cache entry and DenseMap::at() dereferences end(),
crashing clang in builds without assertions.
A switch over any enum with the flag_enum attribute that is defined in a
PCH is enough to reproduce. The crash cannot be avoided by turning the
switch diagnostics off: unlike DiagnoseAssignmentEnum, the switch path
in ActOnFinishSwitchStmt has no Diags.isIgnored() guard, because it runs
the analysis regardless in order to record the result in the AST.
In practice this breaks any translation unit that instantiates
std::basic_regex<char> while <regex> is in a PCH, since libstdc++ marks
[11 lines not shown]
image: Use msg_n/done idiom for ZFS image build status messages
zfs send/recv, zpool create, and zfs create/snapshot are all silent
on success and can take a noticeable amount of time (especially for
larger images), but were reported via standalone msg() calls with no
completion signal. Switch to the msg_n "...done" idiom used elsewhere
for silent, potentially slow operations.
image: Use msg_n/done idiom for install_world tar status
install_world() reported "Installing world with tar" and "Installing
world done" as two separate msg() lines, even though both the tar
pipeline and make -s are always silent on success and the operation
(copying the full world plus delete-old) can take a while. Switch to
the msg_n "...done" idiom used elsewhere for silent, potentially slow
operations.
[VPlan] Use VPlan-based costs for pointer inductions. (#223394)
Drop the last legacy induction fallback in precomputeCosts, completing
the migration of induction costs to be VPlan-based.
The fallback charged the cost of the IV phi. The cost of the GEP
incrementing the IV was considered free.
VPWidenPointerInduction::computeCost now charges the cost of the phi
plus a TODO to also consider cost of the increment and wide pointer add.
For scalarized pointer inductions, we do not charge any cost for the
scalar GEPs, like before, assuming they can be folded into the
addressing mode.
Test changes are due to the fact that scalarized pointer inductions do
not require an extra phi (on most platforms, phis are considered free,
so not many tests are impacted).
PR: https://github.com/llvm/llvm-project/pull/223394
[CIR] Record the ABI slot kind and widen memory effects for it
A const or pure function handed an sret, byval or non-byval slot reaches
argument memory whatever its source attributes say, so memory(none) or
memory(read) on it is false. The verifier catches that on sret. On the
others the IR verifies and the optimizer is free to delete stores the callee
reads.
Lowering could not tell which arguments were the ABI's own. With llvm.byref
gone, a non-byval slot carries nothing a plain pointer parameter does not, so
the pass now records the slot kind it created and lowering reads that rather
than guessing from LLVM attribute names.
And side-effect-argmem.cir moves off mlir-translate, which is not built here,
onto cir-translate like every other test in that directory.
Assisted-by: Cursor / claude-opus-5
jail: Add trailing ellipsis to make/freebsd-update status messages
Each of these msg() calls is immediately followed by an unredirected
external command (make or freebsd-update) whose own real-time output
streams directly to the console right after the header, with no
paired completion message -- the command's own output, or the
err()/msg_warn() on failure, is what signals progress/completion.
Add a trailing "..." so the header reads as in-progress rather than
a standalone statement, consistent with msg_n() callers elsewhere.
image: Use msg_n/done idiom for miniroot creation status
mkminiroot() reported "Making miniroot" as a standalone msg() even
though the function is mostly silent and can take a noticeable
amount of time (copying files, resolving shared library deps, and
running makefs/gzip). Of its steps, only makefs writes unredirected
output to stdout; gzip -9 without -v is already silent. Redirect
makefs's output to /dev/null, matching the same treatment already
used for its sibling make_esp_file(), and switch to the msg_n
"...done" idiom used elsewhere for silent, potentially slow
operations so the whole function reports as one in-progress status
line instead of a header with no matching completion.