AMDGPU: Stop setting kill flags before FinalizeISel (#229009)
Work on removing all pre-RA flag management. Kill flags should
eventually be
removed. Pre-regalloc passes no longer depend on them, LiveIntervals
strips them
and VirtRegRewriter re-introduces them.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[mlir][SCFToControlFlow] Mark the scf.for increment as non-wrapping (#230891)
`scf.for` makes it undefined behavior for `LB + n*Step` not to be
representable in the induction variable type (#203713), so no increment
of the induction variable can wrap under the interpretation of the
bounds. Emit the increment with `overflow<nsw>`, or `overflow<nuw>` for
loops with `unsignedCmp`.
Without the flag, LLVM cannot prove that an induction variable that
starts non-negative and has a non-negative step stays non-negative.
Assisted-by: Cursor
textproc/scooter: update to 0.10.0
New features:
Support files that aren't UTF-8, such as Latin-1 by @thomasschafer in #447
Make ^ and $ match at line boundaries in multiline mode by @thomasschafer in #449
Bug fixes:
Fix stale previews after files change by @thomasschafer in #448
Fix open-in-editor panic with no results by @thomasschafer in #424
Other changes:
Harden CI workflow permissions by @thomasschafer in #420
Bump Rust toolchain to 1.97 by @thomasschafer in #437
Fix Linux musl release builds after rs-cargo v4 upgrade by @thomasschafer in #453
Bump various deps
[mlir][DataLayout] Add getTypeAllocSize
Add DataLayout::getTypeAllocSize, the type's size rounded up to its ABI
alignment, as in llvm::DataLayout. Use it for the three places that
computed this by hand: LLVM dialect arrays and structs, and the OpenMP
offload privatization pass. ClangIR's type layout hooks also need it.
Assisted-by: Cursor / Claude Opus 5.5
devel/gitlogue: update to 0.12.0
✨ Features
feat: return to waiting screen after watch playback finishes (784f6e5)
feat: add watch mode to replay new commits as they are made (9cfdddf)
🐛 Bug Fixes
fix: respect pause and detached checkouts in watch mode (3b7f372)
fix: redraw when UI state changes without animation progress (8a7158b)
fix(ci): fail Homebrew SHA step on HTTP errors (9a27f93)
📝 Other Changes
chore: bump version to v0.12.0 (06a19b7)
refactor: show waiting screen instead of startup HEAD in watch mode (f89347f)
chore(deps): bump rand from 0.10.2 to 0.10.3 (c2d782c)
chore(deps): bump toml_edit (76d7e99)
[5 lines not shown]
x11/framework-laptop12: New port
Meta-port for the Framework Laptop 12 on FreeBSD X11
Reviewed by: jrm
Differential Revision: https://reviews.freebsd.org/D60627
x11/framework-keyboard: New port
Meta-port for the Framework laptop Fn row and media keys.
Reviewed by: jrm
Differential Revision: https://reviews.freebsd.org/D60618
[lldb][Windows] Support TLS variables with PDB (#229894)
This implements `DynamicLoaderWindowsDYLD::GetThreadLocalData` which
resolves a TLS offset for a module on a thread into an address. This is
called when `DW_OP_form_tls_address` is evaluated.
On Windows, the address for a thread local is resolved by reading from
the TLS array at the module's `_tls_index`.
It only works with PDB right now, because of a bug in LLVM where it uses
the wrong relocation for the offset (#196083).
Closes #196288.
[GitHub] Fix PR code lint workflow (#231252)
After 192e44b58239, expect JSON from compute_projects.py rather than
being able to source the output to set env variables.
[BOLT] Expand builtin_unreachable recognition heuristics
A jump to the address right past the end of a function (the result of
__builtin_unreachable()) was replaced with a nop only when the target
was within the function's padding (MaxSize). However, there is a
corner case for the very last function in a section: MaxSize equals
Size, so BOLT would see __builtin_unreachable() instead as as an
interprocedural reference to an address outside of any section,
tripping the "cannot get section for referenced address" assertion in
processInterproceduralReferences(). Fix this.
[GitHub] Trigger code lint workflow on changes to compute_projects (#231250)
192e44b58239 adjusted the script but broke this workflow. No one noticed
given this workflow was not triggered on those changes. Make the
workflow trigger on these changes so we can catch such breakages.
ZTS: don't remove a pool mountpoint that is the root directory
destroy_pool() removes the pool's mountpoint directory after destroying
the pool. If that mountpoint is the root directory, for example a pool
with mountpoint=/ or a path such as "/." or "//", it runs rm -rf on
the root directory.
Skip the removal when the mountpoint is the same file as /, with the
same -ef check that 0daa27fea added to the default setup functions.
This reworks #19056 as suggested in its review: only this check
changes, and create_pool(), destroy_pool()'s name check and the error
messages are left alone.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin at TrueNAS.com>
Signed-off-by: Will Rouesnel <wrouesnel at wrouesnel.com>
Related #19049
Closes #19342
ZTS: read the MOS of an exported pool in zdb_object_range_pos
zdb_object_range_pos lists every object in the MOS of the imported
test pool with zdb, then lists it again once per type filter and
compares the two lists. A txg that syncs between two of those zdb
runs changes the space map objects, and the test fails. In one lab
failure the second run no longer had space map 258 and had a new
space map 274.
Export the pool before the MOS checks, read it with zdb -e, and
import it again afterwards. cleanup imports the pool when a check
fails while it is exported. The test also fails when zdb -e lists no
objects, since two empty lists would pass every comparison.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Patrick Domack <patrickdk at patrickdk.com>
Closes #19321
arm64: Fix and rename midr_check_var_part_range()
At the lowest and highest variants in the specified range,
midr_check_var_part_range() was comparing the part number, rather than
the revision, against the bounds. In other words, the "Y" in "rXpY"
should be compared to CPU_REV() instead of CPU_PART(). Apply this
correction, and rename the function to midr_check_var_rev_range() to
better reflect the field that we are checking.
Reported by: Claude Code (Opus 5.5)
Reviewed by: andrew
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D60624
Associate a BLOCK across compiler directives that emit no code
A named INLINEALWAYS, unnamed inlining directives, and loop directives
between a standalone METADIRECTIVE and its BLOCK still ended the search,
so a selected TARGET was empty and the BLOCK was lowered outside it.
Use the DO path's classification of compiler directives that emit no
executable operations for the BLOCK path too, and rename it accordingly.
The directives move with the BLOCK and are still lowered, so a matching
INLINEALWAYS still marks the procedure always-inline, a mismatched one
stays ignored, and loop and inlining directives see the same following
statement as before. PREFETCH still ends the search.
[mlir][ptr] Preserve broadcasts when folding zero pointer offsets (#231077)
ptr.ptr_add accepts a scalar base with a shaped offset and returns a
shaped pointer value. Its zero-offset fold currently returns the scalar
base even when the offset is a zero splat, producing a value with the
wrong type and triggering an assertion during canonicalization.
Only fold to the base when its type matches the result type. Add
regression coverage for fixed vectors, scalable vectors, and tensors,
and check that type-preserving zero-offset folds still apply to shaped
bases.
[Attributor] Skip the dead-internal-function walk for AAs that will not be updated
AAIsDeadFunction::initialize calls isAssumedDeadInternalFunction, which
runs checkForAllCallSites and so creates an AAIsDead for every internal
caller, each of which repeats the walk. Initialization therefore recurses
through the whole cone of internal callers.
When the AA will not be updated (outside of deduction, or for a function
the Attributor is not run on), getOrCreateAAFor fixes it pessimistically
right after initialize returns, discarding the walk's result. Skip the
walk in that case and assume the entry block live.
This is the dominant cost of the CGSCC OpenMPOpt pass, whose cleanupIR
queries the liveness of callers outside the current SCC on every SCC,
giving (#SCCs) x (depth of the internal caller chain). #222226 removed
the callee-seeding half of this cost; this removes the walk itself.
cleanup-no-seeding.ll drops a debug check that only the removed walk
printed.
[2 lines not shown]
[CIR] Add HLSL to LangOptions in #cir.lowering_lang_options (#230964)
Add HLSL LangOptions to the lowering_lang_options to be used when
lowering the built-in matrix type
[CodeGen] Merge MachineFunctionSplitter into BasicBlockSections (#230365)
Function splitting was done by two passes: MachineFunctionSplitter split
functions using their PGO/AutoFDO profile, and BasicBlockSections split
functions which have a basic block sections profile.
MachineFunctionSplitter had to skip functions in the basic block
sections profile, and both passes renumbered, sorted and fixed up the
blocks of a function.
Move the PGO/AutoFDO splitting logic into BasicBlockSections, so that a
single pass does all function splitting. For every function,
BasicBlockSections now uses the basic block sections profile where it is
available, and otherwise, with -function-splitting=all, the PGO/AutoFDO
profile. The pass is added to the pipeline when function splitting is
enabled, and createBasicBlockSectionsPass() takes a SplitWithPGO
argument which makes it require MachineBlockFrequencyInfo and
ProfileSummaryInfo.
The splitting decisions and the resulting layout are unchanged. The
[2 lines not shown]
For tree mode, hold a reference to prompt and other bits across command
to avoid crashing when killing the session with the mode's pane. GitHub
issue 5728.
OS-7351 VM.create should allow disk with image to be grown (doc fixup)
Reviewed by: Carlos Neira <cneira at edgecast.io>
Reviewed by: Toomas Soome <tsoome at edgecast.io>
Approved by: Toomas Soome <tsoome at edgecast.io>
powerpc: keep FP, VMX and VSX ownership changes atomic with preemption
trap() and set_mcontext() change the FP/VMX/VSX ownership state in
several steps with preemption enabled. A context switch in between
leaves the thread computing with another thread's register contents:
- enable_fpu()/enable_vec() set PCB_FPU/PCB_VEC before loading the
registers, so a switch mid-load saves a half-loaded unit over the PCB.
- set_mcontext() clears the frame's MSR bits and then the PCB flags;
a switch in between re-enables the unit, and the thread returns to
user space with it enabled but not owned, so it is neither saved nor
restored until the next signal.
Both paths run after every sigreturn(2), setcontext(2) and
swapcontext(3). A POWER9 test that keeps f14-f31 live across a signal,
with other threads using the FPU on the same CPU, saw 283 corrupted
round trips out of 882000; none after this change.
Hold a critical section around both, as amd64 and arm64 do.
[7 lines not shown]
ZTS: let zpool wait see a scan's last txg sync
Since 92a3904af "zpool wait -t scrub" and "-t resilver" keep waiting
until the txg that finished the scan has synced, while zpool status
reports the scan as done as soon as that txg starts syncing.
zpool_wait_scrub_basic and zpool_wait_resilver run with the 20 ms I/O
delay of add_io_delay, so that txg can take longer to sync than the
WAIT_EXIT_GRACE of two seconds that check_while_waiting gives the
waiter after zpool status says the scan is over, and the test fails
with "zpool process took too long to exit".
Let check_while_waiting take the pool of a scan and run zpool sync on
it before the grace period starts.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Will Rouesnel <wrouesnel at wrouesnel.com>
Closes #19340