LLVM/project a9407d5 — libcxx/include/__ostream print.h

[libc++] Port #200996 to ostream (#226372)

Reduces the time to compile a TU with just `#include <ostream>` from
254.7 ms ± 3.0 ms to 227.7 ms ± 2.1 ms on my system (-std=c++23, -O2,
arm64 macOS).

See #195466 for details. Without this, the call is evaluated when the
template is parsed, which evaluates format_string's consteval
constructor for "\n" in every translation unit that includes <ostream>,
even if nothing calls println().

No behavior change.
DeltaFile
+2-2libcxx/include/__ostream/print.h
+2-21 files

LLVM/project 6b51046 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 narrowed-reduction-gathered-leftover-leaf.ll

[SLP]Fix erasing gathered leftover narrowed reduction leaves

A leftover narrowed reduction leaf, only gathered in the tree, loses all
users once the tree scalars are erased and is swept as a dead operand,
though the reduction epilogue still uses it. Keep such values alive.

Fixes https://github.com/llvm/llvm-project/pull/224919#issuecomment-5855368565

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/226782
DeltaFile
+106-0llvm/test/Transforms/SLPVectorizer/X86/narrowed-reduction-gathered-leftover-leaf.ll
+16-6llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+122-62 files

LLVM/project 68fddbb — llvm/lib/CodeGen/SelectionDAG LegalizeTypes.h LegalizeVectorTypes.cpp, llvm/test/CodeGen/AArch64 lowmaskedlanes.ll

