Skip to content

Conversation

@ronlieb
Copy link
Collaborator

@ronlieb ronlieb commented Jan 8, 2026

No description provided.

antoniofrighetto and others added 30 commits January 8, 2026 14:46
…ct targets

While lowering phi-nodes to copies, subsequently to f7a53d8,
ensure that such copies are placed before any INLINEASM_BR
instructions, only if this actually happens to be the case.
If a block with an INLINEASM_BR instruction and any of its
indirect jump target are distinct blocks, the new copy on
the indirect target continues to be normally emitted prior
to the terminator.

Fixes: llvm#172824.
Adds support for the concat/slice_shape operations after spec change:
arm/tosa-specification@efc88a1.

This includes the operator definition, same rank checks and level checks
during validation. It does not currently include support for folding or
shape inference. This will be added in a later commit.

---------

Co-authored-by: Iliyan Georgiev <Iliyan.Georgiev@arm.com>
…eFloat` (llvm#152833)

The default `half` legalization, which Wasm currently uses, does not
respect IEEE conventions: for example, casting to bits may invoke a lossy
libcall, meaning soft float operations cannot be correctly implemented.
Change to the soft promotion legalization which passes `f16` as an `i16`
and treats each `half` operation as an individual
f16->f32->libcall->f32->f16 sequence.

Of note in the test updates are that `from_bits` and `to_bits` are now
libcall-free, and that chained operations now round back to `f16` after
each step.

Fixes the wasm portion of
llvm#97981
Fixes the wasm portion of
llvm#97975
Fixes: llvm#96437
Fixes: llvm#96438
Otherwise we run into some issues building some of these internally with
our use of clang header modules.
)

IRCE may fail to prove predicates when loop bounds are rewritten by
LoopConstrainer::applyLoopGuards(). In such cases, simple predicates
(e.g. %start < %limit) become obscured by strengthened SCEV expressions,
even though they are trivially implied by the guard in the loop
preheader.

See: llvm#167827

This change makes IRCE attempt to prove predicates both on the original
SCEVs and on the guarded SCEVs, preventing incorrect rejection of loops
with safe bounds.
…lvm#174982)"

This reverts commit 46d0862.

This previously landed a couple commits ago and now duplicates the dep,
breaking the bazel build.
Errors in array constructor values result in the array having
less elements than it should, which can cause other errors that
will confuse the user. Avoid this by not returning an expression
on errors.

Fixes llvm#127425
Using a `raw_svector_ostream` object is not necessary, because this is
hidden in the conversion function. In addition, there is no need to
reason about a zero termination of the string. Declaring the ascii and
ebcdic version of the string variables at the same time makes sure that
both strings are allocated with the same size.
…at` (llvm#152632)

On PowerPC targets, `half` uses the default legalization of promoting to
a `f32`. However, this has some fundamental issues related to inability
to round trip. Resolve this by switching to the soft legalization, which
passes `f16` as an `i16`.

The PowerPC ABI Specification does not define a `_Float16` type, so the
calling convention changes are acceptable.

Fixes the PowerPC part of
llvm#97975
Fixes the PowerPC part of
llvm#97981
…lvm#174983)

This is a fix for the asan bot after
llvm#174386

Failing bot: https://lab.llvm.org/buildbot/#/builders/24/builds/16371

This commit undoes a simplification I thought reduced copied+pasted
code. I will merge it like this now to unblock the bot, and then work
separately on a different way to share code between both callbacks.
In Kona, WG21 decided to revert trivial relocation (P2786).

Keep the notion of relocatability
(used in the wild and likely to come back),
but remove the keyword which is no longer conforming
This patch refactors `enable_if`s inside `<any>` to use the `..., int> =
0` variant that we try to use throughout the code base and inlines some
of the functions into the class body to avoid duplicating the
`enable_if`s.
Because `__arm_za_disable` is a private-ZA function, it's only ever
entered with ZA state `off` or `dormant`. If the state is `off` then we
can safely return and there is no need to call `__arm_tpidr2_save` or to
explicitly set PSTATE.ZA or TPIDR2_EL0 to zero.
Adds a pattern matcher for floating-point absolute value (ISD::FABS),
following the same pattern as m_Abs for integer absolute value.

Fixes llvm#174751
…74985)

Appears to be a copy+paste type - most of the x86 masked truncation intrinsics still can't be made constexpr at this time

Fixes llvm#166814
The compiler should not generate subvectors with the same extractelement
instructions, it may cause a crash and leads to inefficient
vectorization.

Fixes llvm#174773
llvm#166494 added support for using `inttoptr` in global initialisation, and
lowering int into `OpSpecConstantOp OpConvertUToPtr`. Unfortunately, it
slightly more subtle case / exposed an existing issue around the `COPY`
pseudo-op. This patch ensures that we glance through a `COPY` when
figuring out whether an `OpConvertUToPtr` is actually operating on a
global. We also correctly handle the case where a `G_PTR_ADD` is used by
an `OpSpecConstantOp` in the context of global initialisation, which
would otherwise lead to broken SPIR-V wherein the latter would reference
a non constant Op.

