LLVM/project 7c372d9compiler-rt/cmake/Modules CompilerRTDarwinUtils.cmake

[compiler-rt][Darwin] Drop i386 slice for builtins on modern SDKs (#215388)

The SDK >= 10.15 i386-removal in darwin_test_archs was gated by `if(NOT
TEST_COMPILE_ONLY)`, so it never fired for the builtins config, which
sets TEST_COMPILE_ONLY=On. `-arch i386` still compiles fine on current
SDKs — ld is the only stage that rejects it — so the compile-only probe
kept i386 in DARWIN_osx_BUILTIN_ARCHS, and downstream `strip` on the
resulting fat archives fails on Xcode 27 with "ld: linking for i386 is
no longer supported".

Hoist the check above the guard so it applies to both the runtime and
builtin arch probes.
DeltaFile
+12-11compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
+12-111 files

LLVM/project abeb492libc/test/src/__support/File platform_file_test.cpp, libc/test/src/unistd syscall_test.cpp

[libc] Remove APPEND_LIBC_TEST (#215869)

It is not needed now that we're never running hermetic and unit tests in
the same build, and it also avoids races with leftover unit test
binaries in the build folder.
DeltaFile
+10-20libc/test/src/wchar/ungetwc_test.cpp
+7-13libc/test/src/__support/File/platform_file_test.cpp
+6-12libc/test/src/wchar/getwchar_test.cpp
+6-12libc/test/src/wchar/fgetws_test.cpp
+6-10libc/test/src/unistd/syscall_test.cpp
+5-10libc/test/src/wchar/fputws_test.cpp
+40-7737 files not shown
+118-20243 files

LLVM/project d3f3f6bllvm/lib/Transforms/Scalar CorrelatedValuePropagation.cpp, llvm/test/Transforms/CorrelatedValuePropagation range-single-user.ll infer-nowrap-from-uses.ll

[CVP] Infer no-wrap flags from operand ranges at use sites. (#207522)

When processBinOp cannot prove a no-wrap flag from the operand ranges at
the definition, fall back to querying the operand ranges constrained at
the binop's use sites. This recovers nsw/nuw when the guard that
establishes the range dominates the uses but not the definition (e.g.
the def sits in the loop body ahead of the overflow-guard branch that 
all uses are behind).

This is triggers in a number of C/C++ workloads and is also quite common
in Swift code which emits overflowing ops extensively, and aborts if the
check fails.

https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/621

Alive2 proof for `@same_guard_diff_ops` from the tests
https://alive2.llvm.org/ce/z/YvHQsK



    [3 lines not shown]
DeltaFile
+315-0llvm/test/Transforms/CorrelatedValuePropagation/infer-nowrap-from-uses.ll
+51-0llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
+1-1llvm/test/Transforms/CorrelatedValuePropagation/range-single-user.ll
+367-13 files

LLVM/project 69f2442openmp/runtime/src/include ompx.h.var

[OMP] Remove omp_get_ancestor_thread_num and omp_get_team_size in ompx.h (#215841)

These two routines are standardized and already exist in omp.h.
DeltaFile
+0-11openmp/runtime/src/include/ompx.h.var
+0-111 files

LLVM/project 70e1946llvm/include/llvm/CodeGen RuntimeLibcallUtil.h, llvm/lib/CodeGen TargetLoweringBase.cpp

[LLVM] Move fp libcall selection into TableGen (#204029)

Summary:
Currently we maintain several different spaces that want to ask which
libcall an intrinsic / type value lowers to. This PR consolidates this
into tablegen by emitting floating point families.  Change
getLibcallForIntrinsic to take FunctionType and derive the FP type
from the complete call signature, rather than requiring callers to pass
a preselected type.

This resolves some outstanding TODOs. The main motivation is a follow-up
where we use this information to augment the LTO pass to more
intentionally extract symbols. I.e. if we see `llvm.sin.f64` we should
extract `sin` from an LTO library.
DeltaFile
+70-324llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+4-229llvm/lib/CodeGen/TargetLoweringBase.cpp
+197-0llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
+43-104llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+125-0llvm/unittests/IR/RuntimeLibcallsTest.cpp
+5-63llvm/include/llvm/CodeGen/RuntimeLibcallUtil.h
+444-7206 files not shown
+627-72012 files

LLVM/project 92b94b9llvm/lib/Transforms/Vectorize LoopVectorizationLegality.cpp, llvm/test/Transforms/LoopVectorize histograms.ll

[LV] Don't form a histogram if the bucket value or its update escapes (#215021)

The histogram intrinsic performs the load, update and store of a bucket
as a single operation, so neither the loaded value nor the updated value
is available to other users. Currently other users are served by a
separate gather, which is incorrect.

Reject cases where either the update or bucket value have multiple
users.

PR: https://github.com/llvm/llvm-project/pull/215021
DeltaFile
+16-43llvm/test/Transforms/LoopVectorize/histograms.ll
+4-0llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+20-432 files

LLVM/project 3d5f915flang/lib/Lower ConvertExprToHLFIR.cpp, flang/lib/Lower/OpenMP DataSharingProcessor.cpp OpenMP.cpp

[flang][OpenMP] Revert array element reduction lowering (#215617)

Revert #196094 and its follow-up #209701. The expression override
mechanism does not preserve reduction-object identity across all data
environments, leading to incorrect lowering for procedure-local and
nested private arrays.

Restore the pre-#196094 lowering while retaining semantic-context
plumbing needed by later user-defined reduction support. Keep coverage
showing that array-element constructs compile through the boxed-array
reduction path.

This was in response to this comment:
https://github.com/llvm/llvm-project/pull/196094#issuecomment-5248085956

Fixing exactly the bug in the comment wasn't hard but AI code review
found a large number of follow on bugs so I think the design needs a
rethink, and definitely shouldn't be included in the LLVM release.

Assisted-by: Codex
DeltaFile
+47-285flang/lib/Lower/OpenMP/OpenMP.cpp
+51-93flang/lib/Lower/Support/ReductionProcessor.cpp
+24-92flang/test/Lower/OpenMP/reduction-array-element.f90
+4-43flang/lib/Lower/ConvertExprToHLFIR.cpp
+11-33flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
+43-0flang/test/Lower/OpenMP/Todo/reduction-array-element-task-privatization.f90
+180-5465 files not shown
+186-61411 files

LLVM/project 46a8349clang/test/CodeGen/LoongArch/lasx builtin.c builtin-alias.c, llvm/test/tools/llvm-mca/AArch64/Cortex C1Nano-basic-instructions.s C1Nano-neon-instructions.s

rebase

Created using spr 1.3.7
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+5,067-2,506llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-basic-instructions.s
+6,869-0llvm/test/tools/llvm-mca/AArch64/HiSilicon/hip12-sve-instructions.s
+2,728-2,728clang/test/CodeGen/LoongArch/lasx/builtin-alias.c
+2,724-2,724clang/test/CodeGen/LoongArch/lasx/builtin.c
+37,502-17,9604,929 files not shown
+258,170-128,8684,935 files

LLVM/project 1a55155clang/test/CodeGen/LoongArch/lasx builtin.c builtin-alias.c, llvm/test/tools/llvm-mca/AArch64/Cortex C1Nano-basic-instructions.s C1Nano-neon-instructions.s

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+5,067-2,506llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-basic-instructions.s
+6,869-0llvm/test/tools/llvm-mca/AArch64/HiSilicon/hip12-sve-instructions.s
+2,728-2,728clang/test/CodeGen/LoongArch/lasx/builtin-alias.c
+2,724-2,724clang/test/CodeGen/LoongArch/lasx/builtin.c
+37,502-17,9604,929 files not shown
+258,170-128,8684,935 files

LLVM/project 9460e88clang/test/CodeGen/LoongArch/lasx builtin.c builtin-alias.c, llvm/test/tools/llvm-mca/AArch64/Cortex C1Nano-basic-instructions.s C1Nano-neon-instructions.s

rebase

Created using spr 1.3.7
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+5,067-2,506llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-basic-instructions.s
+6,869-0llvm/test/tools/llvm-mca/AArch64/HiSilicon/hip12-sve-instructions.s
+2,728-2,728clang/test/CodeGen/LoongArch/lasx/builtin-alias.c
+2,724-2,724clang/test/CodeGen/LoongArch/lasx/builtin.c
+37,502-17,9604,929 files not shown
+258,170-128,8684,935 files

LLVM/project 8d530fcclang/test/CodeGen/LoongArch/lasx builtin.c builtin-alias.c, llvm/test/tools/llvm-mca/AArch64/Cortex C1Nano-basic-instructions.s C1Nano-neon-instructions.s

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+5,067-2,506llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-basic-instructions.s
+6,869-0llvm/test/tools/llvm-mca/AArch64/HiSilicon/hip12-sve-instructions.s
+2,728-2,728clang/test/CodeGen/LoongArch/lasx/builtin-alias.c
+2,724-2,724clang/test/CodeGen/LoongArch/lasx/builtin.c
+37,502-17,9604,929 files not shown
+258,170-128,8684,935 files

LLVM/project 5c10d72clang/test/CodeGen/LoongArch/lasx builtin.c builtin-alias.c, llvm/test/tools/llvm-mca/AArch64/Cortex C1Nano-basic-instructions.s C1Nano-neon-instructions.s

rebase

Created using spr 1.3.7
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+5,067-2,506llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-basic-instructions.s
+6,869-0llvm/test/tools/llvm-mca/AArch64/HiSilicon/hip12-sve-instructions.s
+2,728-2,728clang/test/CodeGen/LoongArch/lasx/builtin-alias.c
+2,724-2,724clang/test/CodeGen/LoongArch/lasx/builtin.c
+37,502-17,9604,929 files not shown
+258,170-128,8684,935 files

LLVM/project f511325clang/test/CodeGen/LoongArch/lasx builtin.c builtin-alias.c, llvm/test/tools/llvm-mca/AArch64/Cortex C1Nano-basic-instructions.s C1Nano-neon-instructions.s

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+5,067-2,506llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-basic-instructions.s
+6,869-0llvm/test/tools/llvm-mca/AArch64/HiSilicon/hip12-sve-instructions.s
+2,728-2,728clang/test/CodeGen/LoongArch/lasx/builtin-alias.c
+2,724-2,724clang/test/CodeGen/LoongArch/lasx/builtin.c
+37,502-17,9604,929 files not shown
+258,170-128,8684,935 files

LLVM/project 74f4aa7clang/test/CodeGen/LoongArch/lasx builtin.c builtin-alias.c, llvm/test/tools/llvm-mca/AArch64/Cortex C1Nano-basic-instructions.s C1Nano-neon-instructions.s

rebase

Created using spr 1.3.7
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+5,067-2,506llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-basic-instructions.s
+6,869-0llvm/test/tools/llvm-mca/AArch64/HiSilicon/hip12-sve-instructions.s
+2,728-2,728clang/test/CodeGen/LoongArch/lasx/builtin-alias.c
+2,724-2,724clang/test/CodeGen/LoongArch/lasx/builtin.c
+37,502-17,9604,929 files not shown
+258,170-128,8684,935 files

LLVM/project 29df404clang/test/CodeGen/LoongArch/lasx builtin.c builtin-alias.c, llvm/test/tools/llvm-mca/AArch64/Cortex C1Nano-basic-instructions.s C1Nano-neon-instructions.s

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+13,767-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+6,347-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+5,067-2,506llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-basic-instructions.s
+6,869-0llvm/test/tools/llvm-mca/AArch64/HiSilicon/hip12-sve-instructions.s
+2,728-2,728clang/test/CodeGen/LoongArch/lasx/builtin-alias.c
+2,724-2,724clang/test/CodeGen/LoongArch/lasx/builtin.c
+37,502-17,9604,929 files not shown
+258,170-128,8684,935 files

LLVM/project 3d5caedllvm/lib/Transforms/Scalar Reassociate.cpp, llvm/test/Transforms/PhaseOrdering/AArch64 reduce_submuladd.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+282-0llvm/test/Transforms/Reassociate/fma-pairs.ll
+70-70llvm/test/Transforms/PhaseOrdering/AArch64/reduce_submuladd.ll
+56-12llvm/lib/Transforms/Scalar/Reassociate.cpp
+58-0llvm/test/Transforms/PhaseOrdering/X86/fma-reassociate-pairs.ll
+466-824 files

LLVM/project a3c8639llvm/lib/Transforms/IPO WholeProgramDevirt.cpp LowerTypeTests.cpp, llvm/test/ThinLTO/X86 devirt_function_alias2.ll

[CFI] Create an external linkage alias instead of promoting internals
DeltaFile
+19-32llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
+35-0llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+29-0llvm/test/Transforms/LowerTypeTests/promoted-internal.ll
+10-7llvm/test/Transforms/ThinLTOBitcodeWriter/comdat.ll
+9-4llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
+5-3llvm/test/ThinLTO/X86/devirt_function_alias2.ll
+107-464 files not shown
+118-5410 files

LLVM/project aae313eflang/lib/Lower/OpenMP Utils.cpp, flang/lib/Optimizer/OpenMP MapInfoFinalization.cpp

[Flang][OpenMP] Fix nested OpenMP mapper composition (#215639)
DeltaFile
+94-15flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp
+97-0flang/test/Lower/OpenMP/nested-default-mapper.f90
+3-3flang/lib/Lower/OpenMP/Utils.cpp
+194-183 files

LLVM/project a030ecdllvm/lib/CodeGen/SelectionDAG LegalizeTypes.h LegalizeDAG.cpp, llvm/test/CodeGen/AMDGPU fneg.ll

DAG: Gracefully diagnose missing soft-float libcalls (#215065)
DeltaFile
+45-11llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+35-0llvm/test/CodeGen/NVPTX/f128-no-libcall-error.ll
+10-4llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+2-2llvm/test/CodeGen/AMDGPU/fneg.ll
+1-0llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
+93-175 files

LLVM/project bcd3bf2utils/bazel/llvm-project-overlay/lldb/source/Plugins BUILD.bazel

[Bazel] Fixes cb72195 (#215861)

This fixes cb721957e5e78875ea1d96dc53d46353e7b98d23 (#203234).

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

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

LLVM/project 851a558llvm/lib/Transforms/InstCombine InstCombineCompares.cpp, llvm/test/Transforms/InstCombine icmp-floor-align.ll

[InstCombine] Fold (X - X%C) u>= C to X u>= C (#214381)

(X - (X urem D)) is D*(X/D), a multiple of D. A multiple of D is u> C
exactly when X u>= D for any C u< D, and u< C exactly when X u< D for
any
0 u< C u<= D.

  icmp ugt (sub X, (urem X, D)), C --> icmp ugt X, D-1   for C u< D
icmp ult (sub X, (urem X, D)), C --> icmp ult X, D for 0 u< C u<= D

The ugt case previously required C == D-1; it now folds for the whole
[0, D) range. The ult case is new.

alive2 (ugt): https://alive2.llvm.org/ce/z/_sUmC2
alive2 (ult): https://alive2.llvm.org/ce/z/x4vfAz
alive2 : https://alive2.llvm.org/ce/z/ktjUcP
DeltaFile
+184-0llvm/test/Transforms/InstCombine/icmp-floor-align.ll
+12-0llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+196-02 files

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

[SandboxVectorizer] Make LoadStoreVec::vectorizeStores direction-agnostic

Remove classifyStoreOperands()/isFoldableLoadOperand(): vectorizeStores()
no longer gates on whether a store chain's value operands are all loads,
all constants, or neither. Instead it always builds the vector value via
a new packOperands(), which packs any mix of loads, constants, or
arbitrary SSA values via extractelement/insertelement -- direction-
agnostic in the sense that it doesn't care what kind of operand it's
given, unlike the load-specific and constant-specific paths it replaces.

packOperands() combines operands at the granularity of their narrowest
common scalar element type (the same rule getCombinedVectorTypeFor()
uses), splitting a wider operand into multiple lanes via a bitcast. A
plain bitcast can't convert between pointer and non-pointer types, and
inttoptr requires an integer source, so reinterpretSameWidth() picks
bitcast, ptrtoint, or inttoptr as needed, routing a non-integer,
non-pointer operand (e.g. double) through an intermediate same-width
integer when the target granularity is a pointer.


    [38 lines not shown]
DeltaFile
+149-96llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+114-36llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+116-32llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+6-2llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/AMDGPU/basic.ll
+1-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+386-1665 files

LLVM/project 328382aclang/test/CodeGenHLSL/builtins degrees-builtin.hlsl degrees.hlsl, clang/test/SemaHLSL/BuiltIns degrees-errors.hlsl

[HLSL] Move `degrees` implementation to header files (#215436)

Closes #213096.

This PR replaces the previous implementation of `degrees` with a new one
inside the header files.
The SPIRV intrinsic (`int_spv_degrees`) and its lowering are
intentionally kept, since a follow-up will pattern-match `Val *
(180/pi)` back to the extended instruction and needs the SPIRV intrinsic
to do so.

Assisted-by: Claude Opus 4.8
DeltaFile
+63-68clang/test/CodeGenHLSL/builtins/degrees-overloads.hlsl
+27-52clang/test/CodeGenHLSL/builtins/degrees.hlsl
+0-54llvm/test/CodeGen/DirectX/degrees.ll
+0-26clang/test/SemaHLSL/BuiltIns/degrees-errors.hlsl
+0-16clang/test/CodeGenHLSL/builtins/degrees-builtin.hlsl
+0-12llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
+90-2288 files not shown
+96-24914 files

LLVM/project 5835482mlir/include/mlir/Dialect/Bufferization/IR BufferizationOps.td, mlir/include/mlir/Dialect/Bufferization/Transforms BufferizableOpInterfaceImpl.h

[mlir][bufferization] Make the dialect's bufferization customizable (#215590)

The bufferization dialect's ops declared `BufferizableOpInterface` in
their ODS trait lists, so the models were part of the op definitions.
The MLIR interface map keeps the first model attached to an op, and an
op-defined model is always first, so a downstream project could not
replace them. For `bufferization.alloc_tensor` the only remaining hook
was `BufferizationOptions::allocationFn`. That hook cannot change the
buffer type without a contract break: `getBufferType` keeps reporting a
static identity layout, the allocation function returns a different
layout, and every consumer that predicts the type before the buffer
exists then disagrees with the buffer that appears.

Move the models out of the op definitions into external models, the same
way `arith`, `tensor`, `scf`, and the other dialects do it.
`bufferization::registerBufferizableOpInterfaceExternalModels` attaches
the models for `alloc_tensor`, `dealloc_tensor`,
`materialize_in_destination`, `to_buffer` and `to_tensor`, and
`registerAllDialects` calls it. A project that must control how these

    [8 lines not shown]
DeltaFile
+324-0mlir/lib/Dialect/Bufferization/Transforms/BufferizableOpInterfaceImpl.cpp
+0-202mlir/lib/Dialect/Bufferization/IR/BufferizationOps.cpp
+162-0mlir/test/Dialect/Bufferization/bufferize.mlir
+3-123mlir/include/mlir/Dialect/Bufferization/IR/BufferizationOps.td
+21-0mlir/include/mlir/Dialect/Bufferization/Transforms/BufferizableOpInterfaceImpl.h
+2-0mlir/lib/RegisterAllDialects.cpp
+512-3251 files not shown
+513-3257 files

LLVM/project d3fa487clang/include/clang/AST ASTContext.h, clang/lib/Sema MultiplexExternalSemaSource.cpp SemaLambda.cpp

Fix lambda merging to apply to locally-parsed lambdas. (#215661)

Clang's lambda-merging logic was implemented in the ASTReader, meaning
that it only applied for lambdas that were imported from AST files. This
caused us to fail to merge lambdas in the case where both lambdas were
parsed as part of the current compilation, for example if they are
included into distinct submodules in the same header module.

Fix this by moving the merging logic out of ASTReader and into Sema, and
moving the tracking of lambdas that need to be merged out of ASTReader
and into ASTContext. This removes the AssignedLambdaNumbering callback
from ExternalSemaSource, which was only being used for this purpose.

Fixes #214560.

Assisted-by: Gemini for the mechanical reorganization. Rework of
handleLambdaNumbering done by hand.
DeltaFile
+31-9clang/lib/Sema/SemaLambda.cpp
+0-23clang/lib/Serialization/ASTReader.cpp
+18-0clang/test/Modules/lambda-merge-local.cpp
+15-0clang/include/clang/AST/ASTContext.h
+4-4clang/lib/Serialization/ASTReaderDecl.cpp
+0-6clang/lib/Sema/MultiplexExternalSemaSource.cpp
+68-424 files not shown
+71-5610 files

LLVM/project 4127ca4lldb/include/lldb/DataFormatters DumpValueObjectOptions.h, lldb/source/Commands CommandObjectFrame.cpp

[lldb] Remove ConstString from DumpValueObjectOptions (#215421)

There are 2 uses of ConstString in DumpValueObjectOptions:
DeclPrintingHelper and ChildPrintingDecider, both being std::functions.
The former takes 2 ConstString arguments and the latter takes just one.

These functions don't really need their arguments (type names, var
names, register names) to actually be in a ConstString. For the most
part, they are just printing the string out or otherwise analyzing it.
DeltaFile
+2-2lldb/source/Core/DumpRegisterValue.cpp
+2-2lldb/include/lldb/DataFormatters/DumpValueObjectOptions.h
+1-1lldb/source/Commands/CommandObjectFrame.cpp
+5-53 files

LLVM/project f51370dclang/lib/Driver/ToolChains Clang.cpp, clang/lib/Frontend CompilerInvocation.cpp

[CIR] Honor -fno-clangir (#214904)

`-fno-clangir` was a no-op whenever `-fclangir` also appeared on the
command line, in either order: the CIR pipeline ran regardless.
Options.td already declares clangir as a BoolFOption with a NegFlag, so
last-wins semantics were intended and the generated marshalling
implements them correctly.
DeltaFile
+23-0clang/test/CIR/Driver/clangir.c
+1-1clang/lib/Frontend/CompilerInvocation.cpp
+1-1clang/lib/Driver/ToolChains/Clang.cpp
+25-23 files

LLVM/project 03c0c8blld/test/wasm cooperative-threading-gc.s, lld/wasm MarkLive.cpp

[lld][WebAssembly] Follow relocations of TLS-base accessors during GC (#206831)

With `--gc-sections` (the default), `wasm-ld` garbage-collects functions
that are only reachable through `__wasm_get_tls_base` /
`__wasm_set_tls_base` in the cooperative-threading (libcall
thread-context) configuration. This produces a linked module that is
invalid or behaves incorrectly: the relocation inside
`__wasm_set_tls_base` is left dangling / mis-resolved, so callers trap
at runtime (e.g. `validation error: ... values remaining on stack at end
of block`, or a call to an unrelated function).

In cooperative-threading mode (`--cooperative-threading`, added in
#200855), per-task thread context is accessed through libcalls rather
than wasm globals. `wasm-ld` synthesizes `__wasm_init_tls` /
`__wasm_init_memory`, which invoke `__wasm_get_tls_base` and
`__wasm_set_tls_base` via **raw `call` instructions that carry no
relocations**. To keep those accessors in the output, the linker marks
them live with `Symbol::markLive()`.


    [77 lines not shown]
DeltaFile
+57-0lld/test/wasm/cooperative-threading-gc.s
+14-0lld/wasm/MarkLive.cpp
+71-02 files

LLVM/project 4714909flang/test/Lower/OpenMP/Todo metadirective-block-host-association-clause.f90 metadirective-loop-unsupported-replacements.f90

Consolidate metadirective lowering TODO tests
DeltaFile
+101-4flang/test/Lower/OpenMP/Todo/metadirective-loop-data-environment.f90
+74-0flang/test/Lower/OpenMP/Todo/metadirective-loop-iteration-variable.f90
+68-3flang/test/Lower/OpenMP/Todo/metadirective-block-data-environment.f90
+0-60flang/test/Lower/OpenMP/Todo/metadirective-loop-enclosing-data-environment.f90
+52-0flang/test/Lower/OpenMP/Todo/metadirective-loop-unsupported-replacements.f90
+0-37flang/test/Lower/OpenMP/Todo/metadirective-block-host-association-clause.f90
+295-1049 files not shown
+295-29215 files

LLVM/project 6f99daeflang/lib/Lower/OpenMP DataSharingProcessor.cpp OpenMP.cpp, flang/lib/Semantics openmp-utils.cpp

[flang][OpenMP] Lower DO and SIMD variants in metadirectives

A standalone metadirective and its associated DO are sibling PFT evaluations,
so a selected loop replacement cannot directly reuse ordinary OpenMP loop
lowering. Runtime selection must also preserve exactly one copy of the loop in
each reachable branch. Temporarily associate the evaluations while lowering
to support DO, SIMD, and DO SIMD replacements without losing or duplicating the
ordinary fallback loop.

For example:

```fortran
!$omp metadirective &
!$omp& when(user={condition(flag)}: do) &
!$omp& otherwise(nothing)
do i = 1, n
  a(i) = i
end do
```

    [49 lines not shown]
DeltaFile
+582-211flang/lib/Lower/OpenMP/OpenMP.cpp
+673-0flang/test/Lower/OpenMP/metadirective-loop.f90
+326-0flang/lib/Semantics/openmp-utils.cpp
+132-0flang/test/Lower/OpenMP/Todo/metadirective-block-data-environment.f90
+96-1flang/test/Lower/OpenMP/metadirective-implementation.f90
+70-9flang/lib/Lower/OpenMP/DataSharingProcessor.cpp
+1,879-22122 files not shown
+2,397-23928 files