LLVM/project e5fa11flldb/source/Host/common Socket.cpp, lldb/tools/lldb-server lldb-platform.cpp

[lldb][Windows] Support AF_UNIX domain sockets (#205618)

Enable the Windows `AF_UNIX` domain-socket support added in #205864 by
flipping the `#if LLDB_ENABLE_POSIX` guards to `#if LLDB_ENABLE_POSIX ||
defined(_WIN32)`.

Also updates `SocketTest.cpp` to exercise `ProtocolUnixDomain` on
Windows (while still excluding ProtocolUnixAbstract, which has no
Windows equivalent).

This is part of a longer set of patches to fix tests on
`LLDB_USE_LLDB_SERVER=1`.
DeltaFile
+10-3lldb/unittests/Host/SocketTest.cpp
+4-3lldb/unittests/TestingSupport/Host/SocketTestUtilities.cpp
+3-3lldb/unittests/TestingSupport/Host/SocketTestUtilities.h
+2-2lldb/source/Host/common/Socket.cpp
+1-1lldb/tools/lldb-server/lldb-platform.cpp
+20-125 files

LLVM/project 0aa2a2futils/bazel/llvm-project-overlay/libc BUILD.bazel

[Bazel] Fixes 2c930a5 (#223955)

This fixes 2c930a5f80d8c52e396b2bb53ba526729ca41796 (#220921).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=2c930a5f80d8c52e396b2bb53ba526729ca41796

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+1-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+1-01 files

LLVM/project fc4ea8ellvm/lib/CodeGen/GlobalISel IRTranslator.cpp, llvm/lib/Target/PowerPC PPCRegisterInfo.cpp

Merge branch 'users/arsenm/codegen/replace-getPointerRegClass-uses-context-operand' into users/arsenm/codegen/remove-pointerlikeregclass
DeltaFile
+3-2llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+1-3llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
+2-2llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp
+2-2llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp
+8-94 files

LLVM/project 3723ac3libcxxabi/src private_typeinfo.cpp

[libc++abi][NFC] Return const void* from __dynamic_cast (#223737)

`__dynamic_cast` is only called magically by the compiler, so it really
doesn't matter what the exact protoype is as long as it's ABI
compatible. Making the return type a `const void*` simplifies the
implementation a bit though.
DeltaFile
+7-15libcxxabi/src/private_typeinfo.cpp
+7-151 files

LLVM/project ea24e60llvm/include/llvm/Target Target.td, llvm/lib/Target/PowerPC PPCRegisterInfo.cpp

CodeGen: Remove PointerLikeRegClass

Remove PointerLikeRegClass and the related getPointerRegClass
TargetRegisterInfo hook. This is obsoleted by RegClassByHwMode.
Previously targets would have to map ptr_rc to an assumed pointer
register class by implementing this method, but this is now auto-resolvable
per instruction using RegClassByHwMode.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>

Remove getRegClassByHwMode
DeltaFile
+9-19llvm/include/llvm/Target/Target.td
+13-8llvm/utils/TableGen/InstrInfoEmitter.cpp
+0-17llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
+13-0llvm/utils/TableGen/Common/CodeGenTarget.cpp
+0-12llvm/lib/Target/X86/X86RegisterInfo.cpp
+5-4llvm/utils/TableGen/Common/CodeGenTarget.h
+40-6031 files not shown
+45-19437 files

LLVM/project fd63167clang-tools-extra/clangd XRefs.cpp, clang-tools-extra/clangd/unittests XRefsTests.cpp

[clangd] Include the operator name in documentHighlight (#220518)

## Summary
- Placing the cursor on an overloaded operator's declaration (e.g.
`operator new`, `operator[]`) and requesting
`textDocument/documentHighlight` only highlighted the `operator` keyword
itself, not the name or symbol that follows it (`new`, `[]`, etc.), even
though that name is what's actually significant to the user.
- `ReferenceFinder` already splits some references into several spelled
tokens (used for Objective-C's split selector syntax); this reuses that
mechanism for the operator name too, extracting the tokens spelled in
the operator name's source range. This only applies to the declaration's
own occurrence.

## Test plan
- [x] `ninja check-clangd` passes
- [x] New cases added to `HighlightsTest.All` in
`clang-tools-extra/clangd/unittests/XRefsTests.cpp` covering `operator
new`, `operator delete` (clicking on either the keyword or the name),
and a multi-token operator (`operator()`)
DeltaFile
+112-0clang-tools-extra/clangd/XRefs.cpp
+64-0clang-tools-extra/clangd/unittests/XRefsTests.cpp
+176-02 files

LLVM/project 59a1a32mlir/include/mlir/Dialect/Tosa/IR TosaComplianceData.h.inc, mlir/lib/Dialect/Tosa/IR TosaOps.cpp

[mlir][tosa] Add support for MXFP in SLICE (#220557)

Adds support to profile compliance for MXFP variants of SLICE


Change-Id: I184fbd49ef667d8d4e0ee09a2e65a72095d61daa

---------

Signed-off-by: Philip Wilkinson <philip.wilkinson at arm.com>
DeltaFile
+25-1mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc
+15-0mlir/lib/Dialect/Tosa/IR/TosaOps.cpp
+10-0mlir/test/Dialect/Tosa/verifier.mlir
+10-0mlir/test/Dialect/Tosa/tosa-validation-version-1p1-valid.mlir
+10-0mlir/test/Dialect/Tosa/tosa-validation-version-1p0-invalid.mlir
+10-0mlir/test/Dialect/Tosa/ops.mlir
+80-16 files

LLVM/project eb9091dllvm/lib/CodeGen InterleavedLoadCombinePass.cpp, llvm/test/CodeGen/AArch64 interleaved-load-combine-may-not-return.ll

[InterleavedLoadCombine] Do not widen loads past a may-not-return instr (#223954)

The combined load reads the whole span at once and is inserted at the
first load, so it effectively hoists the later loads up to that point.
If an instruction between them may not transfer control to its successor
-- a call that might not return, or might throw -- then a load the
original program reached only conditionally would run unconditionally.

All combined loads are in one block, so bail unless the span from the
first to the last load is guaranteed to transfer execution to its
successor.

This gap predates the offset-index change; the old findPattern() did not
check for it either.

Assisted by AI tools.
DeltaFile
+68-0llvm/test/CodeGen/AArch64/interleaved-load-combine-may-not-return.ll
+15-0llvm/lib/CodeGen/InterleavedLoadCombinePass.cpp
+83-02 files

LLVM/project e35db4dllvm/test/Transforms/LoopVectorize iv-select-cmp-non-const-iv-start.ll find-last-iv-sinkable-load.ll, llvm/test/Transforms/LoopVectorize/AArch64 conditional-scalar-assignment.ll

[VPlan] Fix find last reductions not using frozen condition in select

A find last reduction is something like:

    (select c[n], x[n], (select c[n-1], x[n-1], (select ...)))

So even if previous iterations had poison for c[x], the top-level select blocks it.

MaskSelect uses the non-frozen Cond, and that in turn is fed into VPInstruction::ExtractLastActive, which in turn gets expanded to vector.reduce.umax, which returns poison if any of the lanes were poison.

So in the case e.g. c[n] = 1, c[n-1] = poison and VF=2, the scalar loop returns x[n] whilst vector loop returns poison.

We're also introducing multiple uses of Cond, so for these reasons we need to use the frozen Cond.
DeltaFile
+87-87llvm/test/Transforms/LoopVectorize/iv-select-cmp-trunc.ll
+35-35llvm/test/Transforms/LoopVectorize/AArch64/conditional-scalar-assignment.ll
+34-34llvm/test/Transforms/LoopVectorize/select-cmp.ll
+28-28llvm/test/Transforms/LoopVectorize/X86/conditional-scalar-assignment.ll
+18-18llvm/test/Transforms/LoopVectorize/find-last-iv-sinkable-load.ll
+16-16llvm/test/Transforms/LoopVectorize/iv-select-cmp-non-const-iv-start.ll
+218-21819 files not shown
+299-30025 files

LLVM/project 98bfb41llvm/lib/Target/AArch64 AArch64ISelLowering.cpp

[AArch64] Remove unreachable DUPLANE lowering. NFC (#222418)

`LowerBUILD_VECTOR` handles non-constant `BUILD_VECTOR` splats by
emitting
`AArch64ISD::DUP`.

The following `DUPLANE` path checks `Value.getValueType()` against `VT`.
`Value` is a scalar `BUILD_VECTOR` operand while `VT` is the vector
result
type, so this condition cannot be false and the `DUPLANE` path is
unreachable.

Remove the dead path. `DUP`s of `EXTRACT_VECTOR_ELT` are already
converted
to `DUPLANE` by `performDUPCombine()` after legalization.

No codegen changes intended.

Fixes #222138
DeltaFile
+3-20llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+3-201 files

LLVM/project 1e0f6b0llvm/lib/Target/AArch64 AArch64TargetMachine.cpp

AArch64: Avoid createDataLayout just to check endianness (#223946)

The endianness can be checked from the triple, avoiding a datalayout
copy.
DeltaFile
+2-2llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+2-21 files

LLVM/project 31ab32cllvm/include/llvm/CodeGen TargetInstrInfo.h, llvm/lib/Target/AArch64 AArch64InstrInfo.h AArch64ISelDAGToDAG.cpp

CodeGen: Add getInlineAsmMemoryOperandRegClass

Replace the use of getPointerRegClass to determine the register
class from an asm memory constraint, working to delete it. When
there are multiple pointer types there can't be just a single
answer.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+4-3llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
+7-0llvm/include/llvm/CodeGen/TargetInstrInfo.h
+6-0llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
+3-2llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+5-0llvm/lib/Target/SystemZ/SystemZInstrInfo.h
+5-0llvm/lib/Target/AArch64/AArch64InstrInfo.h
+30-53 files not shown
+36-79 files

LLVM/project f107860llvm/lib/Target/AMDGPU AMDGPUAtomicOptimizer.cpp, llvm/test/CodeGen/AMDGPU mubuf.ll insert_waitcnt_for_precise_memory.ll

[AMDGPU] Skip volatile atomics in the atomic optimizer (#223927)

Folding a wavefront into one atomic changes the number of volatile
operations, which is not allowed
DeltaFile
+102-102llvm/test/CodeGen/AMDGPU/global-atomic-scan.ll
+178-0llvm/test/CodeGen/AMDGPU/atomic-optimizer-volatile.ll
+4-4llvm/test/CodeGen/AMDGPU/global_atomics_iterative_scan.ll
+5-1llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp
+2-2llvm/test/CodeGen/AMDGPU/insert_waitcnt_for_precise_memory.ll
+1-1llvm/test/CodeGen/AMDGPU/mubuf.ll
+292-1106 files

LLVM/project e2a1f09clang/include/clang/Sema Sema.h, clang/lib/Sema SemaTemplate.cpp

Speed up common template argument checks

Avoid setting up pack and constraint machinery for ordinary unconstrained
template argument lists. Reuse canonical type work, keep common converted
argument lists inline, and skip default-substitution comparisons when the
parameter has no default.

CTMark O0 (3 samples, CPU 6): 29.439800 s -> 29.315900 s (-0.421%).

Impact on significant TUs in MLIR build time:
- `mlir/lib/RegisterAllDialects.cpp`: 0.7009% fewer retired
  instructions.
- `mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp`: 0.6378% fewer retired
  instructions.

Assisted-by: Codex
DeltaFile
+65-23clang/lib/Sema/SemaTemplate.cpp
+5-2clang/include/clang/Sema/Sema.h
+0-3clang/unittests/Support/TimeProfilerTest.cpp
+70-283 files

LLVM/project 7839d33clang/include/clang/Basic Diagnostic.h, clang/lib/Basic Diagnostic.cpp

Cache the most recent diagnostic source file

Avoid repeated ordered-map lookups while diagnostics remain in the same
source file. Clear the cached map node whenever the map is reset.

CTMark O0 (3 samples, CPU 6): 29.439800 s -> 29.312967 s (-0.431%).

Impact on significant TUs in MLIR build time:
- `mlir/lib/RegisterAllDialects.cpp`: 1.0930% fewer retired
  instructions.
- `mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp`: 0.5034% fewer retired
  instructions.

Assisted-by: Codex
DeltaFile
+9-3clang/lib/Basic/Diagnostic.cpp
+6-0clang/include/clang/Basic/Diagnostic.h
+15-32 files

LLVM/project c02715bllvm/lib/CodeGen/GlobalISel GISelValueTracking.cpp, llvm/test/CodeGen/AArch64/GlobalISel knownbits-trunc-ssat-usat.mir

[GlobalISel] Add saturating G_TRUNC support for computeKnownBits (#223929)

Port the saturating-truncate KnownBits handling to the GlobalISel. Look
through G_TRUNC_SSAT_S, G_TRUNC_SSAT_U and G_TRUNC_USAT_U by recursing
into the source operand and applying KnownBits::truncSSat, truncSSatU
and truncUSat respectively.
DeltaFile
+167-0llvm/test/CodeGen/AArch64/GlobalISel/knownbits-trunc-ssat-usat.mir
+18-0llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp
+185-02 files

LLVM/project 91d09calldb/source/ValueObject ValueObjectRegister.cpp, lldb/test/API/python_api/value TestValueAPI.py

[lldb] Look up register set children by their own name too (#223857)

On Windows x86_64, LLDB's register tables only list the full width
registers, so the ABI adds the sub-registers itself and puts them in a
separate "supplementary registers" set. That set contains `sp`, but
looking up `sp` in it failed: the lookup first turns `sp` into `rsp`,
and `rsp` is in the general purpose set, not this one. Linux doesn't hit
this because its tables already define the sub-registers next to `rsp`.

Now the lookup falls back to matching the name as written against the
registers of that set, so a register you can reach with
`GetChildAtIndex` can also be found by name. Lookups that already worked
are unchanged.

Fixes https://ci-external.swift.org/job/lldb-windows/job/main/3879/
DeltaFile
+12-4lldb/source/ValueObject/ValueObjectRegister.cpp
+6-2lldb/test/API/python_api/value/TestValueAPI.py
+18-62 files

LLVM/project 49fd850llvm/include/llvm/ADT STLExtras.h, llvm/unittests/ADT STLExtrasTest.cpp

[ADT] Add make_isa_range to filter and downcast a range by type (NFC) (#223414)

Add a range adaptor that keeps only the elements of a range that isa<T>
holds for, casting each of them to T.

This replaces the common idiom of filtering by type in the loop body

```
  for (Instruction &I : *BB) {
    auto *PN = dyn_cast<PHINode>(&I);
    if (!PN)
      continue;
    ... use PN ...
  }
```

with

```

    [10 lines not shown]
DeltaFile
+136-0llvm/unittests/ADT/STLExtrasTest.cpp
+16-0llvm/include/llvm/ADT/STLExtras.h
+152-02 files

LLVM/project 25564dalibc/src/pthread pthread_attr_setinheritsched.h pthread_attr_getinheritsched.h, libc/test/src/pthread pthread_attr_test.cpp

[libc] Implement pthread_attr_[gs]etinheritsched (#223322)

This patch implements pthread_attr_setinheritsched and
pthread_attr_getinheritsched.

Like the previous scheduler attribute patches, this commit only operates
on the pthread_attr_t object and does not attempt to install scheduling
parameters when creating a new thread.

Unlike schedpolicy and schedparam, where the validity of arguments is
checked by the kernel, inheritsched is purely a userspace pthread
concept. Therefore, we validate the inheritsched argument and reject
unsupported values with EINVAL.

While in there:
- update the file headers in pthread_attr_init to the modern llvm format
- use proxy headers instead of direct pthread.h inclusion

Assisted-by: Gemini
DeltaFile
+39-1libc/test/src/pthread/pthread_attr_test.cpp
+37-0libc/src/pthread/pthread_attr_setinheritsched.cpp
+34-1libc/src/pthread/CMakeLists.txt
+31-0libc/src/pthread/pthread_attr_getinheritsched.cpp
+28-0libc/src/pthread/pthread_attr_getinheritsched.h
+27-0libc/src/pthread/pthread_attr_setinheritsched.h
+196-29 files not shown
+246-1015 files

LLVM/project 251e728clang/include/clang/Analysis/Analyses/LifetimeSafety LifetimeAnnotations.h, clang/lib/Analysis/LifetimeSafety LifetimeAnnotations.cpp Checker.cpp

[LifetimeSafety] Suppress annotation inference for owner-capturing constructors (#223635)
DeltaFile
+38-0clang/test/Sema/LifetimeSafety/safety.cpp
+6-2clang/lib/Analysis/LifetimeSafety/Checker.cpp
+5-0clang/lib/Analysis/LifetimeSafety/LifetimeAnnotations.cpp
+5-0clang/include/clang/Analysis/Analyses/LifetimeSafety/LifetimeAnnotations.h
+54-24 files

LLVM/project 2c930a5libc/src/__support/threads thread.cpp thread.h, libc/startup/linux do_start.cpp

[libc] Store ThreadAttributes in the TCB (#220921)

This patch replaces the `thread_local self` object with the
ThreadAttributes pointer stored in the TCB.  current_thread() now
fetches this pointer directly via get_current_thread_attrib().

Since every thread now needs a TCB, init_tls can no longer bail out
when app.tls.size == 0 (this was actually dead code before this patch
since every binary contained at least one thread-local variable
(`self)`). I've removed that check and updated do_start to always set up
a TCB (defaulting to alignment 1 if there is no TLS segment).

The motivation for this change is to make the pthread_self function
async-signal-safe (as required by POSIX), including in the cases where
the function is invoked from a signal hander on the newly created thread
-- before pthread_create returns. This requires making sure that the
thread attribute pointer is initialized from the very first instruction
of the new thread -- something which is hard to do when the attributes
are stored in a TLS variable. This also aligns us with how other C

    [11 lines not shown]
DeltaFile
+109-0libc/test/integration/src/pthread/pthread_tls_align_test.cpp
+11-8libc/startup/linux/do_start.cpp
+5-10libc/src/__support/threads/thread.h
+5-9libc/startup/linux/x86_64/tls.cpp
+13-0libc/test/integration/src/pthread/CMakeLists.txt
+2-6libc/src/__support/threads/thread.cpp
+145-3310 files not shown
+165-5416 files

LLVM/project dabd9feflang/lib/Lower Bridge.cpp, flang/test/Lower main_location.f90

[flang] Attribute the generated entry point to the main program's start (#223742)

The `main` entry point that lowering generates for a Fortran main
program is attributed to the end-stmt of the last function-like unit
that was lowered. e.g.

```fortran
subroutine foo(x)
  real :: x
  x = x + 1.0
end subroutine foo

program demo
  real :: a
  a = 1.0
  call foo(a)
  print *, a
end program demo
```

    [9 lines not shown]
DeltaFile
+9-0flang/test/Lower/main_location.f90
+7-1flang/lib/Lower/Bridge.cpp
+16-12 files

LLVM/project 05bc41eclang/include/clang/CIR/Dialect/IR CIRDataLayout.h, clang/lib/CIR/Dialect/Transforms FlattenCFG.cpp

[CIR] Fix address space of dest cleanup slot (#222628)

Make sure that flatten cfg creates new allocas for dest cleanup slot in
correct address space. This is important for address-space aware targets
like amdgpu.
DeltaFile
+39-0clang/test/CIR/CodeGenHIP/cleanup-alloca-addrspace.hip
+9-0clang/include/clang/CIR/Dialect/IR/CIRDataLayout.h
+2-1clang/lib/CIR/Dialect/Transforms/FlattenCFG.cpp
+50-13 files

LLVM/project 327153dlldb/cmake/modules FindLuaAndSwig.cmake FindCursesAndPanel.cmake

[lldb][cmake] Accept config-mode packages in add_optional_dependency (#222976)

`add_optional_dependency` copies the caller-supplied `<found>` variable
after `find_package`, and callers name the Find module's result
variable, which is usually all-caps (`LIBXML2_FOUND`, `CURSES_FOUND`). A
package located in config mode only sets `<PackageName>_FOUND`
(`LibXml2_FOUND`), so the copy comes back empty and the dependency is
reported as missing and silently disabled even though `find_package`
succeeded.

Set the result variable to TRUE when either `${found}` or
`${package}_FOUND` is set, FALSE otherwise.

Behavior for module-mode finds is unchanged; only the config-mode case,
which previously always evaluated to false, is affected.
DeltaFile
+10-10lldb/cmake/modules/LLDBConfig.cmake
+3-3lldb/cmake/modules/FindPythonAndSwig.cmake
+2-2lldb/cmake/modules/FindLuaAndSwig.cmake
+2-2lldb/cmake/modules/FindCursesAndPanel.cmake
+17-174 files

LLVM/project 43cb5e4llvm/include/llvm/Analysis IVDescriptors.h, llvm/lib/Analysis IVDescriptors.cpp

[IVDescriptors] Rename MonotonicDescriptor ConditionalInductionDescriptor (NFC) (#223707)

Rename `MonotonicDescriptor` to `ConditionalInductionDescriptor` to
acknowledge that the phi may wrap, so is not strictly monotonic.

Assisted-by: Codex
DeltaFile
+52-47llvm/unittests/Analysis/IVDescriptorsTest.cpp
+25-23llvm/include/llvm/Analysis/IVDescriptors.h
+12-12llvm/lib/Analysis/IVDescriptors.cpp
+89-823 files

LLVM/project d1e261elibc/test/src/stdfix FxDiviTest.h

[libc] Fix fxdivi tests on 32-bit targets (#223675)

Guard saturation operands against overflow and correct boundary
expectations for the range and precision of 32-bit long.

Fixes issue introduced in a969579a9129891bccb63fcc69e76d74b299f322.

Assisted-by: Codex. Entirely done by the AI and reviewed by me.
DeltaFile
+35-15libc/test/src/stdfix/FxDiviTest.h
+35-151 files

LLVM/project 53ece97llvm/test/Transforms/LoopVectorize predicated-early-exits-interleave.ll predicated-multiple-exits.ll

[VPlan] Use frozen combined condition in early exit first-active-lane

Combined is used both to compute if an early exit was taken via VPInstruction::AnyOf, as well as the index of the early-exited lane in VPInstruction::FirstActiveLane.

Combined can have poison lanes past the exited lane, so the AnyOf uses freeze to prevent branching on poison. However FirstActiveLane on a vector with a poison lane is poison, so we need to also use the frozen version of Combined to prevent poison there.
DeltaFile
+32-32llvm/test/Transforms/LoopVectorize/single-early-exit-interleave.ll
+24-24llvm/test/Transforms/LoopVectorize/single_early_exit_live_outs.ll
+14-14llvm/test/Transforms/LoopVectorize/multiple-early-exits.ll
+12-12llvm/test/Transforms/LoopVectorize/single-early-exit-deref-assumptions.ll
+10-10llvm/test/Transforms/LoopVectorize/predicated-multiple-exits.ll
+6-6llvm/test/Transforms/LoopVectorize/predicated-early-exits-interleave.ll
+98-9817 files not shown
+144-14223 files

LLVM/project c51ffebllvm/test/Transforms/LoopVectorize/AArch64 early_exit_costs.ll

Fix early_exit_costs.ll test
DeltaFile
+2-2llvm/test/Transforms/LoopVectorize/AArch64/early_exit_costs.ll
+2-21 files

LLVM/project b6bcf42llvm/lib/Transforms/Vectorize VPlan.h VPlanTransforms.cpp

Update comments
DeltaFile
+2-1llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-1llvm/lib/Transforms/Vectorize/VPlan.h
+3-22 files

LLVM/project 87ea68ellvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize tail_fold_uncountable_exits.ll early_exit_with_stores.ll

Don't unwrap the freeze, copy it over in side effect early exit loops
DeltaFile
+27-27llvm/test/Transforms/LoopVectorize/VPlan/early_exit_with_stores_vplan.ll
+12-12llvm/test/Transforms/LoopVectorize/early_exit_with_stores.ll
+8-8llvm/test/Transforms/LoopVectorize/RISCV/early_exit_with_stores.ll
+8-8llvm/test/Transforms/LoopVectorize/AArch64/early_exit_with_stores.ll
+6-6llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+2-2llvm/test/Transforms/LoopVectorize/tail_fold_uncountable_exits.ll
+63-632 files not shown
+67-678 files