[DAG] Scalarise trivial splat operations (#226257)

This fixes an issue reported on #224255, where a single active lane
masked store is converted to a v1f16 extract_subvector, which becomes a
v1f16 splat, which fails to scalarize. Add the necessary trivial
scalarisation of the splat by using the f16 input operand.

(I was originally going to fix this by generating a scalar f16 extract
directly (which would have the benefit of treating f16 as legal), but
that seems to cause a regression in 2 x86 tests).
DeltaFile
+11-0llvm/test/CodeGen/AArch64/lowmaskedlanes.ll
+6-3llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+1-1llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
+18-43 files

LLVM/project 57630fd — clang/test/CodeGen/AArch64/sve addv.c, clang/test/CodeGen/AArch64/sve-intrinsics acle_sve_addv.c

[clang][CIR] Add tests for SVE ADDV intrinsics (#225648)

This adds CIR tests for `svaddv` (plain SVE) intrinsics following the
task description in
[223963](https://github.com/llvm/llvm-project/issues/223963).

Moves and adapts `sve-intrinsics/acle_sve_addv.c` to `sve/addv.c`.
DeltaFile
+0-206clang/test/CodeGen/AArch64/sve-intrinsics/acle_sve_addv.c
+205-0clang/test/CodeGen/AArch64/sve/addv.c
+205-2062 files

LLVM/project 6909c17 — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination analysis-invalidation.ll

[ConstraintElim] Don't request SCEV if there are no loops. (NFC) (#226736)

ConstraintElimination only uses SCEV when there are any loops. Don't
request the analysis if there are no loops.

This reduces compile-time a bit (more for workloads with large number of
functions w/o loops):

stage1-O3: -0.03%
stage1-ReleaseThinLTO: -0.04%
stage1-ReleaseLTO-g: -0.02%
stage1-aarch64-O3: -0.03%
stage2-O3: -0.04%
stage2-clang: -0.09%


https://llvm-compile-time-tracker.com/compare.php?from=899d817c7950c997402cd229935cd822acf45b08&to=c4453240417d8705b0752c3feda8d02365f8175c&stat=instructions:u

PR: https://github.com/llvm/llvm-project/pull/226736
DeltaFile
+13-11llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+3-6llvm/test/Transforms/ConstraintElimination/analysis-invalidation.ll
+16-172 files

LLVM/project 719341a — llvm/include/llvm/Analysis TargetTransformInfoImpl.h TargetTransformInfo.h, llvm/include/llvm/CodeGen BasicTTIImpl.h

[TTI] Provide conservative legality + costs for @llvm.speculative.load. (#180036)

Add TTI support for @llvm.speculative.load, including cost and legaltiy
checking support.

The initial implementation for AArch64 checks if the loaded type is
<= 16 bytes, and only considers such cases legal due to MTE.

PR: 
https://github.com/llvm/llvm-project/pull/180036


Depends on https://github.com/llvm/llvm-project/pull/179642
DeltaFile
+40-30llvm/test/Analysis/CostModel/AArch64/speculative-load.ll
+12-0llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+11-0llvm/include/llvm/CodeGen/BasicTTIImpl.h
+5-5llvm/test/Analysis/CostModel/X86/speculative-load.ll
+6-0llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
+6-0llvm/include/llvm/Analysis/TargetTransformInfo.h
+80-352 files not shown
+88-358 files

LLVM/project dfde6ac — clang-tools-extra/clang-tidy/bugprone RedundantBranchConditionCheck.cpp, clang-tools-extra/docs ReleaseNotes.md

[clang-tidy] Fix redundant-branch-condition false positive in loops (#225827)

Fixes #205685.

`bugprone-redundant-branch-condition` decides whether the condition
variable changes between the outer and inner `if` by comparing source
positions. When a loop sits between the two, a mutation that comes after
the inner `if` in the source still runs before the inner condition is
evaluated again on the next iteration, so the check reports a redundant
condition that isn't, and the fix-it changes behavior.

The fix walks the parents of the inner `if` up to the outer `if` and
finds the outermost enclosing loop. If the variable is mutated anywhere
in that loop, the check does not warn. This follows NagyDonat's
suggestion in the issue: the existing check already covers mutations
between the outer condition and the loop, so only the loop itself needs
the extra query. The walk passes through declarations, so an inner `if`
inside a lambda stored in a variable is handled too, and it stops at the
enclosing function. I chose a syntactic walk instead of the CFG

    [21 lines not shown]
DeltaFile
+164-0clang-tools-extra/test/clang-tidy/checkers/bugprone/redundant-branch-condition.cpp
+34-0clang-tools-extra/clang-tidy/bugprone/RedundantBranchConditionCheck.cpp
+5-0clang-tools-extra/docs/ReleaseNotes.md
+203-03 files

LLVM/project 80b46c9 — clang/test/CIR/CodeGenBuiltins builtin-nondeterministic-value.c

[CIR][NFC] Add vector of boolean test to __builtin_nondeterministic_value (#219550)

Assisted-by: grok-4.6
Signed-off-by: Letu Ren <fantasquex at gmail.com>
DeltaFile
+13-5clang/test/CIR/CodeGenBuiltins/builtin-nondeterministic-value.c
+13-51 files

LLVM/project 9bf0c49 — orc-rt/include/orc-rt/bedrock ConnectorRegistry.h, orc-rt/lib/bedrock ConnectorRegistry.cpp

[orc-rt] Simplify ConnectorRegistry::connect and ogre setup. (#226772)

ConnectorRegistry::connect and ConnectorFn now take the Session and
BootstrapInfo directly, replacing the GetAttachInfo callback and the
AttachInfo struct. The callback let the Session be built lazily, after
the connector had validated its spec, but a connection can fail after
validation anyway, so callers already had to handle discarding a Session
built for a failed connection. Build the Session first, then connect.

ogre's setup is restructured to match: makeSession detects the process
info, builds a thread-pool dispatcher and the Session, adds the host
services, then connects; runOgre waits for the detach. Errors are
reported via Session::logErrors when logging is enabled.

SocketConnectorTest now connects a real Session. Its ownership test
adopts a non-stream socket, which the connector accepts and
createSimpleRemoteCAOverSocket then rejects, rather than relying on a
failing GetAttachInfo.
DeltaFile
+60-48orc-rt/tools/ogre/ogre.cpp
+18-22orc-rt/test/unit/bedrock/sys/posix/SocketConnectorTest.cpp
+5-13orc-rt/include/orc-rt/bedrock/ConnectorRegistry.h
+4-8orc-rt/lib/bedrock/sys/posix/SocketConnector.cpp
+3-7orc-rt/lib/bedrock/ConnectorRegistry.cpp
+90-985 files

LLVM/project 689040c — llvm/include/llvm/CodeGen TargetLoweringObjectFileImpl.h, llvm/lib/CodeGen TargetLoweringObjectFileImpl.cpp

CodeGen: Remove shadowing TargetMachine members from COFF and M68k TLOFs (#226769)

TargetLoweringObjectFile::Initialize already records the TargetMachine
in a base class field.

Co-authored-by: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+0-3llvm/lib/Target/M68k/M68kTargetObjectFile.cpp
+0-2llvm/lib/Target/M68k/M68kTargetObjectFile.h
+0-1llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+0-1llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
+0-74 files

LLVM/project e9072bd — llvm/include/llvm/TargetParser Triple.h, llvm/lib/Target/ARM ARMTargetMachine.cpp

ARM: Move abi name implied float abi to TargetParser

ARMTargetMachine overrode the default float abi based on the abi name.
Move this logic to TargetParser so the ABI will be computable without
depending on codegen.

Co-Authored-By: Claude Sonnet 5 <noreply at anthropic.com>
DeltaFile
+6-4llvm/lib/TargetParser/Triple.cpp
+1-8llvm/lib/Target/ARM/ARMTargetMachine.cpp
+4-2llvm/include/llvm/TargetParser/Triple.h
+11-143 files

LLVM/project 42240ff — llvm/include/llvm/CodeGen TargetLoweringObjectFileImpl.h, llvm/lib/CodeGen TargetLoweringObjectFileImpl.cpp

CodeGen: Remove shadowing TargetMachine members from COFF and M68k TLOFs

TargetLoweringObjectFile::Initialize already records the TargetMachine in a
base class field.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+0-3llvm/lib/Target/M68k/M68kTargetObjectFile.cpp
+0-2llvm/lib/Target/M68k/M68kTargetObjectFile.h
+0-1llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+0-1llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
+0-74 files

LLVM/project 144fc4b — llvm/include/llvm/IR Constant.h, llvm/lib/IR Constants.cpp

fixup! [ValueTracking] Support Array and Structure in contains* check
DeltaFile
+14-10llvm/include/llvm/IR/Constant.h
+1-1llvm/lib/IR/Constants.cpp
+15-112 files

LLVM/project 396de6b — clang/cmake/modules ClangConfig.cmake.in CMakeLists.txt

[CMake] Link MLIR if CLANG_ENABLE_CIR

CIR requires MLIR to build. However, MLIR doesn't have a separate
config file; it dependencies are checked by ClangTarget.cmake without
linking the MLIR library. Link against MLIR in ClangCOnfig.cmake when
CIR is enabled.
DeltaFile
+19-0clang/cmake/modules/CMakeLists.txt
+2-0clang/cmake/modules/ClangConfig.cmake.in
+21-02 files

LLVM/project 57721b7 — orc-rt/include CMakeLists.txt, orc-rt/include/orc-rt-c config.h.in

[orc-rt] Move ORC_RT_LOG_ENABLED out of config.h; catch typos. (#226751)

Move ORC_RT_LOG_ENABLED to orc-rt-c/support/LogLevel.h so that config.h
is kept for build options only.

Switch to using function-like macros so that typos in level-names become
compilation errors.
DeltaFile
+37-0orc-rt/include/orc-rt-c/support/LogLevel.h
+0-32orc-rt/include/orc-rt-c/config.h.in
+2-1orc-rt/include/orc-rt-c/support/Logging.h
+1-0orc-rt/include/orc-rt/bedrock/Session.h
+1-0orc-rt/include/CMakeLists.txt
+41-335 files

LLVM/project 220b5f5 — clang/test/SemaCXX new-nothrow-by-value.cpp

fixup! [Clang][ExprConst] Accept prvalue for nothrow new
DeltaFile
+2-2clang/test/SemaCXX/new-nothrow-by-value.cpp
+2-21 files

LLVM/project c514037 — clang/test/SemaCXX new-nothrow-by-value.cpp

fixup! [Clang][ExprConst] Accept prvalue for nothrow new
DeltaFile
+1-0clang/test/SemaCXX/new-nothrow-by-value.cpp
+1-01 files

LLVM/project a7bae76 — clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp, clang/test/CIR/Lowering unlowered-address-spaces.cir

[CIR] Reject language address spaces in DirectToLLVM pointer conversion

Reject unlowered language address spaces in pointer types when bypassing TargetLowering. Guard pointer-producing lowerings, including generated patterns, so failed conversions report legalization failures instead of silently selecting address space zero or constructing invalid LLVM operations.

Assisted-by: Codex / GPT-6
DeltaFile
+545-0clang/test/CIR/Lowering/unlowered-address-spaces.cir
+64-0clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+2-0clang/utils/TableGen/CIRLoweringEmitter.cpp
+611-03 files

LLVM/project ff0e4e8 — clang/include/clang/CIR LoweringHelpers.h, clang/include/clang/CIR/Dialect/IR CIROps.td

[CIR] Propagate initializer type adjustment failures

Reject initializers whose active members have no LLVM representation, including when an enclosing union's storage type is convertible. Propagate recursive adjustment failures before querying data layout or constructing LLVM operations.

Assisted-by: Codex / GPT-6
DeltaFile
+66-0clang/test/CIR/Lowering/unsupported-initializer-types.cir
+13-2clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+12-0clang/lib/CIR/Lowering/LoweringHelpers.cpp
+2-1clang/include/clang/CIR/LoweringHelpers.h
+1-1clang/include/clang/CIR/Dialect/IR/CIROps.td
+94-45 files

LLVM/project 9a0bb94 — clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.h LowerToLLVM.cpp, clang/test/CIR/Lowering unsupported-type-conversions.cir

[CIR] Propagate type conversion failures in DirectToLLVM

Propagate failed type and constant conversions through DirectToLLVM so unsupported types produce legalization failures instead of invalid LLVM operations or a void function result.

Assisted-by: Codex / GPT-6
DeltaFile
+178-0clang/test/CIR/Lowering/unsupported-type-conversions.cir
+49-13clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+4-3clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.h
+231-163 files

LLVM/project 126dbd9 — clang/test/CodeGen/RISCV lto-module-asm-abi.c

[Clang][RISC-V] Fix lto-module-asm-abi.c on non-asserts/no-lld builds (#226752)

Pass `-fno-discard-value-names` so the `entry:` label is preserved in
non-asserts builds, and drop `-fuse-ld=lld` so the driver check succeeds
on bots that do not have `ld.lld` installed.

Fixes: bf529329b5ce ("[RISC-V][LTO] Add baseline tests for LTO inline assembly and mapping symbols (#225129)")
Pull-Request: https://github.com/llvm/llvm-project/pull/226752
DeltaFile
+3-3clang/test/CodeGen/RISCV/lto-module-asm-abi.c
+3-31 files

LLVM/project dbea9bd — bolt/docs conf.py

[docs][bolt] Remove Markdown enum (#226411)

Remove use of Markdown enum from the bolt docs. Related to #223829.

This should fix our ATfL build
[failure](https://github.com/arm/arm-toolchain/actions/runs/36103090912/job/107969633028#step:7:22533)
```
Traceback (most recent call last):
  File "/workspace/python/.venv/lib/python3.12/site-packages/sphinx/config.py", line 529, in eval_config_file
    exec(code, namespace)  # NoQA: S102
    ^^^^^^^^^^^^^^^^^^^^^
  File "/workspace/src/bolt/docs/conf.py", line 18, in <module>
    globals().update(common_conf(tags, markdown=Markdown.NEVER))
                                                ^^^^^^^^
NameError: name 'Markdown' is not defined
```
DeltaFile
+1-1bolt/docs/conf.py
+1-11 files

LLVM/project 4c85cbe — clang/docs SafeBuffers.md LanguageExtensions.md, clang/docs/analyzer checkers.md

[docs] Replace clang.llvm.org/docs links with Sphinx links (#222507)

Use Sphinx document and option roles or project-relative links for links
within the Clang documentation. Repair stale generated-document
fragments found while validating the replacements. This ensures that
standalone documentation builds are self-contained, although
cross-project links (Clang->LLVM) typically go via absolute llvm.org
hrefs.

Part of #214861

Assisted-by: Codex
DeltaFile
+6-6clang/docs/LifetimeSafety.md
+5-5clang/docs/LanguageExtensions.md
+4-4clang/docs/analyzer/checkers.md
+3-4clang/docs/SafeBuffers.md
+3-3clang/docs/analyzer/user-docs/Annotations.md
+5-0utils/docs/llvm_sphinx/ext/absolute_links_test/markdown.md
+26-2215 files not shown
+46-4121 files

LLVM/project ef60af8 — clang/test/SemaCXX new-nothrow-by-value.cpp

fixup! [Clang][ExprConst] Accept prvalue for nothrow new
DeltaFile
+1-0clang/test/SemaCXX/new-nothrow-by-value.cpp
+1-01 files

LLVM/project 991285a — llvm/test/CodeGen/AMDGPU bitinsert-bitextract.ll, llvm/test/CodeGen/ARM bitinsert-bitextract-fp.ll bitinsert-bitextract.ll

Merge branch 'main' into users/aokblast/clang/nothrow_new_prvalue
DeltaFile
+6,086-6,026llvm/test/CodeGen/RISCV/rvv/expandload.ll
+4,294-0llvm/test/CodeGen/RISCV/bitinsert-bitextract.ll
+3,321-0llvm/test/CodeGen/ARM/bitinsert-bitextract.ll
+1,989-0llvm/test/CodeGen/RISCV/bitinsert-bitextract-fp.ll
+1,976-0llvm/test/CodeGen/AMDGPU/bitinsert-bitextract.ll
+1,552-0llvm/test/CodeGen/ARM/bitinsert-bitextract-fp.ll
+19,218-6,0261,125 files not shown
+55,449-20,1781,131 files

LLVM/project 50f8025 — clang/include/clang/AST APValue.h, clang/lib/AST ExprConstant.cpp

[clang][AST] Mark APValue as LLVM_ATTRIBUTE_WARN_UNUSED (#226632)
DeltaFile
+1-2clang/lib/AST/ExprConstant.cpp
+2-1clang/include/clang/AST/APValue.h
+3-32 files

LLVM/project b3b1a5f — llvm/lib/Target/AMDGPU/AsmParser AMDGPUAsmParser.cpp, llvm/test/MC/AMDGPU reloc-operands-vopd.s

[AMDGPU][MC] Fixed an issue where VOPD instruction doesn't accept a relocatable symbol

Fixes LCOMPILER-2797.
DeltaFile
+21-0llvm/test/MC/AMDGPU/reloc-operands-vopd.s
+8-2llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+29-22 files

LLVM/project ff5453f — clang/lib/AST ExprConstant.cpp, clang/test/SemaCXX new-nothrow-by-value.cpp

[Clang][ExprConst] Accept prvalue for nothrow new

A user defined operator new can accept prvalue for nothrow. There is
no guarantee in spec that it should be lvalue. Relax the check with
side effect only.
DeltaFile
+18-0clang/test/SemaCXX/new-nothrow-by-value.cpp
+5-2clang/lib/AST/ExprConstant.cpp
+23-22 files

LLVM/project 0905c19 — clang/test/CodeGen/RISCV lto-module-asm-abi.c

[Clang][RISC-V] Fix lto-module-asm-abi.c on non-asserts/no-lld builds

Pass `-fno-discard-value-names` so the `entry:` label is preserved in
non-asserts builds, and drop `-fuse-ld=lld` so the driver check succeeds
on bots that do not have `ld.lld` installed.

Fixes: bf529329b5ce ("[RISC-V][LTO] Add baseline tests for LTO inline assembly and mapping symbols (#225129)")
DeltaFile
+3-3clang/test/CodeGen/RISCV/lto-module-asm-abi.c
+3-31 files

LLVM/project 32ee4f7 — llvm/include/llvm/CodeGen SDPatternMatch.h

[SDPatternMatch] Simplify EffectiveOperands and drop the template specialization. NFC (#226036)

The chain and glue operands are in fixed locations, we don't need a loop
to find them.

Use the template parameter to skip the constructor body instead of using
template specialization.
DeltaFile
+9-18llvm/include/llvm/CodeGen/SDPatternMatch.h
+9-181 files