Do not exempt the AD backend from the idmap overlap check
Samba documents idmap ranges as disjoint. If two domains hold the same
uidNumber, both accounts get the same UID and winbind does not report it.
- Reject new overlaps between domains that use the AD backend. This only
changes the primary domain against a trusted domain, as the API model
already rejects overlaps between trusted domains.
- Saved overlaps are still left alone.
[ELF] Parallelize symbol interning while parsing files. NFC (#238701)
Looking up global symbol names in the symbol table dominates the serial
doParseFiles loop, mostly through cache misses. Shard the global symbol
map and let helper threads run ahead of the loop, interning the names of
relocatable object files in input order. Before parsing a file, the loop
waits for the helper that claimed it, or claims the file and inserts its
symbols serially.
An interned symbol is invisible to find() until SymbolTable::insert
appends it to symVector, and resolution stays serial, so the output is
unchanged. The shards are locked only while the helpers run.
```
Chromium clang (release)
--threads link (ms) parse link (ms) parse
1 +30 (+0.8%) 659 -> 690 +3 (+0.7%) 49 -> 52
2 2724 -> 2502 (-8%) 663 -> 455 347 -> 337 (-3.5%) 50 -> 40
8 1767 -> 1412 (-20%) 667 -> 313 181 -> 151 (-17%) 56 -> 24
16 1692 -> 1315 (-21%) 688 -> 326 159 -> 136 (-14%) 50 -> 25
```
[Tooling] Resolve relative "directory" against the compilation database (#235400)
JSONCompilationDatabase does not resolve a relative "directory", e.g.
`{"directory": ".", "command": "cc ../src/a.c", "file": "../src/a.c"}`.
getCompileCommands finds nothing, so clang-check reports "Compile
command not found" and clangd uses a fallback command.
getAllCompileCommands returns the directory verbatim, so each consumer
resolves it against its own working directory.
Resolve it against the directory containing compile_commands.json,
without resolving symlinks, so that paths keep the spelling clangd
receives from the editor. A compile_commands.json symlinked into the
source root is therefore relative to the source root. Since
loadFromBuffer has no file path, it takes the base directory as a new
first parameter.
LLM-aided
[CIR] Match classic codegen for saturating fixed-point negation and padded conversions
Three CIR fixed-point paths diverged from classic codegen. Unary minus on a
saturating fixed-point type emitted a plain subtraction instead of a
saturating 0 - x. With -fpadding-on-unsigned-fixed-point, float to unsigned
fixed-point conversion used fptoui and compared against 0 as unsigned, so the
clamp to 0 never fired; it now converts and clamps as signed, like
llvm::FixedPointBuilder. A saturating fixed-point conversion that kept the
width but changed signedness returned a value of the source CIR type, which
broke the cir.cmp verifier and needed a pointer bitcast to store; it now
casts to the destination type.
Assisted-by: Claude Code (Opus 5.5).
[CIR] Store nsw/nuw as an OverflowFlags bit enum and split out saturated add/sub
cir.add, cir.sub and cir.mul carried nsw and nuw as two separate unit
properties, and lowering mapped them to LLVM with an early return that
picked nuw over nsw, so an op with both flags lowered to `overflow<nuw>`
and lost nsw. cir.add and cir.sub also carried a `sat` flag that changed
the operation's result rather than adding a poison condition.
Store the flags as one OverflowFlags bit-enum property whose layout
matches mlir::LLVM::IntegerOverflowFlags, so lowering casts it directly
and keeps both flags. The property uses the default EnumProp syntax with
a space separator, printed as `nuw`, `nsw` or `nuw nsw` as in LLVM IR,
so no custom parser or printer is needed. cir.mul now shares the add/sub base class and so becomes Pure.
Saturating arithmetic moves to new cir.add.sat and cir.sub.sat ops, which
lower to the signed or unsigned saturation intrinsics by element type.
That leaves cir::OverflowBehavior only describing nsw/nuw, so the builder
takes cir::OverflowFlags instead.
[6 lines not shown]
[IPO] Declare command line options in TableGen (#239113)
Add IPOOptions and port the options of a few files. The other IPO passes
will follow separately.
-mergefunc-verify, which only assertions builds read, now exists only in
assertion builds.
LLM-aided
[CIR] Keep the address space in array ctor/dtor and new[]/delete[] (#231367)
Pointers to array elements lost the address space of the array, which
broke the CIR verifier on spirv64-amd-amdhsa
[llvm] Remove unused includes (NFC) (#239118)
This patch removes unused #include directives across .cpp files under
llvm/, identified by clang-include-cleaner and verified with local
builds.
Assisted-by: Antigravity
[AMDGPU] Update src2 live range when converting WMMA to three-address form
Since #225174, `LiveIntervals` is computed before the two-address instruction
pass. A two-address WMMA ties `src2` to an early-clobber `vdst`, so if `src2`
dies at the WMMA, its live range ends at the early-clobber slot. When the pass
converts the WMMA to the three-address form, `src2` is no longer tied and is
read at the register slot, but `SIInstrInfo::convertToThreeAddress` only updates
the live range of the def. The machine verifier then reports "Live segment
ending at early clobber slot must be redefined by an EC def in the same
instruction".
This PR moves the end of such a segment to the register slot, for the main range
and the subranges.
Fixes LCOMPILER-3197.
[DAG] FoldConstantArithmetic - add SMUL_LOHI/UMUL_LOHI handling (#239207)
Followup to #228877 which added support for constant folding nodes with
multiple results
Move the SMUL_LOHI/UMUL_LOHI constant folds out of getNode and into
FoldConstantArithmetic
[flang][AliasAnalysis] See through memref casts (#235882)
After doing fir-opt --fir-to-memref, fir::AliasAnalysis couldn't see
through memref view ops (like memref.reinterpret_cast), so everything
was treated as MayAlias, even when Fortran guarantees they're disjoint
(like with a dummy argument and a local). This attaches
FortranObjectViewOpInterface to memref.cast and memref.reinterpret_cast,
so getSource can walk through those and determine that some of them are
NoAlias when Fortran allows it.
Assisted-by: Claude
[libc][math] Optimize exp10 to share evaluations with exp and exp2. (#236973)
- Refactor double precision exp10 into exp10_double_eval.h and share
evaluations with exp and exp2.
- Optimize range reduction using fp-bitwise operations.
Assisted by: Gemini for analysis and refactoring
[AMDGPU] Fix malformed copy-like MIR in tests. NFC (#235323)
Fix COPYs, PHIs, REG_SEQUENCEs, an EXTRACT_SUBREG and an INSERT_SUBREG
whose operand widths disagree once subregister indices are taken into
account. These are wrong physical registers, register classes or
subregister indices that no pass ever read, mostly corrupted buffer
resource REG_SEQUENCEs.
Split the wave-size-specific copy_select_constrain_vcc_result_reg
functions out of inst-select-{and,or,xor}.mir. Each pinned its COPY
destination to a class valid for only one wave size while the file ran
under both, so one of the pair was always malformed.
Assisted by: Claude Opus 5.5
[CopyProf] Add libc interceptors. (#232851)
A copy is reported as unnecessary if neither the object nor any memory
it owns is modified before it is destroyed. So far, writes by
uninstrumented code, most importantly library functions (e.g. `memcpy`,
`memset`, etc.), are not accounted for, which leads to false positives.
Interceptors make these writes visible.
Additionally, objects constructed inside a d'tor are now marked as copy,
so that destroying temporaries (e.g. a string built for a log message)
does not suppress reports.
Note that `strndup` and `realpath` are not intercepted yet, as their
interceptors allocate memory via the `malloc` interceptor, which is only
added in a subsequent patch.
RFC:
https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
[2 lines not shown]
textproc/py-mkdocs-simple-hooks: Mark DEPRECATED
Deprecated upstream, textproc/py-mkdocs 1.4+ has hooks built in.
Set EXPIRATION_DATE to 2026-11-30, as agreed with the maintainer.
PR: 299949
Approved by: Samir Noir <samir at noir.im> (maintainer)
MFH: 2026Q4
(cherry picked from commit 30927e6a7239c9908a09e45fc369b4e710103603)
textproc/py-mkdocs-simple-hooks: Mark DEPRECATED
Deprecated upstream, textproc/py-mkdocs 1.4+ has hooks built in.
Set EXPIRATION_DATE to 2026-11-30, as agreed with the maintainer.
PR: 299949
Approved by: Samir Noir <samir at noir.im> (maintainer)
MFH: 2026Q4
Reject new overlaps between Active Directory idmap ranges
The directory services refactor (368cc8cf63) removed the idmap plugin's range
validation and kept only a check between trusted domains. A trusted domain
could then share IDs with the primary domain or BUILTIN.
- Check BUILTIN, the primary domain and enabled trusted domains in
directoryservices.update.
- Allow overlap between two domains that use the AD backend, as the idmap
plugin did (a79a0d3c6e) and as testparm does.
- Leave overlaps already in the saved configuration alone, so that existing
setups can still be disabled, enabled and saved.
[flang][OpenMP] Iteration distance should be (+|-) some-expr
Verify that the operator is actually either + or -. Simplify the
pre-lowering representation to have intrinsic operator directly
instead of having a defined-operator.
[libc][math] Optimize pow 128-bit and 256-bit accurate passes and share exp2_df128
- Refactor 128-bit and 256-bit accurate passes to use multi-tier fixed-point arithmetic (Frac64, Frac128, Frac256) and share double_eval::exp2_df128 with exp/exp2/exp10.
- Simplify is_exact_rounding_boundary to operate on normalized (x_e, x_mant), unify power loops, and replace 64-bit hardware divisions with a leading-zero bit-width bound.
- Avoid general multi-limb normalization and conversion overhead in pow_accurate and pow_accurate_256.
Assisted by: Gemini for analysis and refactoring
libthr: Create landing pad in thr_once in C++ exception
In _thr_once, if init_routine fails with exception, the stack allocate
__cup will become invalid when unwinder walk back and free the stack of
thr_once. This cause cleanup linked list be dangling. In here, we give
the cleanup function a landing pad so that we td can correctly point
to previous cleanup function.
Reviewed by: kib
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D61212
[InstrProf] Use CreatePtrAddWithSExtOrTrunc() for bias (#239261)
The bias is always 64-bit, but we may be adding it to a 32-bit
pointer, resulting in a mismatch with the pointer index type.
Use CreatePtrAddWithSExtOrTrunc() to adjust for the index type.
(In practice, only the "trunc" case will occur, as otherwise the
index type would have to be larger than 64-bit bits.)
www/gitea: Security update 28.2.0 => 28.3.0, fix 21 CVEs
It contains a large number of security fixes, mostly around token
scopes, and bug fixes and performance improvements for Actions,
issues, pull requests and packages.
We strongly recommend that all users upgrade as soon as possible.
URL: https://blog.gitea.com/release-of-28.3.0/
PR: 300499
Approved by: portmgr@ (blanket, security fix)
MFH: 2026Q4
(cherry picked from commit 4d2e00911ddaa5f72c2833a803627a107da6be05)