LLVM/project ee4bb2cllvm/test/Transforms/LoopVectorize predicator.ll, llvm/test/Transforms/LoopVectorize/VPlan predicator.ll

[LV] Add more tests for blend masks. NFC (#186751)

To be used in #184838
DeltaFile
+254-0llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+236-0llvm/test/Transforms/LoopVectorize/predicator.ll
+490-02 files

LLVM/project 87f1a2bclang/lib/Sema SemaDecl.cpp, clang/test/Modules pr170099.cppm

[C++20] [Modules] Don't add discardable variables to module initializers (#186752)

Close https://github.com/llvm/llvm-project/issues/170099

The root cause of the problem is, we shouldn't add the inline variable
(which is discardable in linker's point of view) to the module's
initializers.

I verified with GCC's generated code to make the behavior consistent.

This is also a small optimization by the way.
DeltaFile
+20-0clang/test/Modules/pr170099.cppm
+4-1clang/lib/Sema/SemaDecl.cpp
+24-12 files

LLVM/project 5272633mlir/include/mlir/Dialect/Arith/Utils Utils.h, mlir/lib/Dialect/Arith/Transforms EmulateUnsupportedFloats.cpp

[mlir][arith] Use type parser instead of hard-coding type keywords
DeltaFile
+6-21mlir/lib/Dialect/Arith/Utils/Utils.cpp
+6-8mlir/lib/Dialect/Arith/Transforms/EmulateUnsupportedFloats.cpp
+5-8mlir/lib/Dialect/Math/Transforms/ExtendToSupportedTypes.cpp
+3-2mlir/include/mlir/Dialect/Arith/Utils/Utils.h
+1-0mlir/lib/Dialect/Arith/Utils/CMakeLists.txt
+21-395 files

LLVM/project f894e8ellvm/lib/Target/ARM ARMISelLowering.cpp, llvm/test/CodeGen/ARM hoist-and-by-const-from-lshr-in-eqcmp-zero.ll hoist-and-by-const-from-shl-in-eqcmp-zero.ll

[ARM] Try to lower sign bit SELECT_CC to shift (#186349)

Lower a `x < 0 ? 1 : 0` style SELECT_CC to `x>>(bw-1)`. This will become
more important with an upcoming change, but also appears to be somewhat
useful by itself.
DeltaFile
+45-46llvm/test/CodeGen/Thumb/smul_fix_sat.ll
+30-30llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll
+8-41llvm/test/CodeGen/ARM/hoist-and-by-const-from-lshr-in-eqcmp-zero.ll
+6-21llvm/test/CodeGen/ARM/hoist-and-by-const-from-shl-in-eqcmp-zero.ll
+6-0llvm/lib/Target/ARM/ARMISelLowering.cpp
+95-1385 files

LLVM/project d8386dbllvm/lib/CodeGen CommandFlags.cpp

[CodeGen] Call getMCPU once instead of commonly twice (NFC) (#186581)
DeltaFile
+4-2llvm/lib/CodeGen/CommandFlags.cpp
+4-21 files

LLVM/project 3fadb15clang/lib/Basic/Targets X86.cpp, clang/test/Driver cl-x86-flags.c

[X86][APX] Combine MOVABS+JMP to JMPABS when in no-PIC large code model (#186402)
DeltaFile
+18-5llvm/test/CodeGen/X86/tailcc-largecode.ll
+10-3llvm/lib/Target/X86/X86MCInstLower.cpp
+5-4llvm/lib/TargetParser/X86TargetParser.cpp
+4-4clang/test/Driver/cl-x86-flags.c
+8-0llvm/lib/Target/X86/X86InstrCompiler.td
+7-1clang/lib/Basic/Targets/X86.cpp
+52-1711 files not shown
+79-2717 files

LLVM/project 513f34aclang-tools-extra/clang-tidy/readability ImplicitBoolConversionCheck.cpp, clang-tools-extra/docs ReleaseNotes.rst

[clang-tidy] Fix an edge case in readability-implicit-bool-conversion (#186234)

Fix a FP for condition expressions wrapped by `ExprWithCleanups`.

Co-authored-by: EugeneZelenko <eugene.zelenko at gmail.com>
Co-authored-by: Zeyi Xu <zeyi2 at nekoarch.cc>
DeltaFile
+8-0clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion-allow-in-conditions.cpp
+7-0clang-tools-extra/docs/ReleaseNotes.rst
+1-1clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
+16-13 files

LLVM/project dfd5b85mlir/include/mlir/Dialect/Linalg/TransformOps LinalgTransformOps.td, mlir/include/mlir/Dialect/Linalg/Transforms Transforms.h

[mlir][linalg] Use inferConvolutionDims for generic convolution downscaling (#180586)

The goal of this PR is to implement a generic, structure-aware
convolution downscaling transformation that works for any
convolution-like operation regardless of its specific layout or naming,
rather than relying on pattern-matching against specific named
operations.

Each pattern we currently have, have hardcoded dimension indices
specific to its layout (e.g., NHWC vs NCHW).
This approach :-
1. Requires maintaining many similar patterns.
2. Is brittle when new layouts are introduced.
3. Cannot handle batchless versions of the conv variants.

This PR thus creates a single downscaleSizeOneWindowedConvolution
function that uses `inferConvolutionDims` to semantically understand the
convolution structure (batch dims, output image dims, filter loop dims,
etc.) rather than hardcoding indices.

    [8 lines not shown]
DeltaFile
+184-260mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
+161-5mlir/test/Dialect/Linalg/transform-op-decompose.mlir
+10-51mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
+5-25mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
+7-3mlir/include/mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.td
+367-3445 files

LLVM/project 9b54420clang/include/clang/AST ASTNodeTraverser.h, clang/lib/AST TextNodeDumper.cpp

[Clang] Dump noexcept expression in compound requirement AST dumps

When a compound requirement has a noexcept(expr) specification, the
expression is now visited as a child node in AST dumps. The text dumper
also shows "noexcept(expr)" instead of just "noexcept" to indicate the
presence of the expression.
DeltaFile
+14-0clang/test/AST/ast-dump-concepts.cpp
+4-1clang/lib/AST/TextNodeDumper.cpp
+3-0clang/include/clang/AST/ASTNodeTraverser.h
+21-13 files

LLVM/project e55e21cclang/include/clang/AST RecursiveASTVisitor.h, clang/test/CXX/expr/expr.prim/expr.prim.req compound-requirement.cpp

Fix noexcept requirement not being checked when concept is used in another concept

The RecursiveASTVisitor was not traversing the noexcept expression in
compound requirements, causing template parameters used only in noexcept
expressions to be missed during constraint normalization.

This resulted in concepts with dependent noexcept requirements (like
noexcept(noexc) where noexc is a template parameter) not being properly
evaluated when the concept was used inside another concept definition.

Fix by adding traversal of getNoexceptExpr() in
TraverseConceptExprRequirement.

Test: Uncommented and verified the test case in compound-requirement.cpp
that was previously commented out because it didn't work.
DeltaFile
+4-4clang/test/CXX/expr/expr.prim/expr.prim.req/compound-requirement.cpp
+2-0clang/include/clang/AST/RecursiveASTVisitor.h
+6-42 files

LLVM/project 7a89035llvm/include/llvm/CodeGen ISDOpcodes.h, llvm/lib/CodeGen/SelectionDAG LegalizeIntegerTypes.cpp SelectionDAGBuilder.cpp

[SelectionDAG] Add CTTZ_ELTS[_ZERO_POISON] nodes. NFCI (#185600)

Currently llvm.experimental.cttz.elts are directly lowered from the
intrinsic.

If the type isn't legal then the target tells SelectionDAGBuilder to
expand it into a reduction, but this means we can't split the operation.
E.g. it's possible to split a cttz.elts nxv32i1 into two nxv16i1,
instead of expanding it into a nxv32i64 reduction.

vp.cttz.elts can be split because it has a dedicated SelectionDAG node.

This adds CTTZ_ELTS and CTTZ_ELTS[_ZERO_POISON] nodes and just enough
legalization to get tests passing. A follow up patch will add splitting
and move the expansion into LegalizeDAG.
DeltaFile
+25-19llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+25-8llvm/test/CodeGen/RISCV/rvv/cttz-elts.ll
+16-13llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+21-0llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
+7-4llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+7-0llvm/include/llvm/CodeGen/ISDOpcodes.h
+101-444 files not shown
+113-4410 files

LLVM/project 54321bcclang/lib/AST ItaniumMangle.cpp, clang/test/CodeGenCXX mangle-requires.cpp

Add mangling support for noexcept(expr) in compound requirements
DeltaFile
+21-4libcxxabi/src/demangle/ItaniumDemangle.h
+21-4llvm/include/llvm/Demangle/ItaniumDemangle.h
+9-2clang/lib/AST/ItaniumMangle.cpp
+2-1clang/test/CodeGenCXX/mangle-requires.cpp
+2-0libcxxabi/test/DemangleTestCases.inc
+2-0llvm/include/llvm/Testing/Demangle/DemangleTestCases.inc
+57-116 files

LLVM/project d4f8667clang/include/clang/AST ExprConcepts.h, clang/lib/AST ASTConcept.cpp

[Clang] Support noexcept(expr) in C++ concepts compound requirements

This patch implements P3822R0 support for noexcept specifications with constant expressions in C++20 concepts compound requirements.

Previously, only 'noexcept' keyword was supported, which is now
equivalent to 'noexcept(true)'.
DeltaFile
+136-0clang/test/CXX/expr/expr.prim/expr.prim.req/compound-requirement.cpp
+61-27clang/lib/Sema/SemaExprCXX.cpp
+25-11clang/lib/Sema/TreeTransform.h
+26-5clang/lib/Parse/ParseExprCXX.cpp
+18-10clang/include/clang/AST/ExprConcepts.h
+11-8clang/lib/AST/ASTConcept.cpp
+277-619 files not shown
+350-8715 files

LLVM/project d303cdfclang/lib/Sema SemaExprCXX.cpp SemaTemplateInstantiate.cpp, clang/test/CXX/expr/expr.prim/expr.prim.req compound-requirement.cpp

Fix noexcept(expr) in compound requirements not instantiating constexpr variables
DeltaFile
+8-28clang/lib/Sema/SemaExprCXX.cpp
+10-0clang/test/CXX/expr/expr.prim/expr.prim.req/compound-requirement.cpp
+9-0clang/lib/Sema/SemaTemplateInstantiate.cpp
+27-283 files

LLVM/project 9062cf5clang-tools-extra/clangd FindTarget.cpp, clang-tools-extra/clangd/unittests SemanticHighlightingTests.cpp

[clangd] Report reference to UsingType's target decl at the correct location (#186310)

Fixes https://github.com/clangd/clangd/issues/2617
DeltaFile
+7-1clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+2-2clang-tools-extra/clangd/FindTarget.cpp
+9-32 files

LLVM/project 62f5754clang/lib/CIR/CodeGen CIRGenCall.cpp CIRGenModule.cpp, clang/test/CIR/CodeGen arg-attrs.cpp invoke-attrs.cpp

[CIR] Fix reference alignment to use pointee type

getNaturalTypeAlignment on a reference type returned pointer alignment
instead of pointee alignment. Pass the pointee type with
forPointeeType=true to match traditional codegen's
getNaturalPointeeTypeAlignment behavior. Fix applies to both argument
and return type attribute construction paths.
DeltaFile
+27-4clang/test/CIR/CodeGen/arg-attrs.cpp
+8-5clang/lib/CIR/CodeGen/CIRGenCall.cpp
+7-0clang/lib/CIR/CodeGen/CIRGenModule.cpp
+3-3clang/test/CIR/CodeGen/invoke-attrs.cpp
+1-4clang/lib/CIR/CodeGen/CIRGenExpr.cpp
+3-0clang/lib/CIR/CodeGen/CIRGenModule.h
+49-166 files

LLVM/project e7041d4clang/include/clang/CIR/Dialect/IR CIROps.td

[CIR] Add Pure trait to IsFPClassOp (#186625)

IsFPClassOp is a pure classification check on a floating-point value
with no memory effects.
DeltaFile
+1-1clang/include/clang/CIR/Dialect/IR/CIROps.td
+1-11 files

LLVM/project 6cf0e46clang/test/CIR/CodeGen cxx-default-init.cpp lambda.cpp

[CIR] Emit inbounds nuw flags on GetMemberOp GEP lowering

Struct member accesses via GetMemberOp are always inbounds and cannot
unsigned-wrap, matching LLVM's IRBuilder::CreateStructGEP behavior.
DeltaFile
+14-14clang/test/CIR/CodeGen/cxx-default-init.cpp
+13-13clang/test/CIR/CodeGen/lambda.cpp
+11-11clang/test/CIR/CodeGen/struct.cpp
+9-9clang/test/CIR/CodeGen/bitfields.c
+8-8clang/test/CIR/CodeGen/volatile.cpp
+7-7clang/test/CIR/CodeGen/aapcs-volatile-bitfields.c
+62-6219 files not shown
+115-10925 files

LLVM/project c6626f0orc-rt/include CMakeLists.txt, orc-rt/include/orc-rt LockedAccess.h

[orc-rt] Add LockedAccess utility. (#186737)

LockedAccess provides pointer-like access to a value while holding a
lock. All accessors are rvalue-ref-qualified, restricting usage to
temporaries to prevent accidental lock lifetime extension. A with_ref
method is provided for multi-statement critical sections.
DeltaFile
+151-0orc-rt/unittests/LockedAccessTest.cpp
+86-0orc-rt/include/orc-rt/LockedAccess.h
+1-0orc-rt/unittests/CMakeLists.txt
+1-0orc-rt/include/CMakeLists.txt
+239-04 files

LLVM/project 4cac790bolt/docs profiles.md

update

Created using spr 1.3.4
DeltaFile
+18-8bolt/docs/profiles.md
+18-81 files

LLVM/project ff98d79clang/include/clang/AST TypeBase.h TypeProperties.td, clang/lib/AST ASTContext.cpp Type.cpp

[clang] DeducedTypes deduction kind fix and improvement

This is a small refactor of how DeducedType and it's derived types are
represented.

The different deduction kinds are spelled out in an enum, and how this
is tracked is simplified, to allow easier profiling.

How these types are constructed and canonicalized is also brought more
in line with how it works for the other types.

This fixes a crash reported here: https://github.com/llvm/llvm-project/issues/167513#issuecomment-3692962115
DeltaFile
+82-91clang/lib/AST/ASTContext.cpp
+81-38clang/include/clang/AST/TypeBase.h
+48-20clang/lib/AST/Type.cpp
+14-16clang/lib/Sema/TreeTransform.h
+9-18clang/include/clang/AST/TypeProperties.td
+20-4clang/lib/AST/TextNodeDumper.cpp
+254-18714 files not shown
+320-23920 files

LLVM/project 4f2d860clang/include/clang/AST TypeBase.h TypeProperties.td, clang/lib/AST ASTContext.cpp Type.cpp

[clang] DeducedTypes deduction kind fix and improvement

This is a small refactor of how DeducedType and it's derived types are
represented.

The different deduction kinds are spelled out in an enum, and how this
is tracked is simplified, to allow easier profiling.

How these types are constructed and canonicalized is also brought more
in line with how it works for the other types.

This fixes a crash reported here: https://github.com/llvm/llvm-project/issues/167513#issuecomment-3692962115
DeltaFile
+82-91clang/lib/AST/ASTContext.cpp
+81-38clang/include/clang/AST/TypeBase.h
+48-20clang/lib/AST/Type.cpp
+14-16clang/lib/Sema/TreeTransform.h
+9-18clang/include/clang/AST/TypeProperties.td
+20-4clang/lib/AST/TextNodeDumper.cpp
+254-18713 files not shown
+317-23619 files

LLVM/project 696e82dclang/lib/Sema SemaDeclCXX.cpp, clang/test/CodeGenCXX dllexport-inherited-ctor.cpp

[clang] Skip dllexport of inherited constructors with unsatisfied constraints (#186497)

When a class is marked `__declspec(dllexport)`, Clang eagerly creates
inherited constructors via `findInheritingConstructor` and propagates
the dllexport attribute to all members. This bypasses overload
resolution, which would normally filter out constructors whose requires
clause is not satisfied. As a result, Clang attempted to instantiate
constructor bodies that should never be available, causing spurious
compilation errors.

Add constraint satisfaction checks in `checkClassLevelDLLAttribute` to
match MSVC behavior:

1. Before eagerly creating inherited constructors, verify that the base
constructor's `requires` clause is satisfied. Skip creation otherwise.

2. Before applying dllexport to non-inherited methods of class template
specializations, verify constraint satisfaction. This handles the case
where `dllexport` propagates to a base template specialization whose own

    [9 lines not shown]
DeltaFile
+56-30clang/lib/Sema/SemaDeclCXX.cpp
+78-4clang/test/CodeGenCXX/dllexport-inherited-ctor.cpp
+40-0clang/test/SemaCXX/dllexport-constrained-inherited-ctor.cpp
+174-343 files

LLVM/project 4287cfeclang/include/clang/AST TypeBase.h TypeProperties.td, clang/lib/AST ASTContext.cpp Type.cpp

[clang] DeducedTypes deduction kind fix and improvement

This is a small refactor of how DeducedType and it's derived types are
represented.

The different deduction kinds are spelled out in an enum, and how this
is tracked is simplified, to allow easier profiling.

How these types are constructed and canonicalized is also brought more
in line with how it works for the other types.

This fixes a crash reported here: https://github.com/llvm/llvm-project/issues/167513#issuecomment-3692962115
DeltaFile
+82-91clang/lib/AST/ASTContext.cpp
+81-38clang/include/clang/AST/TypeBase.h
+48-20clang/lib/AST/Type.cpp
+14-16clang/lib/Sema/TreeTransform.h
+9-18clang/include/clang/AST/TypeProperties.td
+20-4clang/lib/AST/TextNodeDumper.cpp
+254-18713 files not shown
+317-23619 files

LLVM/project 655d5e7lld/ELF/Arch RISCV.cpp LoongArch.cpp, lld/test/ELF riscv-relax-synthetic-in-text.s loongarch-relax-synthetic-in-text.s

[lld][ELF] Fix crash when relaxation pass encounters synthetic sections

In LoongArch and RISC-V, the relaxation pass iterates over input sections
within executable output sections. When a linker script places a synthetic
section (e.g., .got) into such an output section, the linker would crash
because synthetic sections do not have the relaxAux field initialized.

The relaxAux data structure is only allocated for non-synthetic sections
in initSymbolAnchors. This patch adds the necessary null checks in the
relaxation loops (relaxOnce and finalizeRelax) to skip sections that
do not require relaxation.

A null check is also added to elf::initSymbolAnchors to ensure the
subsequent sorting of anchors is safe.

Fixes: #184757

Reviewers: MaskRay

Pull Request: https://github.com/llvm/llvm-project/pull/184758
DeltaFile
+33-0lld/test/ELF/riscv-relax-synthetic-in-text.s
+31-0lld/test/ELF/loongarch-relax-synthetic-in-text.s
+8-1lld/ELF/Arch/RISCV.cpp
+4-1lld/ELF/Arch/LoongArch.cpp
+76-24 files

LLVM/project f46a515llvm/lib/Target/LoongArch/MCTargetDesc LoongArchAsmBackend.cpp

[LoongArch] Remove unreachable Value check in fixupLeb128 (#186297)

Value is guaranteed to be zero after the loop:

  for (I = 0; Value; ++I, Value >>= 7)

Therefore the subsequent `if (Value)` condition is always false.
Remove the unreachable code. Reported by PVS-Studio.

Fixed: #170122
DeltaFile
+0-2llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
+0-21 files

LLVM/project bb71dd0clang/test/OpenMP target_teams_distribute_parallel_for_simd_schedule_codegen.cpp, libc/AOR_v20.02/math/test/traces sincosf.txt exp.txt

remove pie test

Created using spr 1.3.7
DeltaFile
+53,024-7,001llvm/test/CodeGen/RISCV/rvv/clmulh-sdnode.ll
+0-31,999libc/AOR_v20.02/math/test/traces/sincosf.txt
+15,172-1,553llvm/test/CodeGen/RISCV/rvv/clmul-sdnode.ll
+0-16,000libc/AOR_v20.02/math/test/traces/exp.txt
+7,665-4,743llvm/test/CodeGen/AArch64/clmul-fixed.ll
+5,294-4,814clang/test/OpenMP/target_teams_distribute_parallel_for_simd_schedule_codegen.cpp
+81,155-66,1106,563 files not shown
+478,858-308,2106,569 files

LLVM/project 6e6a46borc-rt/include/orc-rt iterator_range.h, orc-rt/unittests iterator_range-test.cpp CMakeLists.txt

[orc-rt] Add a simple iterator_range class. (#186720)

This will be used to simplify operations on iterator ranges in the ORC
runtime.
DeltaFile
+79-0orc-rt/unittests/iterator_range-test.cpp
+47-0orc-rt/include/orc-rt/iterator_range.h
+1-0orc-rt/unittests/CMakeLists.txt
+127-03 files

LLVM/project 4c5b1c4clang/test/Driver riscv-cpus.c, clang/test/Driver/print-enabled-extensions riscv-sifive-x180.c riscv-sifive-x160.c

[RISCV] Add `sifive-x160` and `sifive-x180` processor definitions (#186264)

This PR adds new processor definitions for two SiFive cores:
- X160
(https://www.sifive.com/document-file/sifive-intelligence-x160-gen2-product-brief):
A RV32 core with Zve32f
- X180
(https://www.sifive.com/document-file/sifive-intelligence-x180-gen2-product-brief):
A RVV-capable RV64 core

Both of them have VLEN=128.

Scheduling model supports will be added in follow-up patches.
DeltaFile
+94-0llvm/lib/Target/RISCV/RISCVProcessors.td
+71-0clang/test/Driver/print-enabled-extensions/riscv-sifive-x180.c
+59-0clang/test/Driver/print-enabled-extensions/riscv-sifive-x160.c
+10-0clang/test/Driver/riscv-cpus.c
+4-0clang/test/Misc/target-invalid-cpu-note/riscv.c
+1-0llvm/docs/ReleaseNotes.md
+239-06 files

LLVM/project 8767bdbllvm/include/llvm/MC MCPseudoProbe.h

[NFC] Delete `MCPseudoProbeDecoder`'s move constructor (#186698)

`MCPseudoProbeDecoder` cannot be copeied/moved due to its address
dependence on the DummyInlineRoot member address. Explicitly delete the move constructor.
DeltaFile
+8-0llvm/include/llvm/MC/MCPseudoProbe.h
+8-01 files