[Support][NFC] Initialize suffix tree metadata during construction (#232720)
Compute internal path lengths and leaf suffix starts during insertion to
eliminate the final `setSuffixIndices()` traversal.
This change preserves functional behavior while avoiding the final
metadata traversal.
SuffixTree construction CPU time against main `f14f34f217a9`:
Core i9-13900K, Linux x86_64, X86 `-Oz`, outlining always enabled,
leaf descendants enabled. Sum inputs per round; for each version, drop
the minimum and maximum of 10 rounds and average the remaining 8.
| Workload | Mode | Baseline (s) | Optimized (s) | CPU change |
| --- | --- | ---: | ---: | ---: |
| CTMark | NoLTO | 0.185136 | 0.174090 | -5.97% |
| CTMark | FullLTO | 0.086525 | 0.075911 | -12.27% |
| SPEC2017 C/C++ Rate | NoLTO | 1.232714 | 1.156888 | -6.15% |
| SPEC2017 C/C++ Rate | FullLTO | 0.570815 | 0.456092 | -20.10% |
[6 lines not shown]
[TableGen] Remove HwMode expansion from CodeGenDAGPatterns. (#238932)
GlobalISel and Selection both handle HwMode expansion during instruction
selection now.
The only remaining user is FastISel, but no in tree target uses FastISel
with HwModes. If it becomes necessary, I think it should be done at
selection time like SelectionDAG and GlobalISel. For now, FastISel will
skip patterns that use HwMode.
Assisted-by: Claude
DroppedVarStats: Count variables visible from inlined frames (#239280)
A dropped variable is only counted if an instruction remains from which
a debugger could observe it. The check needs to consider all inlined
frames to check if the variable is visible from one. The old code would
have false negatives as it wouldn't consider inlined scopes as visible
(see added tests inlined_code_in_scope and
nested_inlined_code_in_scope).
Also remove VisitedScope, which guarded against cycles, but cycles
cannot happen in scopes.
Assisted-by: Claude
[ARC] Declare command line options in TableGen (#239691)
Move the cl::opt options into ARCOptions.td. ARCTargetMachine holds
`const ARCOptions &CLOpts`, and ARCSubtarget copies it.
LLM-aided
[lldb] Don't restore registers saved under a different layout (#239445)
When g packets are avoided, WriteAllRegisterValues restores each
register by indexing the saved buffer with the current register offsets.
A reconfigure between save and restore, such as a change of the SVE
vector length, can move those offsets past the end of the buffer, in
which case lldb reads out of bounds and sends the bytes to the stub.
Fail the restore when the buffer size no longer matches the register
data size.
rdar://186993734
Assisted-by: Claude
[SystemZ][z/OS] Make symbols renameable
z/OS can rename symbols, but only if the symbol is marked as
renameable in the ESD record. Until now all symbols were emitted as
non-renameable. Mark them renameable by default, with these exceptions:
- CELQSTRT and CELQINPL stay non-renameable.
- CELQBST is renameable.
Section-level PR symbols are unchanged.
Add a renameable flag to MCSymbolGOFF and the ER attributes, and
update the affected tests.
Note that HLASM has no way to express this flag, so it is only
visible in the GOFF object output.
Assisted by: IBM Bob
rump: Copy struct proc::p_pgrp explicitly
Now that it's not in p_startcopy/endcopy, the memcpy isn't enough.
Should fix the thousands of test failures I caused by moving p_pgrp
out of the p_startcopy/endcopy range!
PR kern/60962: fork and spawn read p_pgrp without proc_lock
[LifetimeSafety] Support allocating/freeing functions annotated `ownership_takes`/`ownership_returns` (#213439)
This PR extends LifetimeSafety to model allocating/freeing functions
annotated with `__attribute__((ownership_returns))` /
`__attribute__((ownership_takes))`.
# Contents
* Adds `handleAllocatingCall`, which treats the call result as a fresh
allocation and issues a new loan for it (mirroring `new`).
* Adds `handleFreeingCall`, which treats the annotated arguments as
freed and invalidates their origins (mirroring `delete`), enabling
use-after-free and escape-invalidation diagnostics.
* Extends the `AccessPath` base union to also accept allocating
`CallExpr`s, keeping the number of alternatives unchanged. (breaks build
on 32-bit systems if 1 more template parameter is added)
Completes part of #213435
Assisted-by: DeepSeek V4 for writing most of the code
[LifetimeSafety] Support allocating/freeing functions and builtins (#213443)
This extends LifetimeSafety to model allocating/freeing functions annotated with "ownership_returns" / "ownership_takes", as well as malloc-style builtins without requiring any attributes.
Contents
* Adds "handleAllocatingCall", which treats allocation results as fresh allocations and issues new loans (mirroring "new").
* Adds "handleFreeingCall", which invalidates the origins of freed arguments (mirroring "delete"), enabling use-after-free and escape-invalidation diagnostics.
* Extends the "AccessPath" base union to support allocating "CallExpr"s without increasing the number of alternatives.
* Adds support for "malloc"/"calloc"/"realloc"/"free" and their "__builtin_" spellings as allocating/freeing functions.
Closes #213435
Assisted-by: DeepSeek V4 for writing most of the code
Revert "comms/hamlib: fix plist after USES=tcl rework"
This botched commit breaks the plist when tcl version is set at
8.6, but not 9.1.
PR: 300092
This reverts commit ae14dbd670c1ac0f773bf629c268abc28a785236.
p5-HTTP-Body: update to 1.25.
TOOL_DEPENDS -> TEST_DEPENDS for a test dependency.
1.25 2026-11-05 18:47:08+01:00 Europe/Berlin
- SECURITY, CVE-2026-117500: the suffix of an upload's filename is
worked out from its last 255 bytes only, only when $file_temp_suffix
is unset, and for the default $basename_regexp by a string search
instead of the regexp; a filename of many dots ending in a backslash
made the default $basename_regexp take time quadratic in its length
(7 s per part at the 32 KiB header limit, once per part) in the
default configuration
- SECURITY, CVE-2026-117501: a chunked body is framed line by line with
a limit on the chunk-size line ($HTTP::Body::max_chunk_line_size,
1024 bytes), chunk data is passed on as it arrives instead of being
held until the chunk is complete, malformed framing (a line that is
no chunk-size line, a size that does not fit an integer, chunk data
not followed by CRLF) croaks instead of buffering forever, and
nothing after the trailer or after the body parser is done is kept
[21 lines not shown]
[SLP]Count spills of vectorized parts of gather nodes
Vectorized parts of a gather node are combined at its user and stay
live across non-vectorized calls in between, which spill cost missed.
Assisted-by: Cursor
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/239687
Coalescer: Preserve read-undef when coalescing into a larger reg.
When rewriting a %1:gpr32 def into %0.sub_32:gpr64, the new def operand
can be marked with undef if no lanes from the larger gpr64 reg are live.
Assisted-by: codex (test reduction)
[AArch64] Eliminate shouldCoalesce restriction.
This does not enforce much, we are already very careful about ORRW,
which is only considered as a copy instruction when we can prove it's
not performing a required zero extension.
[DirectX] Generalize integer legalization while preserving intrinsic ABI operands (#233491)
Share SSA legalization across unsupported integer widths, including i8,
using legal i32/i64 carriers and width-aware signed and unsigned
normalization.
The previous PR failed becuase it did not preserve fixed intrinsic ABI
operands for resource counters and shader input/output operations. This
change does.
Add regression coverage for integer semantics, intrinsic lowering, and
profile metadata, and document the legalization behavior.
Fixes #225169
Assisted by GPT 6.1-Sol via Co-pilot
---------
Co-authored-by: Copilot <223556219+Copilot at users.noreply.github.com>
[CIR] Skip function bodies imported from other named modules
When a function's body comes from another named module, CIRGen now emits
just a declaration instead of hitting an errorNYI. always_inline
template instantiations still get their bodies, since a library may not
provide symbols for them.
Assisted-by: Cursor / Claude Opus 5.5