E15 Stage A: noatime and #467 boot gates, build.sh fstab comments (#494)
* img-test: gate on noatime for / and match the whole mount line
Adds ROOT-NOATIME to the verdict: the serial transcript must show
' on / (ufs, local, noatime'. noatime moves from the fstab root line into
launchd's own remount (nextbsd-userland#185, E15 A2), and the overlay
stops shipping fstab (nextbsd-overlays#5, A1). This gate catches a
build where A1 ships before A2.
The ROOT-IS-UFS step matched "ufs" in the echoed device name
(/dev/ufs/...), so it said nothing about mount flags, and it sent
halt -p before the line finished. It now waits for the whole
'on / (ufs...)' line. The verdict checks login first, so a boot that
never reaches login still reports as a boot failure.
Refs nextbsd/nextbsd-userland#185
Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
[30 lines not shown]
games/qstat: update the port to version 2.18
- Chase redirection to the new GitHub account
- Garbage-collect CONFLICTS_INSTALL, the offending
`sysutils/torque' port was removed more than two
years ago
Reported by: portscout
DAG: Fix latent verifier error in statepoint lowering
Fixes "Register not marked live out of predecessor" in existing statepoint tests
when LiveIntervals is run earlier in the pass pipeline. This is observable today
when using -verify-coalescing in statepoint tests. The verifier check only runs
with LiveIntervals, which is first computed as a dependency for the
RegisterCoalescer, but the coalescer happens to hide the problem before the
first verifier run with computed LiveIntervals in the existing testcases.
Build a leaf value at the gc.relocate use instead of after the statepoint
instruction. An integer constant or frame index was defined in the statepoint
block after the call, but for an invoke the unwind edge into the landing pad
leaves at the call, before that def. The gc.relocate in the landing pad reads a
value with no reaching definition along that edge. Defining the leaf at the
gc.relocate keeps it in the landing pad.
Co-authored-by: Claude (Claude-Opus-4.8)
CodeGen: Compute LiveIntervals before TwoAddressInstructions
TwoAddressInstructions is the traditional primary use of LiveVariables,
but it has gained a LiveIntervals path. By moving LiveIntervals earlier,
the default flips to rely on it instead of LiveVariables. The overall
test churn is mostly neutral, with more net wins than losses.
This should move before phi elimination. This is a staging move to
incrementally remove the LiveVariables support from TwoAddressInstructions,
and because the move to running LiveIntervals on SSA is a bigger leap.
Co-authored-by: Claude (Claude-Opus-4.8)
CodeGen: Remove LiveVariables use from TwoAddressInstructionPass
Now that LiveIntervals is computed unconditionally before TwoAddressInstructions
in the pipeline, the pass no longer needs LiveVariables.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
[CIR] Add initial Microsoft C++ ABI support in ClangIR (#221038)
Stub out Microsoft C++ ABI support for ClangIR CodeGen and dialect
lowering:
- Stub out CIRGenMicrosoftCXXABI.
- Stub out LowerMicrosoftCXXABI to integrate into the TargetLowering
pass in CIR dialect transforms.
- Add error.NYI extensively.
- Add a minimal test file, mainly so that it is in tree.
Assisted-by: Gemini:gemini-3.8-flash-high
[RISC-V][Mach-O] Fix bogus 12-bit range check on subtraction expressions. (#222205)
Assembling a subtraction expression whose offset does not fit in a
signed 12-bit integer, such as
.word _a - _b + 5000
failed with a misleading diagnostic:
error: AUIPC out of range of corresponding %pcrel_lo instruction
The check was copied from the %pcrel_lo path, where 12 bits is a real
constraint because the offset is inlined in the immediate field of an
addi or an lw. For data, the addend is stored inline in the bytes
being relocated, and a .word has all 32 bits available to hold it.
Drop the check. No extra relocation record is needed; the
offset is simply written in the data, as otool reports in the tests:
.long 5000 @ KIND_DATA
sysutils/py-puremagic: Update to 2.2.0
Co-authored-by: Michael Osipov <michaelo at FreeBSD.org>
PR: 298690
Approved by: james at french.id.au (maintainer)
CodeGen: Remove LiveVariables use from TwoAddressInstructionPass
Now that LiveIntervals is computed unconditionally before TwoAddressInstructions
in the pipeline, the pass no longer needs LiveVariables.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DAG: Fix latent verifier error in statepoint lowering
Fixes "Register not marked live out of predecessor" in existing statepoint tests
when LiveIntervals is run earlier in the pass pipeline. This is observable today
when using -verify-coalescing in statepoint tests. The verifier check only runs
with LiveIntervals, which is first computed as a dependency for the
RegisterCoalescer, but the coalescer happens to hide the problem before the
first verifier run with computed LiveIntervals in the existing testcases.
Build a leaf value at the gc.relocate use instead of after the statepoint
instruction. An integer constant or frame index was defined in the statepoint
block after the call, but for an invoke the unwind edge into the landing pad
leaves at the call, before that def. The gc.relocate in the landing pad reads a
value with no reaching definition along that edge. Defining the leaf at the
gc.relocate keeps it in the landing pad.
Co-authored-by: Claude (Claude-Opus-4.8)
CodeGen: Compute LiveIntervals before TwoAddressInstructions
TwoAddressInstructions is the traditional primary use of LiveVariables,
but it has gained a LiveIntervals path. By moving LiveIntervals earlier,
the default flips to rely on it instead of LiveVariables. The overall
test churn is mostly neutral, with more net wins than losses.
This should move before phi elimination. This is a staging move to
incrementally remove the LiveVariables support from TwoAddressInstructions,
and because the move to running LiveIntervals on SSA is a bigger leap.
Co-authored-by: Claude (Claude-Opus-4.8)
[clang-repl] Add CLANG_ENABLE_EMUTLS_GET_ADDRESS cmake option (#217700)
Guard the extern "C" declaration and reference to __emutls_get_address
in IncrementalExecutor.cpp behind a new CMake option
CLANG_ENABLE_EMUTLS_GET_ADDRESS, which is OFF by default.
This prevents link errors in environments/runtimes where
__emutls_get_address is not available.
Replace all other guards with the new cmake option.
build.sh: stop describing the overlay fstab as the source of the root entry
Root comes from the kernel's baked-in ROOTDEVNAME (#188), not from an
fstab line or loader.conf.d, and nextbsd-overlays#5 (E15 A1) stops
shipping /etc/fstab. Rewrite the three comments that said otherwise and
drop the doubled "the the".
Refs #472
Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
iso/img-test: fail on the #467 strings (FSTAB-ROOT-REMOUNT)
Once nextbsd-overlays#5 stops shipping /etc/fstab, launchctl's boot-time
mount -vat nonfs is skipped, so neither 'Cannot union mount root
filesystem' nor launchctl's 'fwexec(mount_tool' assert should appear.
Gate both harnesses on it so the root remount can't come back unnoticed.
The ISO verdict now checks pivot+login first, then the gate, so a boot
that never completes still reports as a boot failure.
Red until nextbsd-overlays#5 is in the image: merge together with it.
Refs #472, #467
Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
img-test: gate on noatime for / and match the whole mount line
Adds ROOT-NOATIME to the verdict: the serial transcript must show
' on / (ufs, local, noatime'. noatime moves from the fstab root line into
launchd's own remount (nextbsd-userland#185, E15 A2), and the overlay
stops shipping fstab (nextbsd-overlays#5, A1). This gate catches a
build where A1 ships before A2.
The ROOT-IS-UFS step matched "ufs" in the echoed device name
(/dev/ufs/...), so it said nothing about mount flags, and it sent
halt -p before the line finished. It now waits for the whole
'on / (ufs...)' line. The verdict checks login first, so a boot that
never reaches login still reports as a boot failure.
Refs nextbsd/nextbsd-userland#185
Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
ARM: Don't duplicate the LR def when expanding call pseudos
Several pseudo expansions in ARMExpandPseudoInsts built a real call and
then copied the pseudo's operands onto the new instruction. Each of these
call opcodes declares LR as an implicit-def, but the original instruction
already had that. The original def may have been marked as dead, so the result
would be a redundant operand with an inconsistent dead flag. This avoids
a failure in a future verifier check.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
[CIR] Correct the behavior of 'shouldEmitFunction' with always/noinline (#224378)
These attributes modified the linkage of functions in certain cases that
caused us to, ironically, skip emitting something when we picked it up
via PCH during self-build. This patch just copies/pastes the code from
classic codegen.
[SROA] Enable alloca promotion for stores through pointer PHIs (#222893)
A store to an alloca through a phi-node prevents promotion of that
alloca in mem2reg. Mem2reg requires all users of the alloca to be
loads/stores. Fixes https://github.com/llvm/llvm-project/issues/202670.
The following is a motivating example:
```llvm
define i32 @store_to_phi(i1 %cond, i32 %value) {
entry:
%a = alloca i32, align 4
%b = alloca i32, align 4
store i32 0, ptr %a, align 4
store i32 0, ptr %b, align 4
br i1 %cond, label %left, label %right
left:
br label %merge
[122 lines not shown]
Restrict non-S3 exports of S3 buckets to s3data, read-only
SMB, NFS and Webshare shares of a bucket's dataset must be read-only
and of its s3data directory, matched by the dataset the path resolves
to. A share above a bucket is smbd's to refuse, by the daemon's root
marker; NFS does not cross a mount.