LLVM/project 684ca02libc/src/__support freestore.h

[libc][__support] Ensure index_to_min_size monotonicity on MSVC Windows in TLSFFreeStoreImpl

On Windows MSVC where alignof(max_align_t) == 8, UNIT_SIZE is 8 while MIN_INNER_SIZE is 24 (3 * UNIT_SIZE).
In index_to_min_size, computing MIN_INNER_SIZE + (index - 1) * UNIT_SIZE + 1 for linear bins caused
index 31 (EXP_BASE - 1) to reach 265 bytes, exceeding the start of the exponential table at index EXP_BASE (32 * 8 = 256 bytes).
This caused IndexToMinSize unit test to fail EXPECT_GT(min_size, prev_size) at index 32.

This change caps min_size for linear bins at (EXP_BASE << UNIT_SIZE_LOG2) - (EXP_BASE - index),
ensuring index_to_min_size is strictly increasing across all indices on all targets.

TAG=agy
CONV=cff84e8c-ee22-4f39-af3c-344d1e6f417b
DeltaFile
+5-2libc/src/__support/freestore.h
+5-21 files

LLVM/project 86659b2clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/lib/ScalableStaticAnalysis/Analyses CMakeLists.txt

[SSAF] Serialize virtual method summaries and families

Per-TU summaries and whole-program results cross process boundaries, and the
JSON layer refuses to write a summary kind it has no format for. Register both
sides so --ssaf-extract-summaries=VirtualMethod becomes usable and the family
result survives a round trip.

Deserialization tolerates a missing override list, since a root virtual method
legitimately has none.

§3 of rdar://179151603
DeltaFile
+390-0clang/unittests/ScalableStaticAnalysis/Serialization/JSONFormatTest/VirtualMethodFamilyFormatTest.cpp
+192-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyFormat.cpp
+22-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysis.cpp
+5-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+1-0clang/lib/ScalableStaticAnalysis/Analyses/CMakeLists.txt
+611-01 files not shown
+612-07 files

LLVM/project 4f0fdb3clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodEntityExtractor.cpp

[SSAF] Extract the virtual method override relation per TU

A virtual call may dispatch to any override of its callee, so a whole-program
analysis cannot reason about a method's parameters and return value in
isolation. It needs to know which method overrides which, and which slots
that relates. Collect this per TU, so a later pass can join the related
slots into families.

JSON serialization lands separately, so the summary is not writable via
--ssaf-extract-summaries yet.

§1 of rdar://179151603
DeltaFile
+228-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyExtractorTest.cpp
+155-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyTestSupport.h
+145-0clang/unittests/ScalableStaticAnalysis/ParsedAST.h
+92-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodEntityExtractor.cpp
+51-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+672-02 files not shown
+674-08 files

LLVM/project 9544962clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage UnsafeBufferUsageAnalysis.cpp, clang/test/Analysis/Scalable/PointerFlow multi-dim-pointer-flow-constraint.test multi-decl-contributor.cpp

[SSAF] Close unsafe-buffer reachability over override families

An unsafe pointer reaching one override's parameter is equally unsafe in every
sibling and base override of that method, because the call site picks the
target dynamically. Without closing over the families, reachability depended
on which override the extractor happened to see the flow through, so a fix
suggested for the base could be contradicted by a derived override.

Mirroring is level-preserving: families relate slot entities, so a reachable
EPL propagates only to the same pointer level on its family members.

The closure runs after the pointer-flow DFS has converged and does not feed
its own output back in, so a flow edge out of a newly discovered EPL is still
missed. FamilyClosureDoesNotRerunDFS pins that gap.

§4 of rdar://179151603
DeltaFile
+320-7clang/unittests/ScalableStaticAnalysis/WholeProgramAnalysis/UnsafeBufferReachableAnalysisTest.cpp
+92-6clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
+1-1clang/test/Analysis/Scalable/PointerFlow/multi-dim-pointer-flow-constraint.test
+1-1clang/test/Analysis/Scalable/PointerFlow/multi-decl-contributor.cpp
+1-1clang/test/Analysis/Scalable/PointerFlow/lref-to-rref-cast.test
+1-1clang/test/Analysis/Scalable/PointerFlow/external-inline-function-in-multi-tu.test
+416-176 files