---------

Co-authored-by: Marcos Maronas <marcos.maronas@intel.com>
…m#174505)

This is done for logical operations and auipc/lui.

Patch based on code written by Tim Northover.
…s from a common load/broadcastload (llvm#174986)

Allows us to handle freely concatable cases after a broadcast load has
become shared by different vector width uses by peeking through
bitcasts/extract_subvector nodes
Fixed typo and added initialization of modifier.
…sn't legal/custom for the promoted type. (llvm#174911)

This allows the expand code to see the original size. Previously we
relied on computeKnownBits to optimize the code after it is expanded
later. This removes the need to zero extend the input during promotion
that was needed to make computeKnownBits work.
)

Match the structure of ComputeKnownBits. Expose the condition
handling as a utility function so SimplifyDemanedFPClass can make
use of this. Avoids some redundant code and improves accuracy in
at least one case.
Improve reported known fp-class when simplifying select.

Previously we just reported the conservative result that
the result class could be either of the inputs. Use the new
utility to apply the compare+select logic the default case of
computeKnownFPClass would catch.
VINTERP instructions always have src0, src1, src2 and dst.
Similar to the other PRs, this looks up the type from a member variable.
Here, we can use the type of `_Mapptr`. On its own, that's enough to
pass the test with clang-cl.
In llvm#174641, package.json was updated, but the package-lock.json file
wasn't regenerated.
Depends on:
* llvm#174618

If a format entity calls back into `Format` and passes it a format
entity type that we're already in the process of parsing, we are likely
going to run into infinite recursion and blow the stack. I think this is
only an issue when a format entity calls Format on a format string
provided by the user (otherwise we're in control of the recursion). An
example of this can be seen in the test-case adjusted by this patch.

This seems to be causing actual crashes in the field, so this patch adds
basic tracking to `Formatter::Format` that checks whether we're
recursively parsing the same entity. This may very well be intended by
some entities (e.g., `Root` and `Scope`), so there is an escape hatch
for those. There's also a special case where `Variable` causes a
recursive format (which I pointed out in a source comment).

We could narrow the scope of what kind of recursion is allowed by adding
a `UserProvidedFormatChild` (or similar) flag to `Entry`, and only
disallow recursing on those kinds of entries. For now I just use an
exemption list in `IsInvalidRecursiveFormat`.

Adding a unit-test for this is unfortunately tricky because the only
format entity that currently suffers from this is
`${function.name-with-args}`, which requires a language plugin and valid
target. If we really wanted to we could probably mock all of those, but
the shell test provides test coverage for the previously crashing case.

rdar://166890120
`vscode-test` requirest a GUI or something that emulates one. Use the
Mocha test library directly for unitest

Run unittests using `npm run unittest`
lenary and others added 24 commits January 8, 2026 09:28
Since this code was last reviewed, more relaxations have been added to
the psABI for existing standard relocations that LLVM didn't have marked
as relaxable.

This change ensures that LLVM marks the following relocations (and their
respective fixups) as relaxable:
- `R_RISCV_JAL`
- `R_RISCV_GOT_HI20`
- `R_RISCV_TPREL_HI20`
- `R_RISCV_TLSDESC_HI20`

This also updates the linker relaxation test to use `-NEXT` to check all
the output lines.

There are lots more emitted relocations, not only due to JAL being
relaxable, but branches are now also marked linker relaxable because
they can be turned into `b<cc>; jal` during assembly relaxation, which
may also be marked relaxable.
…0041)

Use the default of `LLVM/Tests/Unit` to group these tests with other
LLVM unit test targets in the IDE.
…llvm#174649)

Remove problematic `return()` statements from
mlir_configure_python_dev_packages macro and convert nanobind detection
to FATAL_ERROR.

Using `return()` in a CMake macro is problematic because it returns from
the calling scope, not the macro itself, causing the parent
CMakeLists.txt to silently skip subsequent configuration steps. This
leads to confusing build failures when Python bindings are enabled but
nanobind is missing.

With this change, users get an immediate error with clear instructions
to install nanobind or set nanobind_DIR, rather than silent
configuration failures.
Create PPCISD nodes for DMF DMXXINSTDMR512 and DMXXINSTDMR256 operations
to allow type checking.
…m#174868)

Fix a crash when tab-completing arguments for parsed commands that have
arguments but no options.

