[clang] Enhance `DependencyScanningFilesystem` to optionally accept a VFS for non-shared cache queries (#234393)
Since `DependencyScanningFilesystem` resolves FS queries through a
global shared cache, the VFS it receives cannot be a custom VFS for
different compiler invocations. To address this add an optional
`LocalFS` whose queries will be cached by the worker only, without going
through the shared cache.
A caller can use this to pass a VFS-per-invocation for dependency
scanning purposes.
[ValueTracking] Query fma/fmuladd operands when NaN is demanded (#234831)
`fma` and `fmuladd` operands are now queried when NaN is demanded for
`computeKnownFPClass` in `ValueTracking`/`GISelValueTracking`.
These allow some tests to fold in another PR
https://github.com/llvm/llvm-project/pull/233986#issuecomment-6301362660
AI Disclosure:
I used Claude Opus 5 to help write the tests.
[LSR] Simplify equality loop exit checks
Assert that the latch has exactly one in-loop successor.
Keep the transform test IR-only since codegen is covered separately.
Assisted-by: TRAE CLI (GPT-5.6-Sol)
[clang][CodeGen] Copy calling convention to .inline builtin clones (#234089)
0f0e31cf511d created a separate `.inline` function for inline builtins
instead
of renaming `Fn` in place, leaving the default C calling convention on
the
clone even when `Fn` uses a different calling convention.
Assisted-by: Gemini
[Polly][docs] Finish MyST migration for selected docs (#233692)
Migration notes from the agent:
- Enabled the MyST `deflist` extension in `polly/docs/conf.py` and
converted the two option lists in `UsingPollyWithClang.md` to native
definition lists because the original reST definition lists would
otherwise need `{eval-rst}`. The converted lists lose the accidental
blockquote indentation, which shifts them slightly left.
- Converted `.. sectionauthor::` in
`HowToManuallyUseTheIndividualPiecesOfPolly.md` to the native
`{sectionauthor}` directive because MyST can invoke Sphinx directives
directly.
- Replaced the `{eval-rst}` `isonum.txt` include and the `{{ larr }}`
substitution in `Performance.md` with a literal `←` because the file
already uses other Unicode math characters.
- Replaced `{{ ReleaseNotesTitle }}`, `{{ release }}` and `{{ version
}}` in `ReleaseNotes.md` with `env.config` expressions and a
`PreRelease` conditional because `rst_epilog` substitutions do not apply
[21 lines not shown]
[Polly][docs] Rename selected docs from .rst to .md (#233688)
Tracking issue: #201242
See the [migration guide] for more information.
[migration guide]:
https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines
This is the initial straight rename commit. It will probably break the
docs build, but it has to be a separate PR for blame preservation
purposes.
[ELF] Speed up ICF by hashing relocations and propagating over an edge list (#233697)
ICF's initial hash covers section contents and, since
https://reviews.llvm.org/D56986, two rounds of relocation target hashes,
but not what constantEq compares: offsets, types, addends, merge-section
offsets, and names of undefined or preemptible targets. Sections that
differ only in relocations, e.g. the string or external function they
reference, share a hash at every depth, which is why D56986 found no
gain from more rounds. segregate() separates them with a quadratic
number of equalsConstant calls, which dominates a Chromium --icf=all
link.
Hash what constantEq compares, and propagate hashes over relocations to
other candidates for 7 rounds. Each round saves up to one segregate()
pass. Also parallelize the symbol fold loop.
--threads=8, --icf=all, output byte-identical at --threads=1 and 8:
```
[7 lines not shown]
[KnownFPClass] Properly handle the denormal mode for fma (#234821)
Fixes https://github.com/llvm/llvm-project/issues/228972
I have made it so `KnownFPClass::fma` will only flush input denormals
before the multiplication step, and flush output denormals after the
addition step.
In total, this changes:
- Applying the input denormal mode to the Addend
- Applying the output denormal mode to the result
- Not applying the output denormal mode to the intermediate `fmul` step
The tests I added are not currently observable since `KnownFPClass::fma`
is not capable of refining zero/subnormal results precisely enough.
AI Disclosure:
I used Claude Opus 5 to help write the tests.
[clang][CodeGen] Copy function attributes to .inline builtin clones (#234081)
0f0e31cf511d created a separate `.inline` function for inline builtins
instead
of renaming `Fn` in place, but only set `alwaysinline` on the clone.
Exposed by #215264: missing target attributes can prevent inlining
`.inline`
clones, and missing `noundef` parameter attributes cause MSan false
positives
when the clone is not inlined.
Assisted-by: Gemini
[libc++] Cache the result of LNT commit refinement less aggressively (#234825)
At least as we tweak the new pipeline, waiting 3 hours to trigger new
commits is too long.
[BPF] Add UHMUL and SHMUL instruction variants with -mcpu=v5 (#234076)
This patch adds LLVM support for the unsigned and signed high-half
multiply instructions (UHMUL and SHMUL) proposed for the BPF ISA [1].
The instructions use the existing `BPF_MUL` opcode with the offset field
distinguishing the variants:
- `off = 1`: UHMUL, returning the upper 64 bits of an unsigned 64×64-bit
product.
- `off = 2`: SHMUL, returning the upper 64 bits of a signed 64×64-bit
product.
Both register and immediate forms are supported. For example:
```asm
r1 uh*= r2
r3 sh*= r4
r5 uh*= -2
[42 lines not shown]
[BOLT][RISCV] Handle cross-fragment branches in split functions (#223958)
Function splitting can place RISC-V hot and cold fragments beyond the ±1
MiB JAL range, causing relocation overflows.
Add `RISCVLongJmpPass` before function finalization to redirect each
cross-fragment CFG edge through a stub in the source fragment. The stub
uses `PseudoJump`, which expands to AUIPC/JALR without modifying ra and
can be shortened by JITLink when the target is within range.
Since RISC-V has no ABI-reserved scratch register for arbitrary
intra-function branches, need to select a caller-saved GPR that is dead
at the target. Conservatively exclude registers referenced by CFI and
disable scratch selection when raw CFI escapes are present. If any edge
has no safe scratch register, cancel splitting for that function while
preserving its basic block layout order.
NAS-144823 / 27.0.0 / Add layout parameter to sharing.s3 (by anodos325) (#20042)
Add a new create-time-only field to sharing.s3 `layout` that indicates
whether the specified share is used as a normal truenas S3 bucket, which
implies a certain directory structure `s3data` contains the live data
export and `.truenas_s3` contains a side tree with versions, in-progress
multipart uploads, etc. Or a "whole dataset" bucket.
Whole dataset buckets are readonly and are used for cases where
administrators wish to export existing RW NFS / SMB shares over S3 in a
readonly manner.
The configuration knob used to determine the type of bucket to be
created (and once again, this is create-time only), is the new `layout`
parameter that supports two values:
* BUCKET - a conventional S3 oriented bucket that may optionally be
exported RO via NFS / SMB
[12 lines not shown]
games/xray-16: Fix g_actor assertion in minimap update
Since the CUIZoneMap::Update(const CActor*) refactor the minimap radar
is updated even when the current view entity is not an actor. Map
locations then call Actor() from CMapLocation::UpdateSpot(), which
asserts (debug) or dereferences NULL (release). Skip the radar update
when there is no actor.
PR: 299743
Sponsored by: UNIS Labs (vvd)
Co-authored-by: Vladimir Druzenko <vvd at FreeBSD.org>
MFH: 2026Q4
(cherry picked from commit 7ffddc938047e2dce2d47424585ceb4a5e6179a0)