LLVM/project 0d85b0dclang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/include/clang/ScalableStaticAnalysis/Core/Model EntityId.h

[SSAF] Group virtual method slots into override families

A virtual call site can dispatch to any override, so the parameter and return
slots that occupy the same vtable slot across an override chain are
indistinguishable to a caller. Whole-program consumers therefore have to treat
them as one unit or they will reason about a slot that a call never actually
reaches.

Compute those units up front, keyed per slot, so consumers only need a map
lookup rather than their own traversal of the override relation. Overloads
occupy distinct vtable slots and stay in distinct families.

The family representative is the smallest EntityId in the class, which keeps
the result stable across runs.

§2 of rdar://179151603
DeltaFile
+336-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysisTest.cpp
+201-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysis.cpp
+46-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+11-0clang/include/clang/ScalableStaticAnalysis/Core/Model/EntityId.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+1-0clang/lib/ScalableStaticAnalysis/Analyses/CMakeLists.txt
+596-01 files not shown
+597-07 files

LLVM/project 0aa3c9eclang/test/CodeGenOpenCL builtins-amdgcn-gfx13.cl builtins-amdgcn-gfx1250.cl, llvm/lib/TargetParser AMDGPUTargetParser.cpp

AMDGPU: Add missing smem-prefetch-insts to gfx12.5/gfx13 feature map (#213297)

fillAMDGCNFeatureMap omitted smem-prefetch-insts for gfx125x and gfx13,
so clang wrongly rejected __builtin_amdgcn_s_prefetch_data / _inst /
s_buffer_prefetch_data.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+378-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.prefetch.data.ll
+16-0clang/test/CodeGenOpenCL/builtins-amdgcn-gfx13.cl
+16-0clang/test/CodeGenOpenCL/builtins-amdgcn-gfx1250.cl
+2-0llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+412-04 files

LLVM/project 93da16bclang/lib/CIR/CodeGen CIRGenBuiltinAArch64.cpp, clang/test/CodeGen/AArch64 poly128.c

[CIR][AArch64] Upstream store (vstrq_p128) NEON builtins (#212677)

Related to https://github.com/llvm/llvm-project/issues/185382

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

Port test from `clang/test/CodeGen/AArch64/poly128.c` to
`clang/test/CodeGen/AArch64/neon/store.c`
DeltaFile
+1-12clang/test/CodeGen/AArch64/poly128.c
+11-0clang/test/CodeGen/AArch64/neon/store.c
+9-1clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
+21-133 files

LLVM/project c433135libcxx/include cmath, libcxx/test/std/numerics/complex.number cases.h

[libc++] Remove unused headers from <cmath> (#213114)

I believe these headers were relevant when we actually implemented
functions in `<cmath>`, but they are not anymore. Note that ::hypot in
particular is obtained from <math.h> like all the other math functions.

Co-authored-by: A. Jiang <de34 at live.cn>
DeltaFile
+0-4libcxx/include/cmath
+2-0libcxx/test/std/numerics/complex.number/cases.h
+2-42 files

LLVM/project b87f2d7clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage UnsafeBufferUsageAnalysis.cpp, clang/test/Analysis/Scalable/PointerFlow multi-dim-pointer-flow-constraint.test multi-decl-contributor.cpp

[SSAF] Close unsafe-buffer reachability over override families

An unsafe pointer reaching one override's parameter is equally unsafe in every
sibling and base override of that method, because the call site picks the
target dynamically. Without closing over the families, reachability depended
on which override the extractor happened to see the flow through, so a fix
suggested for the base could be contradicted by a derived override.

Mirroring is level-preserving: families relate slot entities, so a reachable
EPL propagates only to the same pointer level on its family members.

The closure runs after the pointer-flow DFS has converged and does not feed
its own output back in, so a flow edge out of a newly discovered EPL is still
missed. FamilyClosureDoesNotRerunDFS pins that gap.

§4 of rdar://179151603
DeltaFile
+320-7clang/unittests/ScalableStaticAnalysis/WholeProgramAnalysis/UnsafeBufferReachableAnalysisTest.cpp
+92-6clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
+1-1clang/test/Analysis/Scalable/PointerFlow/multi-dim-pointer-flow-constraint.test
+1-1clang/test/Analysis/Scalable/PointerFlow/multi-decl-contributor.cpp
+1-1clang/test/Analysis/Scalable/PointerFlow/lref-to-rref-cast.test
+1-1clang/test/Analysis/Scalable/PointerFlow/external-inline-function-in-multi-tu.test
+416-176 files

LLVM/project 9300099clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodEntityExtractor.cpp

[SSAF] Extract the virtual method override relation per TU

A virtual call may dispatch to any override of its callee, so a whole-program
analysis cannot reason about a method's parameters and return value in
isolation. It needs to know which method overrides which, and which slots
that relates. Collect this per TU, so a later pass can join the related
slots into families.

JSON serialization lands separately, so the summary is not writable via
--ssaf-extract-summaries yet.

§1 of rdar://179151603
DeltaFile
+228-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyExtractorTest.cpp
+155-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyTestSupport.h
+145-0clang/unittests/ScalableStaticAnalysis/ParsedAST.h
+92-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodEntityExtractor.cpp
+51-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+672-02 files not shown
+674-08 files

LLVM/project 68663ccclang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/include/clang/ScalableStaticAnalysis/Core/Model EntityId.h

[SSAF] Group virtual method slots into override families

A virtual call site can dispatch to any override, so the parameter and return
slots that occupy the same vtable slot across an override chain are
indistinguishable to a caller. Whole-program consumers therefore have to treat
them as one unit or they will reason about a slot that a call never actually
reaches.

Compute those units up front, keyed per slot, so consumers only need a map
lookup rather than their own traversal of the override relation. Overloads
occupy distinct vtable slots and stay in distinct families.

The family representative is the smallest EntityId in the class, which keeps
the result stable across runs.

§2 of rdar://179151603
DeltaFile
+336-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysisTest.cpp
+201-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysis.cpp
+46-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+11-0clang/include/clang/ScalableStaticAnalysis/Core/Model/EntityId.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+1-0clang/lib/ScalableStaticAnalysis/Analyses/CMakeLists.txt
+596-01 files not shown
+597-07 files

LLVM/project f83ef0bclang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/lib/ScalableStaticAnalysis/Analyses CMakeLists.txt

[SSAF] Serialize virtual method summaries and families

Per-TU summaries and whole-program results cross process boundaries, and the
JSON layer refuses to write a summary kind it has no format for. Register both
sides so --ssaf-extract-summaries=VirtualMethod becomes usable and the family
result survives a round trip.

Deserialization tolerates a missing override list, since a root virtual method
legitimately has none.

§3 of rdar://179151603
DeltaFile
+390-0clang/unittests/ScalableStaticAnalysis/Serialization/JSONFormatTest/VirtualMethodFamilyFormatTest.cpp
+192-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyFormat.cpp
+22-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysis.cpp
+5-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+1-0clang/lib/ScalableStaticAnalysis/Analyses/CMakeLists.txt
+611-01 files not shown
+612-07 files

LLVM/project 290e9d5libc/src/__support freestore.h, libc/test/src/__support freelist_heap_test.cpp

[libc][__support] Fix linear fast path for first exponential bin in TLSFFreeStoreImpl

Linear bins occupy indices 0 to EXP_BASE - 1. Index EXP_BASE (32) is the first exponential bin.
Previously, index_to_min_size and the linear fast path in find_and_remove_fit used <= EXP_BASE,
which treated index EXP_BASE as a linear bin. This caused find_and_remove_fit to return the
first block in bin EXP_BASE without checking if its size was sufficient for the request.

This change replaces <= with < when comparing against EXP_BASE in index_to_min_size and
find_and_remove_fit, and adds a unit test (NegativeTestForFullHeap).

TAG=agy
CONV=cff84e8c-ee22-4f39-af3c-344d1e6f417b
DeltaFile
+9-0libc/test/src/__support/freelist_heap_test.cpp
+2-2libc/src/__support/freestore.h
+11-22 files

LLVM/project 9bc2dd1libcxx/include/__memory_resource monotonic_buffer_resource.h, libcxx/test/libcxx/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.ctor assert.initial_size.pass.cpp

[libc++] Add an assertion for monotonic_buffer_resource's initial_size (#213136)

[mem.res.monotonic.buffer.ctor] requires initial_size to be greater than
zero for the two constructors that take one, but we silently accepted
zero. Add a hardening assertion for that precondition.

Fixes #213059
DeltaFile
+38-0libcxx/test/libcxx/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.ctor/assert.initial_size.pass.cpp
+9-2libcxx/include/__memory_resource/monotonic_buffer_resource.h
+47-22 files

LLVM/project 194d7d8llvm/include/llvm/ADT GenericCycleInfo.h

[llvm] Include ArrayRef.h in GenericCycleInfo.h (#213267)

Try to fix the llvm-x86_64-debian-dylib builder, which has been broken
for a while with:

```
CCACHE_CPP2=yes CCACHE_HASHDIR=yes CCACHE_SLOPPINESS=pch_defines,time_macros /usr/bin/ccache /usr/bin/clang++ -DLLVM_EXPORTS -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/b/1/llvm-x86_64-debian-dylib/build/lib/CodeGen -I/b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/lib/CodeGen -I/b/1/llvm-x86_64-debian-dylib/build/include -I/b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wno-pass-failed -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -UNDEBUG -fno-exceptions -funwind-tables -fno-rtti -std=c++17 -MD -MT lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/CodeGenPrepare.cpp.o -MF lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/CodeGenPrepare.cpp.o.d -o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/CodeGenPrepare.cpp.o -c /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/lib/CodeGen/CodeGenPrepare.cpp
In file included from /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/lib/CodeGen/CodeGenPrepare.cpp:53:
In file included from /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/include/llvm/IR/CycleInfo.h:18:
/b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/include/llvm/ADT/GenericCycleInfo.h:231:33: error: member reference base type 'ArrayRef' is not a structure or union
    return ArrayRef(BlockLayout).slice(Cyc.EntryBegin, Cyc.EntrySize);
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~
```

see e.g.
https://lab.llvm.org/buildbot/#/builders/60/builds/5422/steps/5/logs/stdio


I'm not sure if this will help or not, I can't reproduce this locally
and nobody else seems to have the same problem(?).
DeltaFile
+1-0llvm/include/llvm/ADT/GenericCycleInfo.h
+1-01 files

LLVM/project dac66calibcxx/test/benchmarks/containers/associative associative_container_benchmarks.h

[libc++] Fix dangling reference in the associative container benchmarks (#213139)

Two insert benchmarks were registered with lambdas capturing insert_iter_iter_bench
by reference, unlike every other registration in this file, which captures by value.

RegisterBenchmark() stores the lambda by value and only invokes it from
RunSpecifiedBenchmarks(), which happens long after associative_container_benchmarks()
has returned, creating a dangling reference.
DeltaFile
+2-2libcxx/test/benchmarks/containers/associative/associative_container_benchmarks.h
+2-21 files

LLVM/project 69685bblibcxx/test/benchmarks/containers/associative associative_container_benchmarks.h

[libc++] Actually partially populate the container in a benchmark (#213146)

The "partially populated" variant of assignment was a copy-paste of the
"into cleared container" assignment.
DeltaFile
+6-1libcxx/test/benchmarks/containers/associative/associative_container_benchmarks.h
+6-11 files

LLVM/project 5e67107flang/lib/Optimizer/Transforms FIRToMemRef.cpp, flang/test/Transforms/FIRToMemRef volatile-codegen.mlir volatile.mlir

[flang] Do not convert load and store FIR ops to memref if volatile (#212884)

Memref dialect has no way to express volatility currently. Let such FIR
operations to stay as FIR to be handled by CodeGen in path to LLVM.
DeltaFile
+77-0flang/test/Transforms/FIRToMemRef/volatile.mlir
+17-0flang/lib/Optimizer/Transforms/FIRToMemRef.cpp
+17-0flang/test/Transforms/FIRToMemRef/volatile-codegen.mlir
+111-03 files

LLVM/project bbbc3e4clang/lib/CodeGen CodeGenModule.cpp, clang/test/CodeGen arm-float-abi-flag.c

clang: Emit "float-abi" module flag (#212985)

Emit the new module flag if it differs from the triple's
default.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+32-0clang/test/CodeGen/arm-float-abi-flag.c
+15-0clang/lib/CodeGen/CodeGenModule.cpp
+47-02 files

LLVM/project 9235a42llvm/lib/Target/AMDGPU SIInstrInfo.cpp, llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR as-vgpr-divergent.ll as-vgpr-gpr-idx-mode.ll

Pin VGPR-memory indexed accesses to EXEC and mark them divergent
DeltaFile
+14-14llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR/as-vgpr-gpr-idx-mode.ll
+7-8llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR/as-vgpr-divergent.ll
+13-0llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+34-223 files

LLVM/project 02638f2clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage UnsafeBufferUsageAnalysis.cpp, clang/test/Analysis/Scalable/PointerFlow multi-dim-pointer-flow-constraint.test multi-decl-contributor.cpp

[SSAF] Close unsafe-buffer reachability over override families

An unsafe pointer reaching one override's parameter is equally unsafe in every
sibling and base override of that method, because the call site picks the
target dynamically. Without closing over the families, reachability depended
on which override the extractor happened to see the flow through, so a fix
suggested for the base could be contradicted by a derived override.

Mirroring is level-preserving: families relate slot entities, so a reachable
EPL propagates only to the same pointer level on its family members.

The closure runs after the pointer-flow DFS has converged and does not feed
its own output back in, so a flow edge out of a newly discovered EPL is still
missed. FamilyClosureDoesNotRerunDFS pins that gap.

§4 of rdar://179151603
DeltaFile
+320-7clang/unittests/ScalableStaticAnalysis/WholeProgramAnalysis/UnsafeBufferReachableAnalysisTest.cpp
+92-6clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
+1-1clang/test/Analysis/Scalable/PointerFlow/multi-dim-pointer-flow-constraint.test
+1-1clang/test/Analysis/Scalable/PointerFlow/multi-decl-contributor.cpp
+1-1clang/test/Analysis/Scalable/PointerFlow/lref-to-rref-cast.test
+1-1clang/test/Analysis/Scalable/PointerFlow/external-inline-function-in-multi-tu.test
+416-176 files

LLVM/project 062dc68clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/lib/ScalableStaticAnalysis/Analyses CMakeLists.txt

[SSAF] Serialize virtual method summaries and families

Per-TU summaries and whole-program results cross process boundaries, and the
JSON layer refuses to write a summary kind it has no format for. Register both
sides so --ssaf-extract-summaries=VirtualMethod becomes usable and the family
result survives a round trip.

Deserialization tolerates a missing override list, since a root virtual method
legitimately has none.

§3 of rdar://179151603
DeltaFile
+390-0clang/unittests/ScalableStaticAnalysis/Serialization/JSONFormatTest/VirtualMethodFamilyFormatTest.cpp
+192-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyFormat.cpp
+22-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysis.cpp
+5-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+1-0clang/lib/ScalableStaticAnalysis/Analyses/CMakeLists.txt
+611-01 files not shown
+612-07 files

LLVM/project 262c914clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/include/clang/ScalableStaticAnalysis/Core/Model EntityId.h

[SSAF] Group virtual method slots into override families

A virtual call site can dispatch to any override, so the parameter and return
slots that occupy the same vtable slot across an override chain are
indistinguishable to a caller. Whole-program consumers therefore have to treat
them as one unit or they will reason about a slot that a call never actually
reaches.

Compute those units up front, keyed per slot, so consumers only need a map
lookup rather than their own traversal of the override relation. Overloads
occupy distinct vtable slots and stay in distinct families.

The family representative is the smallest EntityId in the class, which keeps
the result stable across runs.

§2 of rdar://179151603
DeltaFile
+336-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysisTest.cpp
+201-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyAnalysis.cpp
+46-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+11-0clang/include/clang/ScalableStaticAnalysis/Core/Model/EntityId.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+1-0clang/lib/ScalableStaticAnalysis/Analyses/CMakeLists.txt
+596-01 files not shown
+597-07 files

LLVM/project 465a7c6clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodFamily.h, clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily VirtualMethodEntityExtractor.cpp

[SSAF] Extract the virtual method override relation per TU

A virtual call may dispatch to any override of its callee, so a whole-program
analysis cannot reason about a method's parameters and return value in
isolation. It needs to know which method overrides which, and which slots
that relates. Collect this per TU, so a later pass can join the related
slots into families.

JSON serialization lands separately, so the summary is not writable via
--ssaf-extract-summaries yet.

§1 of rdar://179151603
DeltaFile
+228-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyExtractorTest.cpp
+155-0clang/unittests/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamilyTestSupport.h
+145-0clang/unittests/ScalableStaticAnalysis/ParsedAST.h
+92-0clang/lib/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodEntityExtractor.cpp
+51-0clang/include/clang/ScalableStaticAnalysis/Analyses/VirtualMethodFamily/VirtualMethodFamily.h
+1-0clang/unittests/ScalableStaticAnalysis/CMakeLists.txt
+672-02 files not shown
+674-08 files

LLVM/project 7fd627allvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 avx512-trunc.ll

[X86] combineSelect - `fold select(c,vtrunc(x),0)` => `X86ISD::MTRUNC(x,c)`  (#212865)

resolves #156883
DeltaFile
+57-2llvm/test/CodeGen/X86/avx512-trunc.ll
+13-0llvm/lib/Target/X86/X86ISelLowering.cpp
+70-22 files

LLVM/project 797c5a9clang/test/CodeGenOpenCL builtins-amdgcn-gfx13.cl builtins-amdgcn-gfx1250.cl, llvm/lib/TargetParser AMDGPUTargetParser.cpp

AMDGPU: Add missing smem-prefetch-insts to gfx12.5/gfx13 feature map

fillAMDGCNFeatureMap omitted smem-prefetch-insts for gfx125x and gfx13,
so clang wrongly rejected __builtin_amdgcn_s_prefetch_data / _inst /
s_buffer_prefetch_data.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+378-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.prefetch.data.ll
+16-0clang/test/CodeGenOpenCL/builtins-amdgcn-gfx13.cl
+16-0clang/test/CodeGenOpenCL/builtins-amdgcn-gfx1250.cl
+2-0llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+412-04 files

LLVM/project d954981llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

[VPlan] Use match_fn in uncountableEarlyExit (NFC) (#213289)
DeltaFile
+2-3llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+2-31 files

LLVM/project ac5e5fdllvm/lib/Transforms/Vectorize VPlanTransforms.cpp

[VPlan] Use subpattern-m_VPValue in simplifyRecipe (NFC) (#213268)

Use the subpattern variant of m_VPValue introduced in 8db13de ([VPlan]
Remove redundant x && (y && x) -> x && y combine, #213219) to improve
code in simplifyRecipe.
DeltaFile
+22-23llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+22-231 files

LLVM/project ff9b992llvm/lib/Target/RISCV RISCVISelLowering.cpp, llvm/test/CodeGen/RISCV/rvv vector-interleave-fixed.ll

[RISCV] Fix incorrect lowering of VECTOR_INTERLEAVE on fixed vectors (#212642)

This is the sibling patch of #207254, as it turns out VECTOR_INTERLEAVE
has the same problem on fixed vectors as well.

Instead of converting individual operands into scalable vectors, this
patch puts each of the operands directly onto stack using the fixed
vector version of segmented store intrinsics, before loading them back.

---------

Co-authored-by: Luke Lau <luke at igalia.com>
DeltaFile
+690-1,062llvm/test/CodeGen/RISCV/rvv/vector-interleave-fixed.ll
+24-27llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+714-1,0892 files

LLVM/project b232d11libc/src/math/nvptx CMakeLists.txt fmodf.cpp

[libc] Fix math failures for fmod on NVPTX (#213168)

Summary:
Fixes some failing tests. Fmod's builtin has improper handling in the
NVPTX instruction so we should just use the generic version for now. The
Float128 implementation seems to have had some undefined behavior for
out of range behavior that only showed up now. Hopefully someone can
tell me if this is fixed correctly.
DeltaFile
+0-19libc/src/math/nvptx/fmodf.cpp
+0-19libc/src/math/nvptx/fmod.cpp
+0-16libc/src/math/nvptx/CMakeLists.txt
+0-543 files