LLVM/project 4aeec59llvm/include/llvm/ExecutionEngine/Orc/Shared ConnectionSpec.h, llvm/lib/ExecutionEngine/Orc/Shared CMakeLists.txt ConnectionSpec.cpp

[ORC] Add ConnectionSpec for connection string parsing (#224000)

A ConnectionSpec is the parsed form of a string describing one
connection a process should establish with its peer:

  <transport>[:<action>]=<descriptor>

E.g. "fd=3" or "tcp:connect=localhost:20000". The parser only checks
punctuation: transport and action names are opaque tokens, and the
descriptor's syntax is left to the transport, which lets a descriptor
contain ':' and '=' unescaped (e.g. "tcp:listen=[::1]:0").

This will be used by llvm-jitlink and llvm-jitlink-executor to
generalize out-of-process executor connection setup beyond the current
fd/TCP-only options.
DeltaFile
+106-0llvm/unittests/ExecutionEngine/Orc/ConnectionSpecTest.cpp
+74-0llvm/include/llvm/ExecutionEngine/Orc/Shared/ConnectionSpec.h
+38-0llvm/lib/ExecutionEngine/Orc/Shared/ConnectionSpec.cpp
+1-0llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt
+1-0llvm/lib/ExecutionEngine/Orc/Shared/CMakeLists.txt
+220-05 files

LLVM/project a0a4f29clang/test/OpenMP declare_variant_scoring.c, flang/test/Lower/OpenMP metadirective-target-boundary.f90 declare-variant-construct.f90

[clang][flang][OpenMP] Correct OpenMP context selector matching and scoring

Context selector ranking is shared by DECLARE VARIANT and metadirective
lowering. Incorrect construct matches, context-dependent device weights, or
overflowing scores can select a different variant and cause Flang to skip
required loop diagnostics.

Preserve the highest-scoring ordered construct matches and derive device
weights from the enclosing context. Widen score arithmetic as needed, and
retain selector identity and scores for unknown properties so MATCH_ANY and
MATCH_NONE handle dynamic conditions and implicit NOTHING correctly. Bound
lowering contexts at TARGET and include SIMD traits so Clang and Flang use
the same context for selection.

Assisted with codex.
DeltaFile
+311-1llvm/unittests/Frontend/OpenMPContextTest.cpp
+115-94llvm/lib/Frontend/OpenMP/OMPContext.cpp
+185-6flang/test/Lower/OpenMP/metadirective-user.f90
+119-2flang/test/Lower/OpenMP/declare-variant-construct.f90
+92-0clang/test/OpenMP/declare_variant_scoring.c
+62-0flang/test/Lower/OpenMP/metadirective-target-boundary.f90
+884-1036 files not shown
+972-13012 files

LLVM/project ba019b7llvm/lib/Target/Sparc SparcISelDAGToDAG.cpp, llvm/test/CodeGen/SPARC bswap.ll

[SPARC] Fix SelectForceADDRrr for global addresses and non-reg operands (#220013)

When lowering byte-swapped memory operations on SPARC V9, LLVM emits
ASI-tagged memory instructions (such as STHArr, STArr, LDArr, etc.) that
require register+register addressing modes matched via ForceADDRrr.

SelectForceADDRrr previously forwarded 2-operand address nodes directly
to SelectADDRrr. However, SelectADDRrr explicitly returns false when
encountering SPISD::Lo (used in %hi/%lo global address calculations) or
small constant offsets in order to allow standard ADDRri patterns to
match. Because SelectForceADDRrr returned the result of SelectADDRrr
directly instead of falling back to Base = Addr, Disp = %g0, any
endian-adjusted load or store targeting a global variable failed to
select and caused a backend compiler crash:
  "Cannot select: SPISD::STORE_LITTLE ..."

Fix SelectForceADDRrr so that if SelectADDRrr fails to match, it falls
back to evaluating the full address into a base register and using %g0
as the offset register. Also add tests for global variable byte-swapped

    [7 lines not shown]
DeltaFile
+201-0llvm/test/CodeGen/SPARC/bswap.ll
+2-5llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp
+203-52 files

LLVM/project 82fc843libcxx/include/__algorithm find_if.h, libcxx/test/libcxx/algorithms unaligned_empty_range.pass.cpp

[libc++] Don't assume a valid range in find_if for empty inputs (#213752)

Iterators for empty ranges are sometimes implemented using a
non-aligned sentinel value. Requiring proper alignment in that
case (which is part of the valid range assumption) causes a
hardening failure. Instead, don't make the assumption of a
valid range when the input range is empty in find_if.

(cherry picked from commit 83290d61f6ead40a5c38297a0442b63291ce7a48)
DeltaFile
+83-0libcxx/test/libcxx/algorithms/unaligned_empty_range.pass.cpp
+8-1libcxx/include/__algorithm/find_if.h
+91-12 files

LLVM/project 2eabe80libcxx/include __hash_table __tree, libcxx/include/__utility try_key_extraction.h

[libc++] Opt `std::*set` out of map key extraction optimization (#220452)

PR #154512 (relanded by #155565) removed `__can_extract_map_key`, which
had a blanket opt-out for `std::*set`s. The new logic does not have that
opt-out, leading to `std::set`s being incorrectly constructed.

The new regression tests demonstrate this, but essentially the idea is:
1. Have `std::set<T> foo;`
2. Call `foo.emplace(some_t,
arg_that_influences_comparisons_or_hashes);`
3. The emplace will internally search using `some_t` as the key, *not*
`T(some_t, arg_that_influences_comparisons_or_hashes);`

This opts out `std::*set` from this optimization to match previous
behavior.

Tests and fix were produced by an LLM. I reviewed them and they seem
reasonable to me, though I don't have a strong background in libc++
testing conventions.

    [7 lines not shown]
DeltaFile
+10-6libcxx/include/__utility/try_key_extraction.h
+16-0libcxx/test/std/containers/associative/set/emplace.pass.cpp
+10-0libcxx/test/std/containers/unord/unord.set/emplace.pass.cpp
+3-3libcxx/include/__tree
+1-1libcxx/include/__hash_table
+40-105 files

LLVM/project 3936f33llvm/lib/Target/DirectX DXILOpLowering.cpp, llvm/test/CodeGen/DirectX Sample.ll SampleBias.ll

[DirectX] Make DXILOpLowering split vector coordinates, offsets, and gradient operands (#223091)

Fixes https://github.com/llvm/llvm-project/issues/217777

DXILOpLowering didn't split vector coordinates, offsets, and gradient
operands into scalars for textureLoad, textureStore, and sample
intrinsics like it did for store data. This PR fixes that.

This PR also removes inconsistencies where the DXILOpLowering pass
emitted a mix of i64 and i32 indices for `extractelement`. It now just
emits i32 indices.

Assisted by: Claude Opus 5
DeltaFile
+96-53llvm/test/CodeGen/DirectX/SampleGrad.ll
+74-41llvm/lib/Target/DirectX/DXILOpLowering.cpp
+80-18llvm/test/CodeGen/DirectX/TextureStore.ll
+55-31llvm/test/CodeGen/DirectX/TextureLoad.ll
+55-19llvm/test/CodeGen/DirectX/SampleBias.ll
+54-19llvm/test/CodeGen/DirectX/Sample.ll
+414-1813 files not shown
+560-2099 files

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

fixup! Simplify the combine conditions
DeltaFile
+1,792-4,579llvm/test/CodeGen/RISCV/rvv/vector-interleave-fixed.ll
+19-53llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+1,811-4,6322 files

LLVM/project e8bdb0eutils/bazel/llvm-project-overlay/libc/test libc_test_rules.bzl, utils/bazel/llvm-project-overlay/libc/test/UnitTest BUILD.bazel

[bazel][test][libc] Use clock LLVM-libc entrypoint in overlay tests
DeltaFile
+2-6utils/bazel/llvm-project-overlay/libc/test/libc_test_rules.bzl
+1-1utils/bazel/llvm-project-overlay/libc/test/UnitTest/BUILD.bazel
+3-72 files

LLVM/project f5b5ff6utils/bazel/llvm-project-overlay/libc/test libc_test_rules.bzl, utils/bazel/llvm-project-overlay/libc/test/include BUILD.bazel

[test][bazel][libc] Fix dependencies for some tests under full-build
DeltaFile
+82-59utils/bazel/llvm-project-overlay/libc/test/include/BUILD.bazel
+37-4utils/bazel/llvm-project-overlay/libc/test/src/stdio/BUILD.bazel
+16-4utils/bazel/llvm-project-overlay/libc/test/src/string/BUILD.bazel
+6-2utils/bazel/llvm-project-overlay/libc/utils/MPCWrapper/BUILD.bazel
+3-3utils/bazel/llvm-project-overlay/libc/test/libc_test_rules.bzl
+4-1utils/bazel/llvm-project-overlay/libc/utils/MPFRWrapper/BUILD.bazel
+148-736 files

LLVM/project 2243fc1utils/bazel/llvm-project-overlay/libc/startup/linux startup_rules.bzl, utils/bazel/llvm-project-overlay/libc/test libc_test_rules.bzl

[test][bazel][libc] Allow LLVM-libc tests to be run in full-build mode

This PR makes the required changes to run LLVM-libc full build tests in Bazel. After this PR, most tests pass:

```
bazel test @llvm-project//libc/test/... --config=ci --@llvm-project//libc:build_mode=full --keep_going
Executed 680 out of 853 tests: 681 tests pass and 172 fail to build.
```

Follow on PRs will fix specific tests that are failing (lots of missing deps etc).

This PR mostly involves propagating the correct dependencies and compiler/linker options from [`add_libc_hermetic`](https://github.com/llvm/llvm-project/blob/4098f568c46e06b6df470111868b4c165dd80f4d/libc/cmake/modules/LLVMLibCTestRules.cmake#L750). Slightly more involved changes:
- `BazelFilePath.cpp` also had to be fixed so that it doesn't depend on the non-namespaced `getenv` function. This PR models after https://github.com/llvm/llvm-project/commit/ee407f7e7069cccfdc1815de07e17cebf83d19f9 in order to conditionally use LLVM-libc's getenv under full-build mode.
- All tests have a dependency against `crt1.o` when run under full-build. This PR updates `merge_relocatable_object` so it also exposes a `CcInfo` with the merged object file and its transitive deps. In order to do so, this PR also makes the logic a little more careful about PIC vs non-PIC deps.
DeltaFile
+59-17utils/bazel/llvm-project-overlay/libc/test/libc_test_rules.bzl
+48-3utils/bazel/llvm-project-overlay/libc/test/UnitTest/BUILD.bazel
+19-0utils/bazel/llvm-project-overlay/libc/startup/linux/startup_rules.bzl
+126-203 files

LLVM/project a9ea77flibc/test/UnitTest BazelFilePath.cpp

[bazel][libc] Do not depend on system `getenv` in BazelFilePath.cpp

This PR models after https://github.com/llvm/llvm-project/commit/ee407f7e7069cccfdc1815de07e17cebf83d19f9 in order to conditionally use LLVM-libc's `getenv` when compiling in full-build mode.
DeltaFile
+13-3libc/test/UnitTest/BazelFilePath.cpp
+13-31 files

LLVM/project 059358autils/bazel/llvm-project-overlay/libc BUILD.bazel

[bazel][libc] Allow libc:types_char8_t to compile in full-build mode (#223872)
DeltaFile
+4-4utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+4-41 files

LLVM/project 756c2fdutils/bazel/llvm-project-overlay/libc/startup/linux BUILD.bazel startup_rules.bzl

[bazel][libc] Be explicit about pic/nopic in startup_rules.bzl (#223851)

Currently, `_get_object_files` gets object files from
`OuputGroupInfo.compilation_outputs`, which isn't very well documented
any will often just choose the PIC variant: see
[`cc_helper.bzl`](https://github.com/bazelbuild/rules_cc/blob/661b75de668c3b673f5550e0340e134ccf923956/cc/common/cc_helper.bzl#L192)
and
[`needs_pic_for_dynamic_libraries`](https://github.com/bazelbuild/rules_cc/blob/b72bca6252e808ac3685a2a627197a151c6bfed9/cc/private/rules_impl/cc_toolchain_info.bzl#L23).

This PR updates `merge_relocatable_object` to propagate both pic/nopic
variants of the merged object, and updates `libc_startup_object` to be
explicit about its choice of pic/nopic.

The exact choice of how to handle pic/nopic may need to be updated in
the future as we add `rcrt1.o`, but the setup in this PR is better than
just using `compilation_outputs` verbatim.
DeltaFile
+103-52utils/bazel/llvm-project-overlay/libc/startup/linux/startup_rules.bzl
+20-3utils/bazel/llvm-project-overlay/libc/startup/linux/BUILD.bazel
+123-552 files

LLVM/project b49c7d0llvm/docs/DirectX SemanticSignatures.md, llvm/include/llvm/Frontend/HLSL SemanticSignaturePacking.h

[HLSLSemanticSignatures] Implement the indexed packing of elements (#218061)

Implements the indexed packing algorithm.

Resolves: #205877

Assisted by: Claude Opus 5 and GPT-5.6 Sol
DeltaFile
+138-19llvm/unittests/Frontend/HLSLSemanticSignaturePackingTest.cpp
+53-0llvm/lib/Frontend/HLSL/SemanticSignaturePacking.cpp
+27-0llvm/docs/DirectX/SemanticSignatures.md
+19-0llvm/include/llvm/Frontend/HLSL/SemanticSignaturePacking.h
+237-194 files

LLVM/project 812c14dclang/lib/Driver/ToolChains WebAssembly.cpp, clang/test/CodeGen exception-model-flag.c

WebAssembly: Drive Emscripten EH from the exception model, drop the cl::opt

Remove the deprecated -enable-emscripten-cxx-exceptions flag. This should now
be driven by the generic exception-model mechanisms. There was also some special
case handling of the -mllvm flag in the clang driver which also needed removal.

Also reverts the test change in b6912258891caefffbf15edb1bceff3724b75af5 now that
the backend doesn't need to be built to test the flag behavior.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+1-25clang/test/Driver/wasm-toolchain.c
+0-16clang/test/CodeGen/WebAssembly/exception-model-flag.c
+2-14llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+3-13clang/lib/Driver/ToolChains/WebAssembly.cpp
+8-0clang/test/CodeGen/exception-model-flag.c
+5-2llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp
+19-703 files not shown
+21-789 files

LLVM/project f157f1allvm/include/llvm/Analysis RuntimeLibcallInfo.h, llvm/include/llvm/IR RuntimeLibcalls.h

RuntimeLibcalls: Read exception model from the module flag

Source the exception model in the RuntimeLibcallsInfo(Module) constructor
from the "exception-model" module flag via Module::getExceptionModel(),
instead of forwarding it from TargetOptions. An absent flag resolves to
Default and then to the triple default; an explicit "none" disables
exceptions.

Since the model now comes from the module, drop the ExceptionModel that
RuntimeLibraryAnalysis carried and forwarded, and its argument at every
construction site.

To keep the -exception-model= command-line option working for llc and opt
synthesize the "exception-model" module flag from the option as is done for
"float-abi".

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+20-0llvm/lib/CodeGen/CommandFlags.cpp
+7-7llvm/include/llvm/IR/RuntimeLibcalls.h
+3-7llvm/include/llvm/Analysis/RuntimeLibcallInfo.h
+3-5llvm/lib/IR/RuntimeLibcalls.cpp
+4-4llvm/lib/Analysis/RuntimeLibcallInfo.cpp
+2-2llvm/tools/opt/optdriver.cpp
+39-257 files not shown
+47-3813 files

LLVM/project 4adb36ecompiler-rt/lib/sanitizer_common sanitizer_offload.cpp, compiler-rt/lib/ubsan/offload ubsan_offload_hsa.cpp

Rebase, address comments

Created using spr 1.3.7
DeltaFile
+815-0llvm/test/Transforms/PhaseOrdering/ARM/arm_mat_mult_q31.ll
+616-0llvm/lib/Support/APFloatPowerOfFiveTable.inc
+405-0llvm/test/Transforms/LoopVectorize/select-branch-weights.ll
+214-182flang/test/Lower/split-sum-expression-tree-lowering.f90
+0-368compiler-rt/lib/ubsan/offload/ubsan_offload_hsa.cpp
+348-0compiler-rt/lib/sanitizer_common/sanitizer_offload.cpp
+2,398-550454 files not shown
+14,252-4,301460 files

LLVM/project 0447d79llvm/lib/Target/RISCV RISCVPromoteConstant.cpp

[RISCV] Don't construct a subtarget for function declarations in RISCVPromoteConstant. (#224115)

Intrinsic declarations in particular don't have a target-features
attribute so the subtarget constructor may print warning like:

hard-float 'd' ABI can't be used for a target that doesn't support the D
instruction set extension

This can occur in LTO builds in -mcpu is not passed to the clang driver
on the LTO step. The target-machine won't have any CPU features.
DeltaFile
+2-0llvm/lib/Target/RISCV/RISCVPromoteConstant.cpp
+2-01 files

LLVM/project 2ee0804clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp

[CIR] Add cir.ptr_mask

`cir.ptr_mask` ANDs a pointer with an integer mask and gives back a
pointer, lowering to llvm.intr.ptrmask.  Paired with `cir.ptr_stride` it
rounds a pointer up to an alignment the way classic's
emitRoundPointerUpToAlignment does, without the round trip through an
integer that would lose provenance.

llvm.ptrmask needs the mask at exactly the target's pointer index width,
so the lowering extends or truncates it first.  GEP takes an index of
any width, so `cir.ptr_stride` never needed this.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+105-0clang/test/CIR/Lowering/ptr-mask.cir
+36-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+35-0clang/test/CIR/IR/ptr-mask.cir
+28-0clang/test/CIR/IR/invalid-ptr-mask.cir
+21-0clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+225-05 files

LLVM/project e1fb24allvm/include/llvm/CodeGen SlotIndexes.h, llvm/lib/CodeGen SlotIndexes.cpp RegAllocGreedy.cpp

[CodeGen] Size live ranges in real instructions

Slot indexes keep counting instructions that earlier passes erased,
because erasing one only clears the pointer in its index list entry.
The leftovers are not spread evenly, so they inflate some live ranges
more than others and reorder greedy's priority queue, spilling heavily
on register-starved functions.

Add SlotIndexes::getRealInstrSpan(), counting only entries that still
have an instruction, and use it for the size getPriority ranks by.
Off by default behind -greedy-size-in-real-instrs.
DeltaFile
+119-0llvm/unittests/CodeGen/SlotIndexesTest.cpp
+21-1llvm/lib/CodeGen/RegAllocGreedy.cpp
+15-0llvm/lib/CodeGen/SlotIndexes.cpp
+6-0llvm/include/llvm/CodeGen/SlotIndexes.h
+1-0llvm/unittests/CodeGen/CMakeLists.txt
+162-15 files

LLVM/project 325e759llvm/lib/Target/RISCV RISCVInstrInfo.td, llvm/lib/Target/RISCV/AsmParser RISCVAsmParser.cpp

[RISCV] Use template PredicateMethod for ImmAsmOperand when suffix is empty. NFC (#224098)

This allows us to remove forwarding wrappers from RISCVAsmParser.cpp.

Assisted-by: Claude
DeltaFile
+1-27llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+3-1llvm/lib/Target/RISCV/RISCVInstrInfo.td
+4-282 files

LLVM/project 205baf1llvm/test/Transforms/SLPVectorizer/X86 bool-mask.ll

[SLP][NFC]Add extra test for bit mask reductions, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/224135
DeltaFile
+206-2llvm/test/Transforms/SLPVectorizer/X86/bool-mask.ll
+206-21 files

LLVM/project e13d9cblldb/test/Shell/SymbolFile/NativePDB unknown-udt-decl.ll rust-unique-name.ll

lldb: Require x86_64 for x86_64-specific NativePDB tests

These tests contained x86_64 datalayout and triples, but only
required system-windows. On an aarch64 windows host, %build will
be an incompatible datalayout, so require exactly x86_64 windows
hosts. Alternatively the test could be changed to not have the
datalayout, but I'm not sure if that's correct here.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+1-1lldb/test/Shell/SymbolFile/NativePDB/unknown-udt-decl.ll
+1-1lldb/test/Shell/SymbolFile/NativePDB/rust-unique-name.ll
+2-22 files

LLVM/project 0038be8mlir/lib/Conversion/ConvertToEmitC ConvertToEmitCPass.cpp

[MLIR] Wrap block with debug-only loop in LLVM_DEBUG (NFC). (#224124)

This fixes a build-failure with Werror in release builds introduced in
https://github.com/llvm/llvm-project/pull/223974. `iface` is unused in
release builds. Wrap the whole block into `LLVM_DEBUG`

PR: https://github.com/llvm/llvm-project/pull/224124
DeltaFile
+8-6mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp
+8-61 files

LLVM/project 16fa456utils/bazel/llvm-project-overlay/libc/startup/linux BUILD.bazel

[bazel] Port 2c930a5 (#224130)
DeltaFile
+1-0utils/bazel/llvm-project-overlay/libc/startup/linux/BUILD.bazel
+1-01 files

LLVM/project c1ad400clang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp, clang/test/CIR/CodeGen call-conv-lowering-x86_64-non-byval.cpp call-conv-lowering-x86_64-union-no-span.cpp

[CIR] Accept a union whose members do not cover its declared size (#223594)

`union { unsigned Words[3]; void *Ptr; }` is 16 bytes because the
pointer's alignment rounds it up, and no member covers that size. The
pass refused to classify unions like that at all, so anything holding
one failed to compile. Tail padding doesn't change how an eightbyte
classifies, so this drops the precondition and classifies the union from
its own size.
DeltaFile
+46-132clang/test/CIR/Transforms/abi-lowering/x86_64-aggregate-nyi.cir
+162-0clang/test/CIR/CodeGen/call-conv-lowering-x86_64-union-tail-padding.c
+152-0clang/test/CIR/CodeGen/call-conv-lowering-x86_64-union-no-span.cpp
+65-59clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+41-0clang/test/CIR/Transforms/abi-lowering/x86_64-union.cir
+24-0clang/test/CIR/CodeGen/call-conv-lowering-x86_64-non-byval.cpp
+490-1913 files not shown
+507-2059 files

LLVM/project 2558e6d.ci compute_projects_test.py compute_projects.py

[CI] Make updates to .ci actually test everything (#224125)

We ran into an issue where test failures in cross-project-tests were not
surfaced when bumping the image to Ubuntu 26.04 due to the script not
correctly calculating dependencies for changes to .ci and the premerge
workflow. This patch fixes that by ensuring the projects executed for
.ci/workflow changes are derived from everything else which means we do
not need to manually maintain the list and risk leaving it out of date.
DeltaFile
+53-55.ci/compute_projects.py
+7-7.ci/compute_projects_test.py
+60-622 files

LLVM/project 952d860llvm/lib/CAS MappedFileRegionArena.cpp

[CAS] Read a CAS file's reserved size from st_blocks, not st_blksize (#224104)

FileSizeInfo reports how much disk a file already has, which
MappedFileRegionArena records so it knows how far ahead it has reserved.
However the file size was accidentally computed from st_blksize which is
the preferred I/O size, not the number of allocated blocks for the file.

The value is read when a database is created or reopened, so a reopened
database believed almost none of its disk was reserved and reserved it
again from near zero, a megabyte per allocation. Fix the problem by
using the correct size.
DeltaFile
+1-1llvm/lib/CAS/MappedFileRegionArena.cpp
+1-11 files

LLVM/project 3cda174clang/test/CodeGen thread-model.c, llvm/lib/Target/WebAssembly WebAssemblyCoalesceFeaturesAndStripAtomics.cpp

[WebAssembly] Use Single as the default Triple thread model (#223917)

Clang defaults WebAssembly to a single-threaded model unless atomics and
bulk-memory are enabled, whereas Triple::getDefaultThreadModel()
previously defaulted to POSIX for all targets. Because Clang only emits
the "thread-model" module flag when the active thread model differs from
the triple's default, single-threaded Wasm objects recorded
"thread-model"="single" while multithreaded objects omitted the flag.
When linking mixed objects in LTO, the merged module inherited "single",
causing passes like LICM and AtomicExpand to treat multithreaded
programs as single-threaded.

Change Triple::getDefaultThreadModel() to return ThreadModel::Single for
WebAssembly so that multithreaded objects explicitly record
"thread-model"= "posix" and single-threaded objects omit the flag.
Additionally, update WebAssemblyCoalesceFeaturesAndStripAtomics to set
the module thread model to POSIX when threading features are enabled and
no explicit module flag is present, ensuring backend passes like
AtomicExpandPass preserve atomics in raw IR modules compiled via llc.

Assisted-By: Gemini
DeltaFile
+44-0llvm/test/CodeGen/WebAssembly/coalesce-features-thread-model.ll
+9-1llvm/lib/Target/WebAssembly/WebAssemblyCoalesceFeaturesAndStripAtomics.cpp
+8-0clang/test/CodeGen/thread-model.c
+5-1llvm/lib/TargetParser/Triple.cpp
+66-24 files

LLVM/project 29b702ecompiler-rt/lib/scudo/standalone secondary.h, compiler-rt/lib/scudo/standalone/tests secondary_test.cpp

[scudo] Do not trim the secondary cache if releasing is disabled. (#223881)

When the ReleaseInterval is set to less than zero, then releasing has
been disabled. In this case, honor this and do not trim the cache using
the MaxCacheResidentyBytes value.

Add a test to verify this behavior.
DeltaFile
+36-4compiler-rt/lib/scudo/standalone/tests/secondary_test.cpp
+7-1compiler-rt/lib/scudo/standalone/secondary.h
+43-52 files