Skip to content

[pull] main from llvm:main - #1721

Merged
pull[bot] merged 24 commits into
MPACT-ORG:mainfrom
llvm:main
Aug 6, 2026
Merged

[pull] main from llvm:main#1721
pull[bot] merged 24 commits into
MPACT-ORG:mainfrom
llvm:main

Conversation

@pull

@pull pull Bot commented Aug 6, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

MattPD and others added 24 commits August 5, 2026 19:42
…loned

Loop interchange moves four blocks to a different loop depth: the outer loop
header and latch, and the inner loop preheader and exit block. It also splits
the inner loop latch and clones the instructions that compute the latch branch
condition and induction variable updates into the new latch block.

LangRef guarantees that all uses of the value returned by one execution of a
`freeze` observe that same value. The guarantee does not extend across
executions, so one `freeze` may yield a different value each time it runs.
Different `freeze` instructions may also yield different values for the same
`undef` or poison operand. Both steps above can therefore change which value a
use observes.

Moving a `freeze` to a different loop depth changes which loop iterations share
one dynamic result. Uses that observed a single frozen value in the original
nest can observe values from separate executions after interchange. Cloning a
`freeze` creates a second, independent instruction, so the original and clone
can yield different values for the same operand.

Reject the interchange when a `freeze` appears in one of the four moved blocks
or among the instructions cloned into the new latch. A `freeze` elsewhere still
reaches the same uses from each execution, so it remains allowed. That includes
a `freeze` in the outer loop preheader and one in the inner loop body outside
the cloned computations. The check is conservative and does not try to prove
that the operand of a `freeze` is never `undef` or poison.

Assisted-by: Claude Opus 5, GPT-5.6 Sol.
The `hlsl::resource_class` and `hlsl::dimension` attributes both take a
single argument from a set of choices, but resource_class expects an
unevaluated identifier and dimension expects a string literal.
Consistently require the literal for both, and fix up the AST printers
to match.
Extract `shouldRelaxAlign` from `relaxAlign` and call it during
`emitCodeAlignment` to eagerly set the linker-relaxable flag on align
fragments. This ensures `isRangeRelaxable` returns correct results
before the layout phase.
)

Even if an AArch64 build attributes section contains only private
subsections and does not define feature flags or PAuth information,
`lld` still checks the values defined in the GNU Program Properties
section against the build attribute defaults, producing warnings and
errors. The patch adjusts the handling of build attributes so that only
the existing attributes are used.

---
* https://github.com/ARM-software/abi-aa/blob/main/buildattr64/buildattr64.rst
Bugpoint was removed in 9d5574d.

Reviewers: rnk, arsenm

Pull Request: #214251
as discussed in #203511, few of
these should not really be required (such as sink) with O0/opt-none, yet
we require this for consistency between legacy and NPM. We need to look
at the passes separately and selectively make strictly optimizing passes
optional.
Add CIRGen support for lowering SYCLKernelCallStmt during host
compilation, emitting the kernel launch statement in place of the
`sycl_kernel_entry_point` function body (mirroring classic CodeGen). 

Device compilation, were the offload kernel caller entry point
is emitted instead, is future work and thus marked as NIY.
Related to #185382

CIR lowering for saturating-addition intrinsics
(https://arm-software.github.io/acle/neon_intrinsics/advsimd.html#saturating-addition)

Port tests from `clang/test/CodeGen/AArch64/neon-intrinsics.c` to
`clang/test/CodeGen/AArch64/neon/add.c`
…4347)

CUFAllocDelay treated the store of a descriptor into a host association
tuple as a use, so a device allocatable captured by an internal
procedure kept its descriptor allocation in the prologue. That allocates
managed memory before the program can call cudaSetDevice, binding a CUDA
context to the wrong device.

The store now sinks together with the allocation, constrained by the
tuple's readers, and the group is placed at the nearest common dominator
of all uses so it can sink into a later block.
Many ORC classes capture references to the ExecutionSession -- it is not
intended to be moved or copied.
Before this change, jump tables placed in a separate section were
emitted with no symbol type, leaving them STT_NOTYPE, and with no size
in their ELF file.

This change annotates the jump tables with object type and a size when
the target supports type/size directives. Jump tables inlined into the
function's own section are already covered by that function's symbol, so
they are left as-is.

This helps when disassembling a file, to understand that the jump table
is a single complete object, rather than the symbol being purely a
location. I think this reflects the ELF semantics better.
The libc++ test suite requires main() to explicitly return a value,
since freestanding support requires it.
Every hardening assertion test used to repeat a hand-rolled set of Lit
conditions like `has-unix-headers` and a bunch of others. Instead,
define a single Lit feature to handle all of them.

Assisted by Claude

Fixes #213148
This moves <cmath> towards an umbrella header.

Co-authored-by: A. Jiang <de34@live.cn>
…#212702)

Previously, there were several issues in the allocators provided by
`min_allocator.h` and `test_allocator.h`.

1. Some allocators did not support heterogenous rebinding construction,
and thus failed to meet the Cpp17Allocator named requirements.
2. Some allocators only had `operator==`. This was fine since C++20 but
not in C++17 where there were no rewritten candidates of `!=`.
3. Many equality operators were non-template and homogeneous. This
caused ambiguity since C++20 due to rewritten candidates.

This patch fixes these issues by
- adding missing constructors,
- adding missing `operator!=` (in pre-C++20 modes), and
- making `operator==` and some `operator!=` templates.

Note that it is intended that `operator==`'s for `test_allocator`
perform seemingly redundant constructions (via `static_cast<const
test_allocator&>(y)`) to avoid behavioral change as possible because
implicit conversion was performed before this patch.

A regression test is added.
This was only used by bugpoint as far as I can tell, which was deleted
in 9d5574d. Given it is not used
anywhere, remove it.

I'm also not sure it's super useful for downstreams. When we were doing
a research project during my undergrad that needed loop extraction, we
ended up writing our own utilities to do this for reasons that I cannot
remember exactly.

Reviewers: artagnon, nikic

Pull Request: #214252
Bugpoint was removed in 9d5574d.

Reviewers: rnk, arsenm

Pull Request: #214253
Bugpoint was removed in 9d5574d. The
comment is also incorrect. llvm-reduce eventually subsumed bugpoint, not
the other way around.

Reviewers: arsenm

Pull Request: #214254
The comment was introduced originally in
55c5181. Since that time, split DWARF
is no longer a proposal and is officially a part of the standard, so
update the comment.
Follow-up to #208348 which aimed to handle decl attributes on
deserialization the same way as during parsing. Turned out during
parsing we don't merge attributes for namespace redeclarations.
…on ops (#213638)

Currently, TMA S2G reduction intrinsics use reduction operation in the
name. Now that we have pretty-printing and a range-based verifier (for
ImmArgs) available, this PR migrates the reduction operation to an
immediate flag argument. This simplifies adding Rubin architecture
extensions to this family, while also reducing the number of intrinsics
from 64 to 8.
#199437)

Resolves the TODO in VPlan::getVectorLoopRegion() with a mutable cache
on VPlan, shared by both overloads.

Measured on an O3 build of the LLVM test suite (~12k TUs): 3,556,267
hits / 126,196 misses (96.57% hit rate).
@pull pull Bot locked and limited conversation to collaborators Aug 6, 2026
@pull pull Bot added the ⤵️ pull label Aug 6, 2026
@pull
pull Bot merged commit 16a941e into MPACT-ORG:main Aug 6, 2026
1 check failed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.