LLVM/project ce78771llvm/lib/Target/AArch64 AArch64InstrFormats.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

[AArch64][llvm] Add support for FEAT_HINTE for Armv9.6 onwards (#206905)

Add support for `FEAT_HINTE`, as defined in the Arm ARM M.c edition[1]

This defines the Extended Hint instruction space. `FEAT_HINTE` is
optional from Armv9.0, and mandatory from Armv9.6.

Add MC coverage for assembly, disassembly, diagnostics, generic sysreg
fallback behavior, Clang driver handling, and target parser extension
mapping.

[1] https://developer.arm.com/documentation/ddi0487/latest
DeltaFile
+56-0llvm/test/MC/AArch64/hinte.s
+27-0llvm/lib/Target/AArch64/AArch64InstrFormats.td
+18-0llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+17-0llvm/test/MC/AArch64/hinte-diagnostics.s
+10-0llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
+6-1llvm/unittests/TargetParser/TargetParserTest.cpp
+134-14 files not shown
+149-310 files

LLVM/project 9db1a29cross-project-tests/debuginfo-tests/dexter/dex/evaluation ExpectRewriter.py Metrics.py, cross-project-tests/debuginfo-tests/dexter/dex/test_script Nodes.py

[Dexter] Add !type and !type/all nodes to test variable types (#204159)

This patch adds the second kind of variable expect, !type, which tests
the type of a variable as reported by the debugger. As with !value, this
is a string comparison of the debugger output with the script expected
value - this means that even if two types are identical (e.g. typedef),
a !type node will only match the one that the debugger displays by
default.

Script writing and aggregates work the same for !type as for !value, and
the metrics reported are largely similar, with the exception that
"unexpected", "seen", and "missing" metrics are reported separately for
values and types.
DeltaFile
+114-2cross-project-tests/debuginfo-tests/dexter/dex/test_script/Nodes.py
+71-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_types_expected.cpp
+55-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_types.cpp
+54-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_types.cpp
+9-6cross-project-tests/debuginfo-tests/dexter/dex/evaluation/ExpectRewriter.py
+6-5cross-project-tests/debuginfo-tests/dexter/dex/evaluation/Metrics.py
+309-133 files not shown
+317-199 files

LLVM/project 2523d72llvm/lib/Target/ARM ARMBaseInstrInfo.cpp ARMInstrThumb.td, llvm/test/CodeGen/ARM machine-outliner-thunk-tcgpr.mir

[ARM] Change register class of tTAILJUMPr's destination (#206763)

This patch changes the register class of tTAILJUMPr's destination from
tcGPR to GPR.

tTAILJUMPr is lowered into a BX (branch-and-exchange) with a register
operand. This instruction has no restrictions about its register
operand, therefore the previous limitation to tcGPR was too tight.

The important consequence of this change is in the machine outliner for
ARM. With this change, code sequences that terminate with a tBLXr can be
outlined regardless of the register used as operand. Before, if the
register used was callee saved, that is, not in tcGPR, the outliner gave
up. The outlining process replaces the call (BLX) by a tail call (BX).

This replacement can be problematic if the callee saved registers are
not properly restored before the tail call. However, one important
detail to mention is that tTAILJUMPr is created during pseudo
instruction expansion, which in turn takes place after register

    [4 lines not shown]
DeltaFile
+38-17llvm/test/CodeGen/ARM/machine-outliner-thunk-tcgpr.mir
+11-12llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+1-1llvm/lib/Target/ARM/ARMInstrThumb.td
+50-303 files

LLVM/project 544ec07cross-project-tests/debuginfo-tests/dexter-tests optnone-vectors-and-functions.cpp optnone-simple-functions.cpp, cross-project-tests/debuginfo-tests/dexter-tests/memvars inlining-dse.c

[Dexter] Update lldb-based dexter-tests to use script-mode

This patch replaces uses of heuristic-mode Dexter in the dexter-tests suite
with uses of the script-mode, for tests that use DAP (via lldb-dap). The
updates are largely straightforward but occasionally non-trivial, and in
some cases some slight modifications have been made to keep the "spirit" of
the test intact.
DeltaFile
+93-73cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp
+98-51cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp
+68-54cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
+57-33cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
+30-19cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp
+19-22cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c
+365-25221 files not shown
+669-39227 files

LLVM/project 1825a91cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb LLDB.py

Remove all tags that LLDB may add
DeltaFile
+5-2cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
+5-21 files

LLVM/project bf524bfcross-project-tests/debuginfo-tests/dexter/dex/evaluation Metrics.py

Add irretrievable metric
DeltaFile
+5-0cross-project-tests/debuginfo-tests/dexter/dex/evaluation/Metrics.py
+5-01 files

LLVM/project 1a99099cross-project-tests/debuginfo-tests/dexter Script.md

order->at_least
DeltaFile
+1-1cross-project-tests/debuginfo-tests/dexter/Script.md
+1-11 files

LLVM/project 4deef35cross-project-tests/debuginfo-tests/dexter Script.md, cross-project-tests/debuginfo-tests/dexter-tests global-constant.cpp

review comments
DeltaFile
+2-1cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp
+2-0cross-project-tests/debuginfo-tests/dexter/Script.md
+4-12 files

LLVM/project 5ac26fdcross-project-tests/debuginfo-tests/dexter-tests optnone-loops.cpp optnone-fastmath.cpp, cross-project-tests/debuginfo-tests/dexter-tests/memvars ctrl-flow.c loop.c

Apply clang-format within reason
DeltaFile
+9-15cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
+5-5cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
+3-3cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp
+2-2cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c
+2-2cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c
+2-2cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c
+23-297 files not shown
+29-3813 files

LLVM/project e4f0ddccross-project-tests/debuginfo-tests/dexter README.md Heuristic.md

[Dexter] Document the structured script model

This patch adds documentation for the script model to the Dexter README,
shunting heuristic-mode information into a separate doc, creating a new
doc for script-mode, and linking to both (with a brief summary of the
differences) from the base README.
DeltaFile
+6-232cross-project-tests/debuginfo-tests/dexter/README.md
+231-0cross-project-tests/debuginfo-tests/dexter/Heuristic.md
+213-0cross-project-tests/debuginfo-tests/dexter/Script.md
+450-2323 files

LLVM/project 33e2d35cross-project-tests/debuginfo-tests/dexter-tests optnone-vectors-and-functions.cpp, cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio VisualStudio.py

[Dexter] Switch to using script-mode by default

This patch changes the default mode of Dexter from heuristic-mode to
script-mode. The --use-script argument is replaced with --use-heuristic,
some comments/docs/error messages are updated accordingly, and tests have
their flags switched accordingly.
DeltaFile
+2-6cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py
+3-4cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp
+3-3cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py
+2-2cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp
+2-2cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py
+2-2cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates.cpp
+14-19168 files not shown
+188-208174 files

LLVM/project de04b0across-project-tests/debuginfo-tests/dexter/dex/debugger/lldb LLDB.py, cross-project-tests/debuginfo-tests/dexter/dex/evaluation Metrics.py

format
DeltaFile
+6-2cross-project-tests/debuginfo-tests/dexter/dex/evaluation/Metrics.py
+1-1cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
+7-32 files

LLVM/project 6690a88cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb LLDB.py

Fix: Account for weird function name endings in lldb-dap
DeltaFile
+5-0cross-project-tests/debuginfo-tests/dexter/dex/debugger/lldb/LLDB.py
+5-01 files

LLVM/project ca61168cross-project-tests/debuginfo-tests/dexter/dex/evaluation Metrics.py

backport: add optimized out metric
DeltaFile
+7-1cross-project-tests/debuginfo-tests/dexter/dex/evaluation/Metrics.py
+7-11 files

LLVM/project f8eaddccross-project-tests/debuginfo-tests/dexter Script.md

Address various review comments
DeltaFile
+21-20cross-project-tests/debuginfo-tests/dexter/Script.md
+21-201 files

LLVM/project fe1e083cross-project-tests/debuginfo-tests/dexter-tests optnone-loops.cpp vla.c, cross-project-tests/debuginfo-tests/dexter-tests/memvars unused-merged-value.c ptr-to.c

Address review comments, format
DeltaFile
+46-40cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
+11-9cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c
+4-10cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c
+2-3cross-project-tests/debuginfo-tests/dexter-tests/vla.c
+3-2cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
+2-1cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c
+68-6512 files not shown
+90-7718 files

LLVM/project e083139cross-project-tests/debuginfo-tests/dexter/dex/test_script Nodes.py, cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts floats.cpp

Address review comments: extend docs, add test comment
DeltaFile
+7-7cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/floats.cpp
+2-1cross-project-tests/debuginfo-tests/dexter/dex/test_script/Nodes.py
+9-82 files

LLVM/project c4226c8cross-project-tests/debuginfo-tests/dexter/dex/test_script Nodes.py

Add docstring for type (and value)
DeltaFile
+16-0cross-project-tests/debuginfo-tests/dexter/dex/test_script/Nodes.py
+16-01 files

LLVM/project 49b3832cross-project-tests/debuginfo-tests/dexter/dex/evaluation ExpectRewriter.py Metrics.py, cross-project-tests/debuginfo-tests/dexter/dex/test_script Nodes.py

[Dexter] Add !type and !type/all nodes to test variable types

This patch adds the second kind of variable expect, !type, which tests the
type of a variable as reported by the debugger. As with !value, this is a
string comparison of the debugger output with the script expected value -
this means that even if two types are identical (e.g. typedef), a !type node
will only match the one that the debugger displays by default.

Script writing and aggregates work the same for !type as for !value, and the
metrics reported are largely similar, with the exception that "unexpected",
"seen", and "missing" metrics are reported separately for values and types.
DeltaFile
+98-2cross-project-tests/debuginfo-tests/dexter/dex/test_script/Nodes.py
+71-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/Inputs/rewrite_types_expected.cpp
+55-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/rewriting/rewrite_types.cpp
+54-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_types.cpp
+9-6cross-project-tests/debuginfo-tests/dexter/dex/evaluation/ExpectRewriter.py
+6-5cross-project-tests/debuginfo-tests/dexter/dex/evaluation/Metrics.py
+293-133 files not shown
+301-199 files

LLVM/project 3f272c0cross-project-tests/debuginfo-tests/dexter/dex/evaluation ExpectMatch.py, cross-project-tests/debuginfo-tests/dexter/dex/test_script Nodes.py

[Dexter] Add ability to check float values within a range

Adds a new node type, !float, which can be used to match debugger ouptut as
float values rather than as strings, optionally allowing a range to be
specified for inexact matches. This new node allows a list of values to be
given, effectively a shorthand for a list of individual !float nodes.
DeltaFile
+109-1cross-project-tests/debuginfo-tests/dexter/dex/test_script/Nodes.py
+68-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/floats.cpp
+12-1cross-project-tests/debuginfo-tests/dexter/dex/evaluation/ExpectMatch.py
+189-23 files

LLVM/project 0ce574ecross-project-tests/debuginfo-tests/dexter/dex/evaluation ExpectMatch.py

Add a comment
DeltaFile
+3-0cross-project-tests/debuginfo-tests/dexter/dex/evaluation/ExpectMatch.py
+3-01 files

LLVM/project 19d4d08cross-project-tests/debuginfo-tests/dexter/dex/evaluation ExpectRewriter.py RunMatch.py

Change checks to use isinstance
DeltaFile
+1-1cross-project-tests/debuginfo-tests/dexter/dex/evaluation/ExpectRewriter.py
+1-1cross-project-tests/debuginfo-tests/dexter/dex/evaluation/RunMatch.py
+2-22 files

LLVM/project f55aac5cross-project-tests/debuginfo-tests/dexter/dex/evaluation ExpectMatch.py, cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation eval_sublist_aggregates.cpp eval_sublist_aggregates_addresses.cpp

[Dexter] Allow matching lists of values for aggregate members

This patch slightly extends the matching of aggregate members to allow for
lists of expected values for individual members, functioning the same as
lists of expected values for scalar values.
DeltaFile
+136-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates.cpp
+54-0cross-project-tests/debuginfo-tests/dexter/feature_tests/scripts/evaluation/eval_sublist_aggregates_addresses.cpp
+8-4cross-project-tests/debuginfo-tests/dexter/dex/evaluation/ExpectMatch.py
+198-43 files

LLVM/project 74450b1llvm/lib/Target/ARM ARMConstantIslandPass.cpp

Add emergency option to turn off verification
DeltaFile
+33-26llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
+33-261 files

LLVM/project 6f9ac38libcxx/test/std/numerics/bit byteswap.verify.cpp

[libc++][test] Cover byteswap _BitInt padding on every ABI with width 72 (#206360)

`std::byteswap` is required to reject integer types that have padding
bits, and one test case checks that it does. The case used `unsigned
_BitInt(96)`, but #205295 had to skip it on 32-bit x86. On the i386
System V ABI, `_BitInt(96)` is exactly 12 bytes with no padding, so
`std::byteswap` accepts it and the expected error never fires. The skip
used `!defined(__i386__)`, a target name that stands in for an object
layout the preprocessor cannot see.

This change uses `unsigned _BitInt(72)` instead. Its 9 value bytes round
up to 12 bytes on 32-bit x86 and 16 bytes everywhere else, so the type
always has padding and `std::byteswap` always rejects it. The case now
runs on every target, 32-bit x86 included, with no target guard.

Follows up on #205295.

Assisted-by: Claude (Anthropic)


    [3 lines not shown]
DeltaFile
+9-12libcxx/test/std/numerics/bit/byteswap.verify.cpp
+9-121 files

LLVM/project d59fe9ellvm/lib/Target/AArch64 AArch64Arm64ECCallLowering.cpp, llvm/test/CodeGen/AArch64 arm64ec-exit-thunks.ll arm64ec-entry-thunks.ll

[Arm64EC] Add support for `fp128` (#206980)

fixes https://github.com/llvm/llvm-project/issues/94434

Analogue to https://github.com/llvm/llvm-project/pull/152843 but for
`fp128`.

Testing is a bit thin still, we need to fix some other problems like
https://github.com/llvm/llvm-project/issues/144006 so that the arm64ec
target can be added to more tests.
DeltaFile
+150-38llvm/test/CodeGen/AArch64/arm64ec-exit-thunks.ll
+104-6llvm/test/CodeGen/AArch64/arm64ec-entry-thunks.ll
+17-5llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
+4-4llvm/test/CodeGen/Generic/fp128-math-libcalls.ll
+4-1llvm/test/CodeGen/Generic/fp128-exp10-libcall.ll
+279-545 files

LLVM/project 75e0516lldb/source/Host/windows PipeWindows.cpp

[lldb][Windows] Return EOF from PipeWindows::Read on a closed write end (#207017)

A closed pipe write end is EOF, not an error. On POSIX, `read()` returns
0, but on Windows `ReadFile` fails with `ERROR_BROKEN_PIPE`. The
lldb-server `gdbserver/platform` pipe synchronization in
`GDBRemoteCommunication::StartDebugserverProcess` reads the pipe until
EOF, so without this it sees an error instead of EOF and reports the
sync as failed.

Translate both broken-pipe conditions to a zero-length read so
cross-platform callers can detect EOF uniformly.

rdar://180736036
DeltaFile
+19-3lldb/source/Host/windows/PipeWindows.cpp
+19-31 files

LLVM/project f1454e0llvm/test/Transforms/LoopVectorize/RISCV interleaved-cost.ll

[LV] Inline llvm-lit DEFINEs in interleaved-cost.ll NFC (#207143)

Turns out update_analyze_test_checks.py doesn't really like the
DEFINEs, which causes some subsequent updates to have CHECK lines
erroneously merged.
DeltaFile
+4-6llvm/test/Transforms/LoopVectorize/RISCV/interleaved-cost.ll
+4-61 files

LLVM/project 6a3359flibcxx/include future, libcxx/test/std/thread/futures/futures.task destruction_order.pass.cpp

[libc++] Remove _LIBCPP_COMPRESSED_PAIR from packaged_task (#200642)
DeltaFile
+58-0libcxx/test/std/thread/futures/futures.task/destruction_order.pass.cpp
+6-5libcxx/include/future
+64-52 files

LLVM/project 88bf280libcxx/include fstream, libcxx/test/benchmarks/streams fstream.bench.cpp ofstream.bench.cpp

Reapply "[libc++] Optimize fstream::read" (#206453)

This was reverted due to causing crashes if an ifstream wasn't opened.
This patch addresses this issue by simply checking whether the `__file_`
handle is null, and if it is simply fall back to the generic
implementation.

Fixes #168628
Fixes #205845

This reverts commit 347512ff38748ac6ebfacbfda172edb5cf1edbe2.
DeltaFile
+45-0libcxx/test/benchmarks/streams/fstream.bench.cpp
+0-27libcxx/test/benchmarks/streams/ofstream.bench.cpp
+19-0libcxx/include/fstream
+10-0libcxx/test/std/input.output/file.streams/fstreams/ifstream.members/xsgetn.pass.cpp
+1-1libcxx/test/libcxx/input.output/file.streams/fstreams/traits_mismatch.verify.cpp
+1-1libcxx/test/libcxx/input.output/file.streams/fstreams/filebuf/traits_mismatch.verify.cpp
+76-291 files not shown
+78-297 files