LLVM/project 89c09bf — clang/test/SemaHLSL/Semantics barycentrics.ps.hlsl, llvm/lib/Target/DirectX DXILSignatureAnalysis.cpp

[HLSL] Add the `SV_Barycentric` semantic (#233510)

Implements diagnostics, lowering and serialization of the
`SV_Barycentric` semantic for directx and spirv.

Resolves: https://github.com/llvm/llvm-project/issues/210786

Assisted by: ChatGPT Sol 6.1
DeltaFile
+542-0llvm/test/CodeGen/DirectX/Metadata/semantic-signatures-barycentrics-max-elements.ll
+211-0llvm/test/CodeGen/DirectX/Metadata/semantic-signatures-barycentrics-errors.ll
+107-52llvm/lib/Target/DirectX/DXILSignatureAnalysis.cpp
+79-0clang/test/SemaHLSL/Semantics/barycentrics.ps.hlsl
+78-0llvm/test/CodeGen/DirectX/ContainerData/SemanticSignatures-barycentrics-half.ll
+73-0llvm/test/CodeGen/DirectX/ContainerData/SemanticSignatures-barycentrics.ll
+1,090-5224 files not shown
+1,571-8730 files

LLVM/project 1f54b84 — mlir/lib/Dialect/SCF/Transforms StructuralTypeConversions.cpp, mlir/test/Transforms test-legalize-type-conversion.mlir

[mlir][scf] Add scf.execute_region to the structural type conversions (#234405)

This change adds support for `scf.execute_region` to
`populateSCFStructuralTypeConversions`. `scf.execute_region` seems to be
an omission, so this change simply fills a hole.

Add `ConvertExecuteRegionOpTypes` (patterned after `ConvertIfOpTypes`)
to convert the types of `scf.execute_region` and add that to the list of
patterns in `populateSCFStructuralTypeConversions` and legality in
`populateSCFStructuralTypeConversionTarget`.

Also adds a unit test to check for type conversion in
`scf.execute_region`.

Assisted-by: Claude
DeltaFile
+29-4mlir/lib/Dialect/SCF/Transforms/StructuralTypeConversions.cpp
+21-0mlir/test/Transforms/test-legalize-type-conversion.mlir
+50-42 files

LLVM/project bb52711 — llvm/test/Transforms/Util/DeclareRuntimeLibcalls sparc.ll systemz.ll

RuntimeLibcalls: Fix signatures of fmin/fmax libcalls

These used Floating, which always lowered to float regardless of the
libcall type.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+36-36llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+28-28llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+28-28llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+24-24llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+20-20llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+16-16llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sparc.ll
+152-1529 files not shown
+218-21615 files

LLVM/project ac269af — llvm/test/Transforms/Util/DeclareRuntimeLibcalls hexagon.ll arm.ll

RuntimeLibcalls: Add signatures for simple FP libcalls

Add signatures for the FP arithmetic, fma, powi, fminimum/fmaximum and
sincospi libcalls, and for the conversions between f32/f64/f80/f128/
ppcf128 and i32/i64.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+257-257llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+222-222llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+216-216llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+207-207llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+154-154llvm/test/Transforms/Util/DeclareRuntimeLibcalls/arm.ll
+126-126llvm/test/Transforms/Util/DeclareRuntimeLibcalls/hexagon.ll
+1,182-1,18211 files not shown
+1,918-1,91717 files

LLVM/project 3d02144 — clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/Transforms FlattenCFG.cpp

[CIR] Add 'loop-id' to loop and branch types. (#235052)

While working through the loop-hints lowering, I discovered that we need
a way to make each loop get a 'distinct' loop-annotation in LLVM-IR.

This relationship is lost during FlattenCFG when it splits to multiple
branches. #233890 adds this to the LLVM-IR dialect.

I considered/had a patch to do this to FlattenCFG as well, however when
working on further loop hints (parallel in particular), we need to be
able to spread this value inside of the loop itself, so it makes more
sense to generate the ID from the start.

I suspect this ID will come in handy outside of the loop-hints, so it is
left as a separate attribute.
DeltaFile
+83-83clang/test/CIR/CodeGen/loop-hints.cpp
+131-0clang/test/CIR/Transforms/flatten-loop-id.cir
+68-0clang/test/CIR/IR/invalid-loop-hints.cir
+36-25clang/lib/CIR/Dialect/Transforms/FlattenCFG.cpp
+46-8clang/test/CIR/IR/loop-hints.cir
+36-15clang/include/clang/CIR/Dialect/IR/CIROps.td
+400-13111 files not shown
+495-17617 files

LLVM/project 446318f — llvm/include/llvm/CodeGen TargetLowering.h, llvm/lib/CodeGen AtomicExpandPass.cpp

[AtomicExpand] Let targets keep the release fence out of the reservation (#214867)

`expandAtomicCmpXchg` sinks the leading fence into
`cmpxchg.fencedstore`, between the load-linked and the
store-conditional. A strong cmpxchg recovers, because its retry
re-reserves after the fence. A weak cmpxchg has no retry, so where a
fence clears the reservation it can never succeed.

On a 32-bit PowerPC e500v2, `compare_exchange_weak` with any release
ordering never succeeds. One thread, an uncontended cell, a million
consecutive failures:

```
[atomic: compare_exchange_weak] NO PROGRESS after 1000000 tries in 2.28s
[atomic: compare_exchange]      ok
[atomic: fetch_or + fetch_add]  ok
```

`fetch_update` in Rust's core is a `compare_exchange_weak` retry loop,

    [54 lines not shown]
DeltaFile
+73-0llvm/test/Transforms/AtomicExpand/PowerPC/weak-cmpxchg-fence-placement.ll
+25-12llvm/test/CodeGen/PowerPC/atomics.ll
+7-1llvm/lib/Target/PowerPC/PPCFeatures.td
+5-1llvm/lib/CodeGen/AtomicExpandPass.cpp
+5-0llvm/include/llvm/CodeGen/TargetLowering.h
+4-0llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+119-142 files not shown
+124-168 files

LLVM/project 8aedc8e — llvm/include/llvm/IR RuntimeLibcallsImpl.td RuntimeLibcalls.td, llvm/lib/IR RuntimeLibcalls.cpp

RuntimeLibcalls: Use a single LibcallImpl for long double functions

Replace the per-format <func>l_{f80|f128|ppcf128} implementations with
a single <func>l implementaton. The concrete type is now derived from
the module/triple's LongDoubleFormat, so this is no longer a static
property.

On targets where long double is double, the l-suffixed functions do
not provide a libcall. This could be fixed in principle, but nothing
would use it in the compiler.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+37-77llvm/include/llvm/IR/RuntimeLibcalls.td
+33-9llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
+20-0llvm/lib/IR/RuntimeLibcalls.cpp
+17-1llvm/utils/TableGen/Basic/RuntimeLibcalls.h
+4-10llvm/unittests/IR/RuntimeLibcallsTest.cpp
+12-0llvm/include/llvm/IR/RuntimeLibcallsImpl.td
+123-977 files not shown
+142-11313 files

LLVM/project d780ec6 — llvm/include/llvm/IR RuntimeLibcallsImpl.td, llvm/lib/IR RuntimeLibcalls.cpp

RuntimeLibcalls: Emit signatures per libcall implementation

Index the signature table by RTLIB::LibcallImpl instead of
RTLIB::Libcall. RuntimeLibcallImpl inherits the signature of the
libcall it provides by default, but an implementation can now override
it.  This will help avoid having multiple copies of the same libfunc
for every long double type.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+14-6llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
+9-8llvm/test/TableGen/RuntimeLibcallEmitter.td
+5-6llvm/test/TableGen/RuntimeLibcallEmitter-vector-mask-argument.td
+2-2llvm/lib/IR/RuntimeLibcalls.cpp
+2-0llvm/include/llvm/IR/RuntimeLibcallsImpl.td
+32-225 files

LLVM/project c05a323 — llvm/include/llvm/IR RuntimeLibcalls.td RuntimeLibcallsImpl.td, llvm/lib/IR RuntimeLibcalls.cpp

RuntimeLibcalls: Use explicit types for F80, F128 and PPCF128 libcalls

LDbl only makes sense for encoding the long double libm functions. Other
functions have need of the specific type. Separately, LDbl brokenly assumes
double instead of checking the module's long double format. Some functions
are inappropriately using a specific type instead of LDbl. I'll fix both
of these issues separately.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+96-96llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+39-39llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+39-39llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+8-0llvm/include/llvm/IR/RuntimeLibcallsImpl.td
+3-3llvm/include/llvm/IR/RuntimeLibcalls.td
+6-0llvm/lib/IR/RuntimeLibcalls.cpp
+191-1771 files not shown
+194-1777 files

LLVM/project 9410774 — llvm/test/Transforms/Util/DeclareRuntimeLibcalls systemz.ll sparc.ll

RuntimeLibcalls: Add signatures for atomic libcalls (#233601)

Define type signatures in tablegen for the various atomic
library functions.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+1,060-1,060llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+336-336llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+336-336llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+336-336llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+224-224llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+224-224llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sparc.ll
+2,516-2,51612 files not shown
+4,047-3,99818 files

LLVM/project de71172 — llvm/test/CodeGen/AArch64 aarch64-combine-gather-lanes.mir

AArch64: Fix missing ... function separators in mir test

update_mir_test_checks misbehaves when the end of function marker
is missing.
DeltaFile
+138-114llvm/test/CodeGen/AArch64/aarch64-combine-gather-lanes.mir
+138-1141 files

LLVM/project b22678d — llvm/lib/Target/ARM ARMBaseInstrInfo.cpp MLxExpansionPass.cpp, llvm/test/CodeGen/ARM imm-peephole-thumb.mir imm-peephole-arm.mir

ARM: Stop adding kill flags on new virtual registers (#235113)

Continue purging uses of kill flags.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+4-7llvm/lib/Target/ARM/MLxExpansionPass.cpp
+3-3llvm/test/CodeGen/ARM/imm-peephole-thumb.mir
+3-3llvm/test/CodeGen/ARM/imm-peephole-arm.mir
+1-1llvm/test/CodeGen/Thumb2/t2peephole-t2ADDrr-to-t2ADDri.ll
+0-1llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+11-155 files

LLVM/project ee17a58 — flang/lib/Evaluate CMakeLists.txt

Remove duplicate TU after merging main
DeltaFile
+0-2flang/lib/Evaluate/CMakeLists.txt
+0-21 files

LLVM/project 7f5af67 — llvm/docs AMDGPUUsage.rst, llvm/test/CodeGen/NVPTX store-sm60.ll load-sm70.ll

Merge branch 'main' into users/arsenm/regalloc/failed-alloc-dead-defs
DeltaFile
+22,584-0llvm/test/CodeGen/NVPTX/load-sm90.ll
+0-22,223llvm/docs/AMDGPUUsage.rst
+21,644-0llvm/test/CodeGen/NVPTX/store-sm90.ll
+20,068-0llvm/test/CodeGen/NVPTX/load-sm60.ll
+19,684-0llvm/test/CodeGen/NVPTX/load-sm70.ll
+19,088-0llvm/test/CodeGen/NVPTX/store-sm60.ll
+103,068-22,2233,906 files not shown
+350,542-107,4333,912 files

LLVM/project 57c0821 — llvm/lib/Transforms/IPO MemProfContextDisambiguation.cpp, llvm/test/Transforms/MemProfContextDisambiguation matching-calls.ll mergenodes-matching-calls.ll

[MemProf] Fix remapping of matching calls when assigning function clones (#231242)

When a function has several calls with identical callsite metadata, they
are recorded on one context node with the extra calls in
Node->MatchingCalls. If that function is cloned by context
disambiguation, assignFunctions must remap each version's matching calls
through the function clone's CallMap, the same way it remaps the primary
Call.

Two problems in the IR path:

* AssignCallsiteCloneToFuncClone rewrote the matching calls of the
original node (Node->MatchingCalls) instead of those of the callsite
clone being assigned. The clone node (whose MatchingCalls were copied
from the original at creation) kept the original instructions, and the
original node's list was overwritten with the clone's. UpdateCalls then
updated each function version's matching calls with the other version's
callee clone, i.e. swapped.


    [15 lines not shown]
DeltaFile
+193-0llvm/test/Transforms/MemProfContextDisambiguation/mergenodes-matching-calls.ll
+41-29llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp
+54-0llvm/test/Transforms/MemProfContextDisambiguation/matching-calls.ll
+288-293 files

LLVM/project 03bf0d4 — llvm/lib/Target/AArch64 AArch64MIPeepholeOpt.cpp AArch64InstrInfo.cpp, llvm/test/CodeGen/AArch64 peephole-insvigpr.mir aarch64-combine-gather-lanes.mir

AArch64: Stop adding kill flags on new virtual registers (#235112)

Continue purging uses of kill flags

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+36-36llvm/test/CodeGen/AArch64/aarch64-combine-gather-lanes.mir
+7-12llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
+5-8llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+1-1llvm/test/CodeGen/AArch64/peephole-insvigpr.mir
+0-1llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp
+49-585 files

LLVM/project afe76c5 — llvm/lib/CodeGen CodeGenOptions.cpp, llvm/lib/Transforms/Instrumentation PGOInstrumentation.cpp InstrumentationOptions.cpp

[Options] Add IR-unit helpers for per-context library options (#234761)

Add free functions alongside the private option structures so callers
can use getScalarOptions(L) instead of spelling out the loop-header and
context access chain.

This should make option checks much more readable:
```
if (getCodeGenOptions(MF).CGOpt)
if (getScalarOptions(Fn).ScalarSetting)
```

Before we'd do:

```
if (MF.getFunction().getContext().getLibraryOptions().get<CodeGenOptions>().CGOpt)
```

The MachineFunction CGOpt lookup is prevalent in our downstream with

    [3 lines not shown]
DeltaFile
+22-0llvm/lib/Transforms/Vectorize/VectorizeOptions.h
+19-0llvm/lib/Transforms/Instrumentation/InstrumentationOptions.cpp
+18-0llvm/lib/Transforms/Scalar/ScalarOptions.h
+18-0llvm/lib/CodeGen/CodeGenOptions.cpp
+4-11llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
+5-8llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
+86-1990 files not shown
+259-22496 files

LLVM/project e396ba9 — llvm/lib/IR RuntimeLibcalls.cpp

RuntimeLibcalls: Don't eagerly compute long double type (#235108)

Pass in the format so the type can be determined when it's really
needed.
DeltaFile
+4-5llvm/lib/IR/RuntimeLibcalls.cpp
+4-51 files

LLVM/project d70f4f7 — clang/lib/CIR/CodeGen CIRGenBuiltinX86.cpp, clang/test/CIR/CodeGenBuiltins/X86 avx512f-builtins.c

[CIR] pmovdb512_mask, pmovdw512_mask, pmovqw512_mask (#213571)

Issue #167765

Add CIR handling for pmovdb512_mask, pmovdw512_mask, pmovqw512_mask.
DeltaFile
+137-1clang/test/CIR/CodeGenBuiltins/X86/avx512f-builtins.c
+28-0clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
+165-12 files

LLVM/project 0fd93b9 — llvm/test/CodeGen/ARM/GlobalISel arm-regbankselect.mir arm-legalize-constant-fold-barrier.mir

[ARM][GlobalISel] Add legalizer and regbankselect tests for G_CONSTANT_FOLD_BARRIER

Cover the s32 (legal), s16 (widened), and s64 (narrowed) legalizer
actions, and the GPR bank mapping.

Assisted-by: Claude Opus 5.5
DeltaFile
+88-0llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-constant-fold-barrier.mir
+23-0llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir
+111-02 files

LLVM/project da93711 — clang/docs ReleaseNotes.md, clang/test/Index cursor-ref-dependent-member.cpp

[libclang] Only resolve dependent member names, not arbitrary callees

HeuristicResolver::resolveCalleeOfCallExpr() does more than resolve
dependent names: for a callee that is itself a call it returns the class the
inner call returns, for a dependent ADL call it returns the single visible
candidate, and it looks through parentheses. That made the cursor for
'm.make()()' refer to the class 'Functor', and changed the result for some
non-dependent calls.

Instead, look through a call to its callee as getDeclFromExpr() does, and
only use HeuristicResolver for CXXDependentScopeMemberExpr and
DependentScopeDeclRefExpr. Add tests for both cases and a release note.

Assisted-by: Claude Opus 5.5
DeltaFile
+13-8clang/tools/libclang/CIndex.cpp
+15-0clang/test/Index/cursor-ref-dependent-member.cpp
+4-0clang/docs/ReleaseNotes.md
+32-83 files

LLVM/project cefb4a1 — llvm/include/llvm/CodeGen AsmPrinter.h, llvm/include/llvm/MC MCAsmInfo.h

MC: Remove MCAsmInfo::ExceptionsType (#233030)

The exception model now comes from the module, and the MCAsmInfo
predicates that depend on it take the model as a parameter. The
target's default model is still available from
Triple::getDefaultExceptionHandling.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-17llvm/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
+0-11llvm/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
+0-6llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
+0-4llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
+0-4llvm/include/llvm/MC/MCAsmInfo.h
+2-2llvm/include/llvm/CodeGen/AsmPrinter.h
+2-4418 files not shown
+2-7424 files

LLVM/project b001b29 — llvm/test/CodeGen/AArch64 aarch64-combine-gather-lanes.mir

AArch64: Fix missing ... function separators in mir test

update_mir_test_checks misbehaves when the end of function marker
is missing.
DeltaFile
+138-114llvm/test/CodeGen/AArch64/aarch64-combine-gather-lanes.mir
+138-1141 files

LLVM/project 57b0387 — llvm/include/llvm/CodeGen RegAllocEvictionAdvisor.h, llvm/lib/CodeGen FailedReassignCache.cpp

Address feedback
DeltaFile
+12-15llvm/include/llvm/CodeGen/RegAllocEvictionAdvisor.h
+6-5llvm/lib/CodeGen/FailedReassignCache.cpp
+1-1llvm/unittests/Target/AMDGPU/FailedReassignCacheTest.cpp
+19-213 files

LLVM/project 9b2201b — llvm/test/CodeGen/AMDGPU waterfall-call-inreg-agpr.ll

[AMDGPU] Update waterfall-call-inreg-agpr.ll mismatched CC (#235075)

update test such that the call CC matches the CC of the target function

Identified while investigating
https://github.com/llvm/llvm-project/issues/234232
DeltaFile
+4-4llvm/test/CodeGen/AMDGPU/waterfall-call-inreg-agpr.ll
+4-41 files

LLVM/project f90f1b5 — llvm/lib/Transforms/Utils Local.cpp, llvm/test/Transforms/Coroutines coro-await-suspend-lower-invoke.ll

[SimplifyCFG] Propagate unknown weights in ConstantFoldTerminator (#234823)

Before we were just dropping the metadata node which causes a profcheck
failure. Propagate the unknown profile so the profcheck verifier knows
that we have dealt with this case.

Found while doing a bootstrapping build of LLVM with -mllvm
-enable-profcheck-in-pipeline.
DeltaFile
+32-0llvm/test/Transforms/SimplifyCFG/preserve-branchweights.ll
+5-3llvm/test/Transforms/Coroutines/coro-await-suspend-lower-invoke.ll
+2-0llvm/lib/Transforms/Utils/Local.cpp
+39-33 files

LLVM/project 66edef2 — clang/test/Index index-concepts.cpp cursor-ref-dependent-member.cpp, clang/tools/libclang CIndex.cpp

[libclang] Resolve dependent member references in clang_getCursorReferenced

Inside a class template, references to members of a dependent base, such
as 'this->size()' where the base is 'A<T>', aren't bound to a declaration
until instantiation, so clang_getCursorReferenced() returned a null cursor
for them.

Fall back to HeuristicResolver, which clangd uses for the same purpose, to
look the name up in the primary template, and return the result if it's a
single declaration. This also resolves 'type_trait<T>::value' in a
requires-clause or concept to the primary template's static member.

'A<T>::size()' (a qualified reference to an instance member) still isn't
resolved, because HeuristicResolver only considers static members for a
DependentScopeDeclRefExpr.

Addresses part of #15370.

Assisted-by: Claude Opus 5.5
DeltaFile
+33-0clang/test/Index/cursor-ref-dependent-member.cpp
+20-0clang/tools/libclang/CIndex.cpp
+3-3clang/test/Index/index-concepts.cpp
+56-33 files

LLVM/project d577f58 — llvm/lib/CodeGen InlineSpiller.cpp

InlineSpiller: Stop adding kill flags on virtual registers

The spiller was marking uses of the new virtual registers created for
rematerialization and spilling as killed. VirtRegRewriter recomputes
kill flags from live intervals after allocation, so these were never
needed.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+9-16llvm/lib/CodeGen/InlineSpiller.cpp
+9-161 files

LLVM/project b75f5cd — llvm/lib/CodeGen InlineSpiller.cpp, llvm/test/CodeGen/AArch64 regalloc-last-chance-recolor-with-split.mir

[RegAlloc] Restrict statepoint remat by default

Statepoint deopt and GC operands may live in stack slots, but when a
statepoint has more of them than there are registers, InlineSpiller
can rematerialize them into registers in front of it. Greedy then
runs out of registers and the basic allocator asserts.

restrict-statepoint-remat makes these operands spill and fold into
the statepoint instead. It was added off by default pending
validation, and the statepoint register allocation tests already
enable it, so turn it on by default.
DeltaFile
+32-0llvm/test/CodeGen/X86/statepoint-deopt-remat.ll
+9-11llvm/test/CodeGen/AArch64/regalloc-last-chance-recolor-with-split.mir
+3-3llvm/lib/CodeGen/InlineSpiller.cpp
+44-143 files

LLVM/project 2206ef7 — llvm/include/llvm/ADT SmallVector.h

[SmallVector] Resolve the constructor ambiguity. (#235087)

https://github.com/llvm/llvm-project/pull/234861 causes build failures
with some compilers.
This patch uses the solution proposed in
https://github.com/llvm/llvm-project/pull/234861#pullrequestreview-5633532997
DeltaFile
+3-1llvm/include/llvm/ADT/SmallVector.h
+3-11 files