LLVM/project 824e32c — libc/docs/headers/math index.md

update index.md for float80 and double_double
DeltaFile
+128-128libc/docs/headers/math/index.md
+128-1281 files

LLVM/project 56dfa63 — clang/www cxx_dr_status.html

[clang] Update C++ DR status page (#236667)
DeltaFile
+176-29clang/www/cxx_dr_status.html
+176-291 files

LLVM/project c90a1a8 — lldb/source/API SBProcess.cpp, lldb/source/Plugins/Process/Windows/Common ProcessWindows.cpp

[lldb] ThreadList tid_t to lldb::tid_t (#232608)

Changing tid_t to lldb::tid_t to fix build conflicts
DeltaFile
+2-2lldb/source/Target/ThreadList.cpp
+2-2lldb/source/Plugins/Trace/intel-pt/TraceIntelPTBundleLoader.cpp
+2-2lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
+1-1lldb/source/Plugins/Trace/intel-pt/TraceIntelPT.cpp
+1-1lldb/source/API/SBProcess.cpp
+8-85 files

LLVM/project 39a19f7 — clang-tools-extra/clangd CodeComplete.cpp, clang-tools-extra/clangd/index SymbolCollector.cpp

[clangd] Index symbols declared inside export declarations (#234755)

SymbolCollector::shouldCollectSymbol only accepts symbols whose semantic
parent is a translation unit, namespace, linkage spec, enum, record or
one of a few ObjC containers. ExportDecl is a DeclContext and is
returned by getDeclContext(), so every entity declared with `export` or
inside an `export { ... }` block was dropped from the index. Members of
exported classes were still indexed, since their parent is the record.

In C++20 modules code this hides most of the exported interface from the
index: Go to Definition on an exported function stops at the declaration
in the module interface instead of reaching the definition in the
implementation unit, and workspace/symbol does not find it. Rename uses
the same check, so it rejects exported symbols as "not eligible for
indexing" (reported in clangd/clangd#2569).

Use getNonTransparentDeclContext() instead, so declarations inside
transparent contexts (export, extern "C", unscoped enums) are judged by
their enclosing context. Do the same in isIndexedForCodeCompletion, so

    [4 lines not shown]
DeltaFile
+73-0clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
+40-0clang-tools-extra/clangd/unittests/RenameTests.cpp
+18-0clang/test/Index/USR/export.cpp
+3-4clang-tools-extra/clangd/index/SymbolCollector.cpp
+1-2clang-tools-extra/clangd/CodeComplete.cpp
+1-1clang/lib/UnifiedSymbolResolution/USRGeneration.cpp
+136-76 files

LLVM/project 123c204 — llvm/lib/Support APFloat.cpp

[APFloat] Make `PackCategoriesIntoKey` a constexpr function (#236316)

Since we can very much use constexpr in the code base these days, use a
constexpr function here instead of a macro.

Resolving a 13 year old TODO comment.
DeltaFile
+107-108llvm/lib/Support/APFloat.cpp
+107-1081 files

LLVM/project 803065b — compiler-rt/test/asan/TestCases throw_call_test.cpp

[asan][test] Test UAR/UAS modes in throw_call_test.cpp and XFAIL on Android (#236664)

By default, `-fsanitize-address-use-after-scope` unpoisons `ar[100]` on
entry to `CheckStack()`, and `-fsanitize-address-use-after-return`
allocates frames on `FakeStack`. Because of this, `CheckStack()` did not
catch poisoned stack left behind after `throw`.

On Android, `__cxa_throw` is currently not intercepted (#236665). The
test passed on Android API 29 and only failed on API 34 because
`fprintf` inside `catch` happened to call `memset` on the poisoned stack
before `CheckStack()`.

Add explicit UAR/UAS flags so `CheckStack()` catches this directly, and
mark the test `XFAIL: android`.

https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-android

Assisted-by: Gemini
DeltaFile
+6-0compiler-rt/test/asan/TestCases/throw_call_test.cpp
+6-01 files

LLVM/project 93d4812 — llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlan.cpp, llvm/test/Transforms/LoopVectorize/VPlan first-order-recurrence-sink-replicate-region.ll vplan-sink-scalars-and-merge.ll

[VPlan] Compute the backedge-taken count with an explicit recipe. (#236655)

Instead of a symbolic VPValue for the backedge-taken count, which is
materialized after dissolving the loop regions, compute TC - 1 directly
in the vector preheader when creating the header mask that compares
against it, together with an explicit broadcast.

This removes VPlan::BackedgeTakenCount (VPlan)global state.
DeltaFile
+69-37llvm/test/Transforms/LoopVectorize/VPlan/vplan-printing-reductions-tail-folded.ll
+48-28llvm/test/Transforms/LoopVectorize/VPlan/vplan-sink-scalars-and-merge.ll
+21-9llvm/test/Transforms/LoopVectorize/VPlan/first-order-recurrence-sink-replicate-region.ll
+11-18llvm/lib/Transforms/Vectorize/VPlanLowering.cpp
+1-17llvm/lib/Transforms/Vectorize/VPlan.cpp
+10-7llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+160-11613 files not shown
+198-16119 files

LLVM/project 6a9fc66 — llvm/lib/Target/Sparc DelaySlotFiller.cpp, llvm/test/CodeGen/SPARC LeonInsertNOPLoadPassUT.ll tailcall.ll

[SPARC] Do not fill delay slots at -O0 (#235248)

At -O0 the delay slot filler still moves the instruction before a call
into its delay slot, and at -O0 that's typically the spill of an
argument. A breakpoint on the line of the call stops on the `call`
before the store has run, so the debugger reads stale stack. GCC only
fills delay slots from -O1, and the Mips filler skips -O0 as well.

This skips the optional fill, and the restore folding, at -O0. 

Two fills are needed for correctness and are kept at every level: the
restore before a tail call has to be in its delay slot (a jmp %reg reads
its target from the current window, a call writes %o7), and so does the
mov %g1, %o7 before a leaf tail call.

Until now only the optional search put them there, so
`-disable-sparc-delay-filler` produced leaf tail calls that returned
into the next function.


    [33 lines not shown]
DeltaFile
+114-45llvm/test/CodeGen/SPARC/fp16-promote.ll
+100-50llvm/test/CodeGen/SPARC/2011-01-19-DelaySlot.ll
+111-0llvm/test/CodeGen/SPARC/tailcall.ll
+36-5llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+2-1llvm/test/CodeGen/SPARC/LeonInsertNOPLoadPassUT.ll
+363-1015 files

LLVM/project 46551a6 — flang/test/Semantics modfile-explicit-shape-bounds.f90, llvm/test/CodeGen/AArch64 sve-fixed-length-masked-expandloads.ll

Merge branch 'main' into users/gandhi56/regalloc-cache-failed-reassign
DeltaFile
+4,101-4,285llvm/test/CodeGen/AArch64/sve-fixed-length-masked-expandloads.ll
+981-2,174llvm/test/CodeGen/AMDGPU/load-global-i8.ll
+479-1,254llvm/test/CodeGen/AMDGPU/kernel-args.ll
+481-1,089llvm/test/CodeGen/AMDGPU/load-constant-i8.ll
+1,013-90llvm/test/CodeGen/AMDGPU/insert_vector_dynelt.ll
+939-0flang/test/Semantics/modfile-explicit-shape-bounds.f90
+7,994-8,892739 files not shown
+33,102-16,085745 files

LLVM/project 490c5ff — llvm/lib/Transforms/Scalar LoopUnrollPass.cpp

[LoopUnroll] Use DenseMap::contains instead of count (NFC) (#224529)

Replace count()-then-lookup style membership checks with contains() in
analyzeLoopUnrollCost for readability.
DeltaFile
+3-3llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
+3-31 files

LLVM/project 1744116 —

[nspr] initial commit
DeltaFile
+0-00 files

LLVM/project 189eece — llvm/tools/llvm-mc Disassembler.cpp llvm-mc.cpp

[llvm-mc] Report more errors through the SourceMgr (#236281)

Avoid printing to errs() directly and use the SourceMgr instead like
all the other assembler and disassembler diagnostics.

This is needed for the upcoming `--verify` option: without this, these
options interfere with the exit code from --verify and can't be matched.
Mostly NFC, although the errors now print without a `llvm-mc:` prefix.

Assisted-by: AI tooling
Pull-Request: https://github.com/llvm/llvm-project/pull/236281
DeltaFile
+13-11llvm/tools/llvm-mc/llvm-mc.cpp
+2-1llvm/tools/llvm-mc/Disassembler.cpp
+15-122 files

LLVM/project a9194c6 — llvm/test/tools/llubi intr_masked_gather.ll intr_masked_gather_ub.ll, llvm/tools/llubi/lib Context.h Interpreter.cpp

[llubi] Add support for llvm.masked.gather (#235986)

Re-use the logic for llvm.masked.load to also support
llvm.masked.gather.

Instead of computing consecutive addresses from a base pointer, enabled
lanes are loaded from the pointer of the lane. Masked-off lanes are
taken from the passthru operand and are not accessed.

PR: https://github.com/llvm/llvm-project/pull/235986
DeltaFile
+62-0llvm/test/tools/llubi/intr_masked_gather_ub.ll
+49-0llvm/test/tools/llubi/intr_masked_gather.ll
+34-14llvm/tools/llubi/lib/Interpreter.cpp
+5-5llvm/tools/llubi/lib/Context.h
+150-194 files

LLVM/project 3ce9a5b — llvm/lib/Support SourceMgrDiagnosticVerifier.cpp, mlir/test/mlir-opt expected-unknown-loc-unmatched.mlir

[Support][mlir] Clean up list of unmatched @unknown directives (#236282)

mlir-opt calls `verify()` twice (explicitly and in the handler's
destructor), and `verify()` clears the per-file directive lists, but
did not clear the list of `@unknown` ones.
This fixes reporting unmatched `@unknown` twice.

Assisted-by: AI tooling
Pull-Request: https://github.com/llvm/llvm-project/pull/236282
DeltaFile
+5-3mlir/test/mlir-opt/expected-unknown-loc-unmatched.mlir
+1-0llvm/lib/Support/SourceMgrDiagnosticVerifier.cpp
+6-32 files

LLVM/project 2836a92 — clang/docs ReleaseNotes.md, clang/lib/Sema SemaDecl.cpp

[clang][Sema] Fix crash caused by invalid implicit format attributes (#229010)

Clang implicitly adds `format_arg(1)` to `__CFStringMakeConstantString`,
including prototypeless declarations created during error recovery. A
zero-argument call can then cause format string checking to access a
nonexistent argument and crash.

Reproducer:

```c
void a(char *) __attribute__((format(__CFString__, 1, 2)));
void b() { a(__CFStringMakeConstantString()); }
```

Before this change, an assertions-enabled build crashes after reporting
the source errors (diagnostic excerpts):

```text
error: call to undeclared function '__CFStringMakeConstantString';

    [10 lines not shown]
DeltaFile
+74-0clang/test/Sema/format-strings-implicit-attributes.c
+16-15clang/lib/Sema/SemaDecl.cpp
+3-0clang/docs/ReleaseNotes.md
+93-153 files

LLVM/project f8a7eee — llvm/lib/Transforms/Vectorize VPlan.h

[VPlan] Remove redundant VPIRFlags::transferFlags (NFC) (#236641)

Its only user, VPReplicateRecipe::cloneWithOperands, already passes
*this as the flags to the new recipe/ Remove the unnecessary call.
DeltaFile
+1-9llvm/lib/Transforms/Vectorize/VPlan.h
+1-91 files

LLVM/project ad68235 — clang/include/clang/AST DeclBase.h, clang/include/clang/Driver RocmInstallationDetector.h

[clang] Remove declarations without definitions (NFC) (#236620)

This patch removes function and method declarations that have no
definitions and no callers.

Assisted-by: Antigravity
DeltaFile
+0-15clang/include/clang/Format/Format.h
+0-11clang/lib/Frontend/SerializedDiagnosticPrinter.cpp
+0-10clang/include/clang/Sema/SemaOpenMP.h
+0-10clang/include/clang/AST/DeclBase.h
+0-7clang/include/clang/Driver/RocmInstallationDetector.h
+0-6clang/lib/CodeGen/CodeGenModule.h
+0-5923 files not shown
+0-12929 files

LLVM/project 415ae8c — clang/lib/Frontend SARIFDiagnostic.cpp, clang/test/Frontend sarif-diagnostics.cpp

[clang] Replace PointerUnion::dyn_cast with llvm::dyn_cast_if_present (NFC) (#236619)

PointerUnion::dyn_cast has been soft-deprecated in favor of
llvm::dyn_cast and llvm::dyn_cast_if_present.  This patch replaces
PointerUnion::dyn_cast with llvm::dyn_cast_if_present in
SARIFDiagnostic::emitDiagnosticMessage, and adds a test case to cover
the null operand case.

Note that DiagnosticRenderer::emitSingleMacroExpansion invokes
emitDiagnosticMessage with a null DiagOrStoredDiag when emitting a
macro expansion note.

This patch completes the migration away from PointerUnion::dyn_cast
under clang/.

Assisted-by: Antigravity
DeltaFile
+36-1clang/test/Frontend/Inputs/expected-sarif/sarif-diagnostics.cpp.sarif
+3-0clang/test/Frontend/sarif-diagnostics.cpp
+1-1clang/lib/Frontend/SARIFDiagnostic.cpp
+40-23 files

LLVM/project c25c2e6 — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Vectorize store chains whose loads have external uses

vectorizeStores() used to give up on a load-store chain if any of the
loads had a user other than its store. Now that loads of mixed types
can be unpacked from a vector load, vectorize such chains as well: the
loads become a single vector load, and the external users are fed from
the lanes each load occupies, cast back to the load's type if needed.

The unpacking loop of vectorizeLoads() is factored out into
unpackLoads() (along with the canUnpackLoads() check) and shared by
both paths. Chains with a non-integral pointer load that has external
users are still left alone.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+119-100llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+49-35llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+8-14llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+11-1llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+187-1504 files

LLVM/project a83346c — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer VecUtils.h, llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h

[SandboxVec][LoadStoreVec] Add Reinterpret helper for same-size type casts

Replace getEquivalentConstantWithType() with a Reinterpret utility that
reinterprets the bits of a value as another type of the same size. It
builds a chain of ptrtoint / bitcast / inttoptr casts, and applies it
either to a constant (folding) or to a runtime value (inserting casts).
The runtime form will be used to unpack mixed-type vector loads and to
pack mixed-type store operands.

Also add VecUtils::isNonIntegralPtr(). A non-integral pointer has no
stable integer representation, so it is no longer packed into an
integer lane. Previously only a non-integral destination type was
rejected (via an assert), while a non-integral source such as
'ptr addrspace(5) null' was silently converted with ptrtoint.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+69-21llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+38-7llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+9-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h
+5-1llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+121-294 files

LLVM/project ff09cf0 — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h

[SandboxVec][LoadStoreVec] Add LLVM_ABI annotations to Reinterpret

Export the out-of-line static members of Reinterpret, as reported by
the LLVM_ABI annotation check. getCastChain() is private but is called
from the inline canReinterpret(), so it needs to be exported too.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+6-6llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+6-61 files

LLVM/project 59813ae — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Support mixed-type load vectorization

Remove the restriction that every load in a top-level load chain must
have the vector's element type. A chain of mixed types such as
{i32, float} or {double, i32, i32} is loaded as a vector of integers
(as chosen by VecUtils::getCombinedVectorTypeFor()), each original load
is unpacked from the lanes it occupies, and then reinterpreted back to
its own type with Reinterpret::reinterpretValue().

Chains involving a non-integral pointer are left alone, since such a
pointer cannot be recovered from an integer lane.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+140-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_type_loads.ll
+26-10llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+6-3llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+172-133 files

LLVM/project 86bcd60 — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Move contiguity check into canVectorize() (NFC)

Both vectorizeStores() and vectorizeLoads() (via createVectorLoad())
checked that the bundle is consecutive right before calling
canVectorize(). Fold that check into canVectorize() so that every
caller gets it.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+8-9llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+2-2llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+10-112 files

LLVM/project b12cb9e — llvm/lib/Transforms/Vectorize/SandboxVectorizer Legality.cpp, llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec load_store_vec_load_seeds.ll

[SandboxVec][LoadStoreVec] Reject bundles that cannot be scheduled

canVectorizeLSV() created a CantSchedule result when the scheduler
failed, but did not return it, so such bundles were still reported as
Widen. For a load chain like

  %ld0 = load i32, ptr %p0
  store i32 %ld0, ptr %p1
  %ld1 = load i32, ptr %p1

the vector load was placed after %ld1 and the store was rewritten to
use a lane extracted from it, producing a use before its definition.
Return the CantSchedule result.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+23-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_load_seeds.ll
+1-1llvm/lib/Transforms/Vectorize/SandboxVectorizer/Legality.cpp
+24-12 files

LLVM/project 9f5044b — mlir/cmake/modules AddMLIRPython.cmake, mlir/python CMakeLists.txt

[mlir][Python] Generate type stubs for dialect extensions

Continue #175403 by generating extension stubs for each concrete Python
package. Keep imports and build dependencies local to that package, handle
optional extensions, and normalize native IR type references.

Co-authored-by: makslevental <maksim.levental at gmail.com>
DeltaFile
+0-142mlir/python/mlir/_mlir_libs/_mlir/dialects/quant.pyi
+94-8mlir/cmake/modules/AddMLIRPython.cmake
+23-41mlir/python/CMakeLists.txt
+0-63mlir/python/mlir/_mlir_libs/_mlir/dialects/pdl.pyi
+0-25mlir/python/mlir/_mlir_libs/_mlir/dialects/transform/__init__.pyi
+0-24mlir/python/mlir/_mlir_libs/_mlirExecutionEngine.pyi
+117-3032 files not shown
+139-3038 files

LLVM/project cbe48ab — llvm/lib/Transforms/Vectorize VPlanUtils.cpp

[VPlan] Don't query IVDesc for pointer-induction step type (NFC) (#236640)

The step operand of VPWidenPointerInductionRecipe is created from the
descriptor's step SCEV in createWidenInductionRecipe, so its scalar type
matches ID.getStep()->getType(). Use it directly.
DeltaFile
+2-3llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+2-31 files

LLVM/project 4f7bef4 — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Support mixed-type store vectorization of arbitrary values

vectorizeStores() only handled chains whose stored values were all
consecutive loads or all constants. Any other chain, e.g., storing
function arguments or computed values, was left alone.

Pack such values into a vector with createPack(). For a chain of mixed
types the vector has integer lanes, so each value is first
reinterpreted (bitcast / ptrtoint) as the lanes it occupies with
Reinterpret::reinterpretValue(), and a value spanning several lanes is
inserted lane by lane. The pack is placed right before the vector
store, where every stored value is available. Whether this pays off is
left to the existing cost check in acceptOrRevert().

Chains storing a non-integral pointer are left alone.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+172-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_type_stores.ll
+45-5llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+11-3llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+5-3llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+233-114 files

LLVM/project fb163e0 — .github/workflows libc-libcxx-conformance-tests.yml

[Github] Run generic-llvm-libc against libc changes (#234440)

libc changes have been breaking the libc++ tests reasonably often, so
run the generic-llvm-libc CI job on libc changes to ensure things do not
get broken premerge. This job typically runs in <20 minutes so shouldn't
be too interruptive.
DeltaFile
+47-0.github/workflows/libc-libcxx-conformance-tests.yml
+47-01 files

LLVM/project 9c24ccd — llvm/lib/Analysis DependenceAnalysis.cpp AliasAnalysisEvaluator.cpp

[Analysis] Declare command line options in TableGen (#236489)

Port the file-local options of llvm/lib/Analysis to a per-LLVMContext
AnalysisOptions struct. These remain cl::opt: exported options, options
read by public APIs without IR context (getInlineParams, TTI getters,
InlineConstants::getInstrCost, generateParamAccessSummary), and options
read per query without an object to bind them (ValueTracking,
ConstantFolding, CFG reachability, ObjectSizeOffsetVisitor, TBAA,
ScopedNoAliasAA).

* Option-reading classes hold `const AnalysisOptions &`; the inline
  constructors of BasicAAResult, MemoryDependenceResults,
  DependenceInfo, MemoryDepChecker, RuntimePointerChecking,
  InterleavedAccessInfo and ProfileSummaryInfo move out of line, and
  InterleavedAccessInfo::isStrided becomes non-static.
* Rename -disable-gep-const-evaluation and
  -da-disable-delinearization-checks to positive spellings; the old ones
  remain aliases.
* The inline cost annotation printer no longer sets

    [2 lines not shown]
DeltaFile
+390-0llvm/lib/Analysis/AnalysisOptions.td
+74-151llvm/lib/Analysis/ScalarEvolution.cpp
+56-136llvm/lib/Analysis/InlineCost.cpp
+42-86llvm/lib/Analysis/LoopAccessAnalysis.cpp
+58-52llvm/lib/Analysis/AliasAnalysisEvaluator.cpp
+22-78llvm/lib/Analysis/DependenceAnalysis.cpp
+642-50352 files not shown
+1,171-1,18758 files

LLVM/project 122298f — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Vectorize store chains whose loads have external uses

vectorizeStores() used to give up on a load-store chain if any of the
loads had a user other than its store. Now that loads of mixed types
can be unpacked from a vector load, vectorize such chains as well: the
loads become a single vector load, and the external users are fed from
the lanes each load occupies, cast back to the load's type if needed.

The unpacking loop of vectorizeLoads() is factored out into
unpackLoads() (along with the canUnpackLoads() check) and shared by
both paths. Chains with a non-integral pointer load that has external
users are still left alone.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+119-100llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+49-35llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+8-14llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+11-1llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+187-1504 files