[IR] Put validateInstrOrdering behind ABI_BREAKING_CHECKS (#235885)
A release LLVM library will provide no definition for
validateInstrOrdering, but the inline definition is guarded behing
NDEBUG -- so a LLVM consumer including the headers without NDEBUG won't
have a definition of the function (and is thereby prevented from calling
invalidateOrders()).
Move the inline function behind LLVM_ENABLE_ABI_BREAKING_CHECKS instead.
Revert "System: Gateways - fix protocol selection for dynamic interfaces without ipprotocol set and make sure policy based routing rules can use these for both protocols"
This reverts commit 5b6ccdb592729ddb5e001e5351125c00eb0dd43e.
[lldb] Show a process picker in process attach without a pid
This patch makes `process attach` show an `IOHandlerPicker` listing the
processes on the selected platform, with their pid, name, and
architecture, when it is run without a pid or process name and the target
has no executable to fall back on. `platform process attach` does the same
whenever no pid or name is given. Scripted process attaches (`-C`) are left
unchanged.
When the input is not an interactive terminal, both commands skip the
picker and fail the same way they did before, and canceling the picker
fails with "no process selected".
Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
[lldb] Add search to IOHandlerPicker
This patch lets the user filter the picker's rows by pressing `/` and
typing a query. A row is shown if any of its columns contains the query,
ignoring case. While the search prompt is open, printable keys edit the
query and the arrow keys keep moving through the matches. Enter applies
the filter and returns to navigation, ESC clears it, and Backspace on an
empty query leaves the prompt.
The footer shows the active filter and how many rows it hides. In
multi-select mode, rows hidden by the filter keep their checked state and
are still returned on confirm.
To support this, `ReadKey` now returns printable characters as-is, and the
mapping of `j`, `k`, `s`, and Space to actions moves into `HandleKey`. A
read failure or Ctrl+C always cancels the picker, even while searching.
Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
[lldb] Add column sorting to IOHandlerPicker
This patch lets the user sort the picker's rows by pressing `s`, which
cycles through each column in ascending then descending order before
returning to the original order. Columns marked `is_numeric` compare as
integers, and other columns compare as strings. Ties keep their original
relative order, and the cursor moves back to the top after each sort so the
new order is visible.
The column header shows which column is sorted and in which direction, and
each column reserves room for that indicator so it doesn't shift the
layout.
Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
[lldb] Add an interactive picker IOHandler
This patch adds `IOHandlerPicker`, an ANSI-based IOHandler that lets the
user choose one or more items from a table. It supports single-select and
multi-select modes, arrow and vim-style navigation, and paging. It draws on
the alternate screen buffer so the user's scrollback is restored on exit,
redraws itself when the terminal is resized, and reports a canceled result
when the input is not an interactive terminal.
The statusline can't stay up underneath the picker: its scroll region
also applies to the alternate screen, and its cursor save/restore shares
the slot that leaving the alternate screen restores. This patch
addresses that by adding `Debugger::HideStatusline` and
`Debugger::ShowStatusline`, which the picker uses to remove the
statusline while it owns the screen and bring it back once it's done.
`AnsiTerminal.h` didn't have macros for the DEC private modes the picker
toggles: cursor visibility, auto-wrap, and the alternate screen buffer.
This patch adds them there, so we don't hard-code those escape sequences
[9 lines not shown]
graphics/openshadinglanguage: Update to 1.15.7.0
The Imageworks BSDF library is now part of OSL as a header-only library.
LLVM 14 is the new minimum, up to LLVM 23 is supported. The OSLQuery
Python bindings no longer pull in the OpenImageIO Python types, so they
work next to an OpenImageIO built with nanobind.
Changelog: https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/releases/tag/v1.15.7.0
PR: 299659
Sponsored by: Netzkommune GmbH
graphics/openimageio: Update to 3.2.1.1
Writing Ultra HDR images in JPEG, perceptual image comparison through
flip_diff and oiiotool --flipdiff, standardized Color Interop Forum
names and CICP codes in the files that allow them, and better thumbnail
support. The readers were hardened against corrupted image files in
dozens of places. The Python bindings now use nanobind.
Changelog: https://github.com/AcademySoftwareFoundation/OpenImageIO/releases/tag/v3.2.1.1
PR: 299658
Sponsored by: Netzkommune GmbH
graphics/opencolorio: Update to 2.6.0
This is the base version for the CY2027 VFX Reference Platform. It adds
read and write support for SMPTE ST2136-1 CLF, aliases for displays and
views, new built-in ACES configs and the ociomergeconfigs tool. The
alpha channel now defaults to 1 instead of 0.
Changelog: https://github.com/AcademySoftwareFoundation/OpenColorIO/releases/tag/v2.6.0
PR: 299657
Sponsored by: Netzkommune GmbH
[BOLT][Docs] Update webpage styling (#237235)
This PR makes a variety of changes, ahead of the new BOLT sub-domain to
improve the formatting of the webpages:
- Added HTML/CSS styling and templates inspired by
https://clang.llvm.org/.
- Makes navigation, labelling and spacing consistent
- Simplifies the Sphinx configuration to build the webpages.
- Added documentation on how to edit the webpages.
Additionally this PR links to
[#1070](https://github.com/llvm/llvm-zorg/pull/1070) which enables the
webpages to be built using Sphinx.
Assisted-by: Codex
py-dominate: updated to 3.1.0
3.1.0
Add reference to JavaScript functionality
Update requires-python version to >=3.7
Update tests for docstring dedenting in Python 3.13
3.0rc
Replace get_event_loop() with get_running_loop() for asyncio compatibility
cleanup
Add support for Python 3.14, drop EOL 3.9
docs: fix typo 'array-line' -> 'array-like' in README.md
docs: fix 2 comment typos in dominate/dom_tag.py (thie -> the, presense -> presence)
fix: handle out-of-range numeric HTML entities in unescape()
Use normal index deletion for child nodes
Keep copied async DOM contexts separate by task
fix(tags): preserve inline link whitespace
Preserve numeric zero attribute values
Fix rendering standalone lazy nodes
[SPARC] Add live-ins for reserved registers remapped in leaf procedures (#236654)
Leaf procedure lowering remaps %i0-%i7 to %o0-%o7 after register
allocation. Reserved registers are not tracked by liveness, so a read of
%i7 through llvm.read_register has no live-in. Once %i7 is remapped to
the unreserved %o7, the machine verifier reports a use of an undefined
physical register. The test added by PR 212838 reads %i7 as %r31 and
hit this on the expensive checks builders.
When a reserved %i register is remapped to an unreserved %o register,
add the %o register as a live-in to every block. In a leaf procedure it
holds the incoming value for the whole function.
PR 213359 instead moved the leaf decision before register allocation.
That made call-free functions under register pressure into leaf
procedures that spill instead of keeping their register window. Here
the leaf decision stays after register allocation.
leafproc-high-pressure.ll is the test doac provided in the review of
[7 lines not shown]
[ASan] Fix off-by-one in strncat overlap check (#237014)
`INTERCEPTOR(strncat)` writes `from_length + 1` bytes starting at
`to + to_length`, so the resulting destination string occupies
`to_length + from_length + 1` bytes.
Since 33824c54f616, `CHECK_RANGES_OVERLAP` passed
`to_length + copy_length + 1` as the destination length instead. When
`from_length < size`, `copy_length` (`Min(size, from_length + 1)`) is
already `from_length + 1`, checking 1 byte past the written trailing NUL
and triggering a false-positive `strncat-param-overlap` report when
`from` starts right after it.
Assisted-by: Gemini
[lldb] Add search to IOHandlerPicker
This patch lets the user filter the picker's rows by pressing `/` and
typing a query. A row is shown if any of its columns contains the query,
ignoring case. While the search prompt is open, printable keys edit the
query and the arrow keys keep moving through the matches. Enter applies
the filter and returns to navigation, ESC clears it, and Backspace on an
empty query leaves the prompt.
The footer shows the active filter and how many rows it hides. In
multi-select mode, rows hidden by the filter keep their checked state and
are still returned on confirm.
To support this, `ReadKey` now returns printable characters as-is, and the
mapping of `j`, `k`, `s`, and Space to actions moves into `HandleKey`. A
read failure or Ctrl+C always cancels the picker, even while searching.
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
[lldb] Show a process picker in process attach without a pid
This patch makes `process attach` show an `IOHandlerPicker` listing the
processes on the selected platform, with their pid, name, and
architecture, when it is run without a pid or process name and the target
has no executable to fall back on. `platform process attach` does the same
whenever no pid or name is given. Scripted process attaches (`-C`) are left
unchanged.
When the input is not an interactive terminal, both commands skip the
picker and fail the same way they did before, and canceling the picker
fails with "no process selected".
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
[lldb] Add column sorting to IOHandlerPicker
This patch lets the user sort the picker's rows by pressing `s`, which
cycles through each column in ascending then descending order before
returning to the original order. Columns marked `is_numeric` compare as
integers, and other columns compare as strings. Ties keep their original
relative order, and the cursor moves back to the top after each sort so the
new order is visible.
The column header shows which column is sorted and in which direction, and
each column reserves room for that indicator so it doesn't shift the
layout.
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
[lldb] Add an interactive picker IOHandler
This patch adds `IOHandlerPicker`, an ANSI-based IOHandler that lets the
user choose one or more items from a table. It supports single-select and
multi-select modes, arrow and vim-style navigation, and paging. It draws on
the alternate screen buffer so the user's scrollback is restored on exit,
redraws itself when the terminal is resized, and reports a canceled result
when the input is not an interactive terminal.
The statusline can't stay up underneath the picker: its scroll region
also applies to the alternate screen, and its cursor save/restore shares
the slot that leaving the alternate screen restores. This patch
addresses that by adding `Debugger::HideStatusline` and
`Debugger::ShowStatusline`, which the picker uses to remove the
statusline while it owns the screen and bring it back once it's done.
`AnsiTerminal.h` didn't have macros for the DEC private modes the picker
toggles: cursor visibility, auto-wrap, and the alternate screen buffer.
This patch adds them there, so we don't hard-code those escape sequences
[8 lines not shown]
[SelectionDAG] Use the Func kind for inline asm operands only on x86
The only platform that currently uses the "Func" kind is x86. The other
targets aren't able to handle it. For instance, SystemZ asserts "This is
not a register operand!" and Hexagon hits an llvm_unreachable.
Gate the use of the Func kind behind a new hook
TargetLowering::supportsInlineAsmFuncOperands(), which only x86
overrides.
Assisted-by: Claude Opus 5.5
[MSan] Handle llvm.experimental.vector.extract.last.active (#233552)
`LoopVectorize` emits `@llvm.experimental.vector.extract.last.active`
when lowering `FindLast` reductions, often consuming a vector produced
by `@llvm.masked.load` with a `poison` passthru (shadow `-1` in inactive
lanes).
Previously, `MemorySanitizerVisitor` did not handle
`Intrinsic::experimental_vector_extract_last_active` and fell back to
`visitInstruction`, which checks that all lanes of all operands are
initialized. This caused false-positive MSan UMR reports whenever
inactive lanes of the input vector were uninitialized or `poison`.
Add `MemorySanitizerVisitor::handleVectorExtractLastActive`:
- Check that the `%mask` vector is fully initialized.
- Propagate shadow by calling
`@llvm.experimental.vector.extract.last.active` on `(DataShadow, Mask,
PassThru)` so only the extracted active lane shadow (or
`getShadow(PassThru)` if no lane is active) is propagated.
[3 lines not shown]
[lldb] Consume the source of zero-sized DW_OP_piece operations (#219395)
`Evaluate_DW_OP_piece` returned early for a zero-sized piece before
removing
its source location from the expression stack. A later non-empty piece
could
then assemble the correct composite buffer while the stale source
remained on
the stack and was returned instead.
Consume the source stack entry when a zero-sized piece has one, while
still
contributing no bytes to the composite. Add a unit test covering a
zero-sized
register piece followed by a non-empty register piece.
Fixes #209099
TableGen: Don't distinguish intrinsic function attribute sets by hasSideEffects
hasSideEffects does not contribute to the emitted function attributes,
so including it in the uniquing key emitted duplicate attribute sets.
This removes 17 redundant function attribute sets, which also shrinks
the function attribute set ID from 8 to 7 bits.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>