In `HandleArgumentCompletion`, `GetOptions()` returns `nullptr` when a
command has no options defined. The code was dereferencing this pointer
without a null check, causing a segfault when attempting tab completion.
Implement support for AtomicExpr for Aggregate expr
Summary:
This patch adds an LLVM intrinsic and lowering for a subgroup ballot and
a corresponding clang builtin. This uses the already present support but
provides in a way accessible to other targets. With this and
llvm#174655 we should be able to
most of the basic functions, like shuffling, active masks, and
reductions. More work will be needed for canonicalizing / exposing the
SPIR-V functions, but these are the fundamental builtins I need.
…izer (llvm#173734)

This patch extends the AArch64ConditionOptimizer pass to handle CSINC
instructions within a single basic block, complementing the existing
cross-block branch optimization.

The optimization finds two CMP+CSINC pairs comparing the same register
with immediates differing by 1, and adjusts one comparison to enable CSE
to eliminate the redundant CMP instruction.

Example transformation:
```
  cmp  w8, #10
  csinc w9, w0, w1, gt     ; w9 = (w8 > 10) ? w0 : w1+1
  cmp  w8, #9              ; Removed by CSE after adjustment
  csinc w10, w0, w1, gt    ; w10 = (w8 > 9) ? w0 : w1+1
```

After optimization:
```
  cmp  w8, #10
  csinc w9, w0, w1, gt     ; w9 = (w8 > 10) ? w0 : w1+1
  csinc w10, w0, w1, ge    ; w10 = (w8 >= 10) ? w0 : w1+1
```

The existing cross-block logic has also been extracted into its own
method.

Any feedback on code quality and better practices is highly welcome.

Co-authored-by: Hussam Alhassan <hsm.link@proton.me>
…st targets (llvm#174905)

Some tests are already supported on "remote" devices and simulators.
However, there is currently no way to distinguish a remote macOS host
from a local one.

This adds the darwin-remote feature which is common to all test targets
which use a wrapper script (e.g. iossim_run.py).

rdar://167735355

---------

Co-authored-by: Dan Blackwell <danblackwell95@gmail.com>
…vm#175035)

As the lead maintainer, I've been asked by the project council to
confirm that we have an up-to-date list of active maintainers for LLDB.

In light of that, I'd like to nominate Charles and Nerixyz as Windows
maintainers.

As a reminder, our community policies regarding the responsibilities of
maintainers can be found here:
https://llvm.org/docs/DeveloperPolicy.html#maintainers.
I want to propose adding summary providers for `std::*_ordering` types
introduced in `C++20`. GDB already has pretty-printers for
[them](https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/python/libstdcxx/v6/printers.py#L1788),
so I think it will be useful.
Just fixing a typo from a copy paste.
This patch fixes the indentation of 2 docstrings in
`TestDAP_runInTerminal.py`.

Running `black` on that file with the default settings causes this
change. `darker` does not seem to catch it.

This is a prelude to llvm#174635.
…er (llvm#173111)

This change implements part of
https://discourse.llvm.org/t/rfc-lldb-make-pdbastbuilder-language-agnostic/89117,
the goal of which is make `PdbAstBuilder` language-agnostic.

It adds several new interface methods to `PdbAstBuilder` which allow
`SymbolFileNativePDB` to interact with it without using Clang-specific
types. These new methods would make up much of the interface of a future
abstract `PdbAstBuilder`. `SymbolFileNativePDB` is updated to use these.

The old Clang-specific methods were renamed if used by
`UdtRecordCompleter` or internally, or removed where possible.
…#174511)

A substring reference where the lower bound is higher than the upper
bound is defined in 9.4.1 to be zero-length.

Thus, a reference to a substring of a CHARACTER*(0) string such as

    string(foo():2)

cannot be a compile-time error since we do not know the return value of
foo().

We also should not error if the lbound > ubound at compile time.
This enables assumes to work. Somehow the most obvious example
I could think of does not work (return of assumed argument).
The context instruction for the return seems to be off by one.
Introduce a new flag `--call-graph-info` which outputs callgraph ELF
section information to the console as a text output or as JSON output.
The cause is that in `python3.14`, `fcntl.ioctl` now throws a buffer
overflow error
when the buffer is too small or too large (see
python/cpython#132919). This caused the Python
interpreter to fail terminal detection and not properly echo user
commands back to the screen.

Fix by dropping the custom terminal size check entirely and using the
built-in `sys.stdin.isatty()` instead.

Fixes llvm#173302
…part 4) (llvm#174906)

From this point on, the conversion is done to HLFIR, not to FIR.

Tests converted in Lower: allocatables.f90,
allocate-source-pointers.f90, array-constructor-2.f90,
array-elemental-calls-3.f90, array-elemental-calls.f90
lldb-dotest was likely getting LLDB_FRAMEWORK_DIR from another place
before. Now it's undefined when lldb-dotest is configured, so it's an
empty string. Some API tests will fail to link against LLDB.
@ronlieb ronlieb requested review from a team and dpalermo January 8, 2026 19:42
@z1-cciauto
Copy link
Collaborator

@z1-cciauto z1-cciauto merged commit 52c8ad7 into amd-staging Jan 8, 2026
25 checks passed
@z1-cciauto z1-cciauto deleted the amd/merge/upstream_merge_20260108130659 branch January 8, 2026 22:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.