[LLD] [COFF] Explicitly prefer def files and export directives over /export-all-symbols (#190749)
If a def file is specified (or explicit export directives), they should
be preferred over exports from /export-all-symbols. There is no need to
warn about conflicts in these cases, just make a clear preference and
ignore the export with lower preference.
[LLVM][CodeGen][AArch64] Improve generated code for SVE VLS truncates. (#190778)
When SVE VLS is enabled we request custom lowering for all ISD::TRUNCATE
operations involving legal types. However, we only custom lower all of
them when NEON is not available and so there are variants that do not
require SVE and can be done via NEON but we are instead falling back to
default expansion, which is this case means scalarisation. This patch
updates custom lowering to mark the variants that have isel patterns
available.
[LLD] [COFF] Make weak aliases to implementations take priority over null pointers (#190491)
Normally, one uses weak aliases in one out of two ways.
Either one uses weak definitions to let a weak definition work as
fallback if a strong definition isn't available (which works with
link.exe as well), or as a sort of selectany COMDAT, to let multiple
weak definitions coexist, letting the linker pick any of them. (This
isn't supported by MS link.exe, but requires the LLD extension option
-lld-allow-duplicate-weak, normally implied by the mingw mode.)
Or, one uses weak references, to let a referencing translation unit
check at runtime, whether a symbol was found (at link time) or not,
optionally using the symbol.
In the latter case, the referencing object file provides a fallback
value for the weak symbol, as an absolute null symbol.
Previously, if we had multiple weak externals for the same symbol, we'd
[16 lines not shown]
[lldb][AArch64][Linux] Handle SME only and kernels < 6.19 (#189982)
Part of #138717.
The feature we need to use to restore non-streaming mode after an
expression enters streaming mode was only added recently in kernel 6.19.
There is no other way to restore this state, so I have adjusted the code
to use the normal FP restore path for every state other than: on an SME
only system and in streaming mode and restoring non-streaming state
If that fails, we're on < 6.19 and all we can do is accept it and
restore the rest of the register state.
I've updated the tests to check kernel version and for < 6.19 remove any
expression tests that hit this specific state. I could have set up
expected state for them, but it's basically undefined behaviour, and I
think it would make the already complex tests even worse.
[4 lines not shown]
[MLIR] Add I{8,16}Enum tablegen classes (#190825)
Add utility tablegen classes for creating 8 and 16 bit enums,
simplifying defining enums that fit into smaller types.
[LLVM][CodeGen][AArch64] Replace tablegen based lowering of vector half/bfloat operations. (#190164)
We were essentially doing lowering via instruction selection. This patch
removes the tablegen patterns and modifies their operation actions so
they get lowered in the traditional manner.
[lldb] Remove "AppendNoteWithFormat(" (#190941)
This method is surprising because it does not automatically add a
newline like AppendNoteWithFormatv and other AppendNote... functions.
If you need to manage the newlines yourself, you should add an
equivalent of GetOutputStream for notes. See
efc0bcdf542475301805ed8478a5d5845f44dc53 for examples of that done for
messages.
AppendNoteWithFormat( is not used at all either (there are a few callers
of `AppendNoteWithFormatv(`).
[AMDGPU] Fix async operations in GlobalISel on gfx12-plus (#190776)
For GFX1250 async LDS intrinsics, map the LDS pointer operand to VGPR
instead of SGPR. These instructions use $vdst/$vdata (VGPROp_32) for the
LDS address, unlike the pre-GFX12 variants which use M0 (SGPR).
Assisted-By: Claude Opus 4.6
[lldb][test] Remove libc++ dependency in common libcxx-simulators header (#190922)
After we made the test-suite mostly compile against system libc++ (in
https://github.com/llvm/llvm-project/pull/190034), the `invalid-vector`
test started failing on the macOS bots with:
```
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/include/c++/v1 -std=c++20 --driver-mode=g++ -MT main.o -MD -MP -MF main.d -c -o main.o /Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake/llvm-project/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx-simulators/invalid-vector/main.cpp
[2026-04-07T00:09:44.764Z] /Users/ec2-user/jenkins/workspace/llvm.org/lldb-cmake/llvm-project/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx-simulators/invalid-vector/main.cpp:6:1: error: too few template parameters in template redeclaration
[2026-04-07T00:09:44.764Z] 6 | template <typename T> struct vector {
[2026-04-07T00:09:44.764Z] | ^~~~~~~~~~~~~~~~~~~~~
[2026-04-07T00:09:44.764Z] /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/include/c++/v1/iosfwd:167:1: note: previous template declaration is here
[2026-04-07T00:09:44.764Z] 167 | template <class _Tp, class _Alloc = allocator<_Tp> >
[2026-04-07T00:09:44.764Z] | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
This patch fixes the error by removing the STL header includes from the
`compressed_pair.h` header. Presumably the `vector` forward declaration
somehow gets pulled in via one of those headers (via `iosfwd`).
The `libcxx-simulators` tests are supposed to be STL-independent, so
removing this dependency works towards that goal.
[WebAssembly] Fix: fixCallUnwindMismatches after fixCatchUnwindMismatches (#187484)
`fixCallUnwindMismatches()` adds an extra try block around call sites
with incorrect unwind targets. `fixCatchUnwindMismatches()` handles
catch blocks that have incorrect next unwind destinations. Previously we
ran `fixCallUnwindMismatches()` first and then ran
`fixCatchUnwindMismatches()`. The problem is that
`fixCatchUnwindMismatches()` wraps entire try blocks which can change
the unwind destination of the calls inside. If the calls had an
incorrect unwind target to begin with, they will be wrapped already and
so the outer wrapping won't alter their unwind target. However, if they
start out with a correct unwind target, they won't get wrapped and then
that can be messed up by `fixCatchUnwindMismatches()`.
The fix is to run `fixCatchUnwindMismatches()` first.
`fixCallUnwindMismatches()` never messes up the result of
`fixCatchUnwindMismatches()` so this is the correct order.
Resolves #187302
[libc++] Properly calculate rounded-up size for `{allocate,make}_shared` (#190315)
Previously, the allocated size might be a bit too small for certain
cases. This patch makes the size calculated with potentially larger
alignment of the whole control block.
[lldb] Use GetOutputStream instead of repeated AppendMessageWithFormat (#189674)
AppendMessageWithFormat is odd because it's the only AppendMessage...
method that does not add a newline for you.
This PR changes places that use it to output raw text, or build
up a large message. They now use GetOutputStream() instead,
which makes it a bit clearer that we're building one big message,
and where newlines end up.
This removes the last callers of AppendMessageWithFormat, so I am
removing it too.
Reapply "[lldb] Increase timeout on lldbutil.wait_for_file_on_target" (#190833)
Reapplication notes:
After reviewing the test failures that caused the original reverts, I'm
not convinced that this change is related. None of the test failures
failed while timing out waiting for a file.
Original Summary:
I've been tracking sporadic timeouts waiting for a file to appear on
macOS buildbots (and occasionally local development environments). I
believe I've tracked it down to a regression in process launch
performance in macOS.
What I noticed is that running multiple test suites simultaneously
almost always triggered these failures and that the tests were always
waiting on files created by the inferior. Increasing this timeout no
longer triggers the failures on my loaded machine locally.
This timeout moves from about 16 seconds of total wait time to about 127
[4 lines not shown]
[lldb][NFC] Add helper to compute breakpoint's constituent load address (#190762)
This allows the callsite to be simplified.
This also exposes a bug where the variable `ShouldShowError` is guarding
more than the error printing.
[SPIR-V] Change DL for logical SPIR-V (#190807)
This PR originates from bogner@ draft PR. It modifies the triple for
logical SPIR-V to use the new vector sizing feature.
This means updating the tests, and fix one codegen issue:
on the old datalayout, we knew a float3 allocation size was the
same as a float4 allocation. This is now invalid, thus
a store `<4 x float>` into a `<3 x float>` allocation is UB.