LLVM/project 36a639dllvm/test/Transforms/InstCombine simplify-demanded-fpclass-maximum.ll simplify-demanded-fpclass-minimum.ll

InstCombine: Add more tests for min/max SimplifyDemandedFPClass

Test some more refined cases, such as ordering with 0s and within
known positive and known negative cases.
DeltaFile
+394-0llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-maximum.ll
+393-0llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-minimum.ll
+392-0llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-maximumnum.ll
+392-0llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-minimumnum.ll
+1,571-04 files

LLVM/project 39583b2llvm/lib/Transforms/InstCombine InstCombineSimplifyDemanded.cpp, llvm/test/Transforms/InstCombine simplify-demanded-fpclass-minimum.ll simplify-demanded-fpclass-minimumnum.ll

InstCombine: Improve SimplifyDemandedFPClass min/max handling

Refine handling of minimum/maximum and minimumnum/maximumnum. The
previous folds to input were based on sign bit checks. This was too
conservative with 0s. This can now consider -0 as less than or equal
to +0 as appropriate, account for nsz. It additionally can handle
cases like one half is known positive normal and the other subnormal.
DeltaFile
+32-61llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+23-58llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-minimum.ll
+22-52llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-minimumnum.ll
+23-46llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-maximumnum.ll
+22-44llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-maximum.ll
+122-2615 files

LLVM/project 4da6de5llvm/include/llvm/ADT FloatingPointMode.h, llvm/lib/Support FloatingPointMode.cpp

ADT: Add utility functions for comparing FPClassTest

Add utility functions for checking if less and greater queries
are known to not evaluate to true. This will permit more precise
folding of min/max intrinsics. The test is kind of a mess.
DeltaFile
+560-0llvm/unittests/ADT/FloatingPointMode.cpp
+61-0llvm/lib/Support/FloatingPointMode.cpp
+34-0llvm/include/llvm/ADT/FloatingPointMode.h
+655-03 files

LLVM/project 35ce17bllvm/test/Transforms/Attributor nofpclass.ll nofpclass-nan-fmul.ll, llvm/test/Transforms/InstCombine fabs.ll

ValueTracking: Check if fmul operand could be undef (#174458)

In the special case for the same value for both operands,
ensure the value isn't undef.
DeltaFile
+20-18llvm/test/Transforms/Attributor/nofpclass.ll
+9-9llvm/test/Transforms/Attributor/nofpclass-nan-fmul.ll
+8-8llvm/test/Transforms/InstSimplify/floating-point-compare.ll
+12-2llvm/test/Transforms/Attributor/nofpclass-fmul.ll
+2-2llvm/unittests/Analysis/ValueTrackingTest.cpp
+2-2llvm/test/Transforms/InstCombine/fabs.ll
+53-413 files not shown
+58-459 files

LLVM/project 696946fclang-tools-extra/clangd/unittests HoverTests.cpp, clang/docs ReleaseNotes.rst

[clang] Add a valid begin source location for abbreviated function templates (#174723)

The begin source location for function templates is determined by the
source location of the template keyword.
Pure abbreviated function templates do not have the template keyword.
This results in an invalid begin source location for abbreviated
function templates.

Without a valid begin source location, comments cannot be attached to
the function template which leads to the bug described in
clangd/clangd#2565.

This patch introduces new begin locations for abbreviated function
templates (begin of the templated function) and generic lambdas (begin
of the introducer `[...]`) when creating the template parameter lists in
Sema.
DeltaFile
+295-0clang/test/AST/ast-dump-templates.cpp
+131-0clang-tools-extra/clangd/unittests/HoverTests.cpp
+15-3clang/test/AST/ast-dump-record-definition-data-json.cpp
+4-4clang/lib/Sema/SemaDeclCXX.cpp
+6-0clang/docs/ReleaseNotes.rst
+2-2clang/lib/Sema/SemaLambda.cpp
+453-91 files not shown
+454-107 files

LLVM/project 41079daclang/lib/AST DeclPrinter.cpp, clang/test/SemaCXX cxx11-attr-print.cpp

Control spacing for attribute printing (#174197)

This was motivated by the decl printing for the alignas() keyword
attribute:

    class alignas(1) Foo;

would be printed as:

    class alignas(1)  Foo;

with two spaces before class name.

Rather than trying to help `prettyPrintAttributes` guess what the caller
wants in terms of leading and trailing spaces, have it return an
`optional<string>` which is either the pretty-printed attributes for
Pos,
or `nullopt` if no attributes were found.


    [3 lines not shown]
DeltaFile
+69-49clang/lib/AST/DeclPrinter.cpp
+5-0clang/test/SemaCXX/cxx11-attr-print.cpp
+74-492 files

LLVM/project 2d1e688llvm/test/Transforms/Attributor nofpclass.ll nofpclass-nan-fmul.ll, llvm/test/Transforms/InstCombine fast-math.ll

ValueTracking: Check if fmul operand could be undef

In the special case for the same value for both operands,
ensure the value isn't undef.
DeltaFile
+20-18llvm/test/Transforms/Attributor/nofpclass.ll
+9-9llvm/test/Transforms/Attributor/nofpclass-nan-fmul.ll
+8-8llvm/test/Transforms/InstSimplify/floating-point-compare.ll
+12-2llvm/test/Transforms/Attributor/nofpclass-fmul.ll
+2-2llvm/unittests/Analysis/ValueTrackingTest.cpp
+2-2llvm/test/Transforms/InstCombine/fast-math.ll
+53-413 files not shown
+58-459 files

LLVM/project 782aadallvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/Attributor nofpclass-implied-by-fcmp.ll nofpclass-select.ll

ValueTracking: Account for undef in adjustKnownFPClassForSelectArm

This needs to consider undef like the KnownBits case does.
DeltaFile
+600-600llvm/test/Transforms/Attributor/nofpclass-implied-by-fcmp.ll
+25-25llvm/test/Transforms/Attributor/nofpclass-select.ll
+19-6llvm/test/Transforms/InstCombine/simplify-demanded-fpclass.ll
+6-6llvm/test/Transforms/Attributor/nofpclass.ll
+8-3llvm/lib/Analysis/ValueTracking.cpp
+1-1llvm/test/Transforms/InstCombine/minmax-fp.ll
+659-6416 files

LLVM/project 5d501d1llvm/lib/Transforms/InstCombine InstCombineSimplifyDemanded.cpp, llvm/test/Transforms/InstCombine simplify-demanded-fpclass-minimumnum.ll simplify-demanded-fpclass-maximumnum.ll

InstCombine: Handle minimumnum/maximumnum in SimplifyDemandedFPClass (#173977)

DeltaFile
+38-64llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-minimumnum.ll
+36-60llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-maximumnum.ll
+78-12llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+152-1363 files

LLVM/project 9bcf43cclang/include/clang/Interpreter Interpreter.h, clang/lib/Interpreter Interpreter.cpp IncrementalExecutor.h

[clang-repl] Simplify the logic around out of process execution. NFC (#175322)

cc: @aaronj0, @Vipul-Cariappa
DeltaFile
+105-107clang/lib/Interpreter/Interpreter.cpp
+56-40clang/unittests/Interpreter/OutOfProcessInterpreterTests.cpp
+53-36clang/include/clang/Interpreter/Interpreter.h
+0-39clang/unittests/Interpreter/InterpreterExtensionsTest.cpp
+18-13clang/tools/clang-repl/ClangRepl.cpp
+1-5clang/lib/Interpreter/IncrementalExecutor.h
+233-2401 files not shown
+234-2427 files

LLVM/project 524fde8mlir/include/mlir/Bindings/Python IRCore.h, mlir/lib/Bindings/Python IRCore.cpp

[MLIR][Python] Register `OpAttributeMap` as `Mapping` for `match` compatibility (#174292)

This is a continuation of the idea from #174091 to add `match` support
for MLIR containers. In this PR the `OpAttributeMap` container is
registered as a `Mapping`, so be mapped as a "dictionary" in `match`
statements.

For this to work the `get(key, default=None)` method had to be
implemented. Those are pretty much copys of `dunderGetItemNamed` and
`dunderGetItemIndexed` with an added argument and `nb::object` as return
type, because they can now return other types than just `PyAttribute`.
Was unsure if I should refactor this to make `dunderGetItem...` use the
new `getWithDefault...` or if a separate method is preferred. Kept it as
a copy for simplicitys sake for now.

Even though the `OpAttributeMap` supports indexing by `int` and `str`,
Python does not allow to register it as a `Sequence` and a `Mapping` at
the same time. If it is registered as a Sequence it only returns the
attribute names as string, not as `NamedAttribute`. It is technically

    [62 lines not shown]
DeltaFile
+63-0mlir/test/python/ir/operation.py
+13-0mlir/lib/Bindings/Python/IRCore.cpp
+2-1mlir/python/mlir/_mlir_libs/__init__.py
+3-0mlir/include/mlir/Bindings/Python/IRCore.h
+81-14 files

LLVM/project 85e10cbllvm/tools/dsymutil MachOUtils.cpp Options.td

[dsymutil] Add new argument allow_invalid_macho (#173503)

DeltaFile
+17-7llvm/tools/dsymutil/MachOUtils.cpp
+7-0llvm/tools/dsymutil/Options.td
+4-0llvm/tools/dsymutil/LinkUtils.h
+2-1llvm/tools/dsymutil/MachOUtils.h
+1-1llvm/tools/dsymutil/DwarfLinkerForBinary.cpp
+2-0llvm/tools/dsymutil/dsymutil.cpp
+33-96 files

LLVM/project ba79486llvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/Attributor nofpclass-fdiv.ll nofpclass-frem.ll

ValueTracking: Rule out nan for fdiv self special case (#174857)

Addresses TODO for signaling nan handling.
DeltaFile
+20-2llvm/lib/Analysis/ValueTracking.cpp
+9-9llvm/test/Transforms/Attributor/nofpclass-fdiv.ll
+9-9llvm/test/Transforms/Attributor/nofpclass-frem.ll
+38-203 files

LLVM/project ed7c9e4llvm/lib/Transforms/InstCombine InstCombineSimplifyDemanded.cpp

Use switch
DeltaFile
+19-5llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+19-51 files

LLVM/project cebd37ellvm/lib/Analysis ValueTracking.cpp

Use isKnownNeverInfOrNaN
DeltaFile
+1-1llvm/lib/Analysis/ValueTracking.cpp
+1-11 files

LLVM/project fb69834llvm/lib/Transforms/InstCombine InstCombineSimplifyDemanded.cpp, llvm/test/Transforms/InstCombine simplify-demanded-fpclass-minimumnum.ll simplify-demanded-fpclass-maximumnum.ll

InstCombine: Handle minimumnum/maximumnum in SimplifyDemandedFPClass
DeltaFile
+38-64llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-minimumnum.ll
+36-60llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-maximumnum.ll
+64-12llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+138-1363 files

LLVM/project a35530fllvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/Attributor nofpclass-fdiv.ll nofpclass-frem.ll

ValueTracking: Rule out nan for fdiv self special case

Addresses TODO for signaling nan handling.
DeltaFile
+20-2llvm/lib/Analysis/ValueTracking.cpp
+9-9llvm/test/Transforms/Attributor/nofpclass-fdiv.ll
+9-9llvm/test/Transforms/Attributor/nofpclass-frem.ll
+38-203 files

LLVM/project 481cf71llvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/Attributor nofpclass-fdiv.ll

ValueTracking: Handle fdiv by known 0 case in computeKnownFPClass (#174855)

This will help subsume some transforms instsimplify performs
in the middle of SimplifyDemandedFPClass
DeltaFile
+16-16llvm/test/Transforms/Attributor/nofpclass-fdiv.ll
+8-0llvm/lib/Analysis/ValueTracking.cpp
+24-162 files

LLVM/project c335a5allvm/lib/Target/LoongArch LoongArchExpandPseudoInsts.cpp LoongArchMergeBaseOffset.cpp, llvm/lib/Target/LoongArch/AsmParser LoongArchAsmParser.cpp

[llvm][LoongArch] Add PC-relative address materialization using pcadd instructions

This patch adds support for PC-relative address materialization using
pcadd-class relocations, covering the HI20/LO12 pair and their GOT and
TLS variants (IE, LD, GD, and DESC).

Link: https://gcc.gnu.org/pipermail/gcc-patches/2025-December/703312.html
DeltaFile
+149-90llvm/test/CodeGen/LoongArch/code-models.ll
+132-89llvm/test/CodeGen/LoongArch/merge-base-offset.ll
+153-54llvm/lib/Target/LoongArch/LoongArchExpandPseudoInsts.cpp
+133-27llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
+42-28llvm/test/CodeGen/LoongArch/double-imm.ll
+39-16llvm/lib/Target/LoongArch/LoongArchMergeBaseOffset.cpp
+648-30426 files not shown
+971-44432 files

LLVM/project 2ac5fbbllvm/lib/Target/LoongArch LoongArchInstrInfo.td LoongArchExpandPseudoInsts.cpp, llvm/lib/Target/LoongArch/AsmParser LoongArchAsmParser.cpp

[llvm][LoongArch] Add call and tail macro instruction support

Link: https://sourceware.org/pipermail/binutils/2025-December/146091.html
DeltaFile
+21-15llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
+21-10llvm/lib/Target/LoongArch/LoongArchExpandPseudoInsts.cpp
+14-0llvm/test/MC/LoongArch/Macros/macros-call.s
+7-0llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
+2-2llvm/lib/Target/LoongArch/LoongArchTargetMachine.cpp
+1-2llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+66-292 files not shown
+68-318 files

LLVM/project 1a82529llvm/include/llvm/ExecutionEngine/JITLink loongarch.h, llvm/lib/ExecutionEngine/JITLink loongarch.cpp

[JITLink][LoongArch] Refactor jump stub to support LoongArch32
DeltaFile
+8-8llvm/unittests/ExecutionEngine/JITLink/StubsTests.cpp
+8-3llvm/include/llvm/ExecutionEngine/JITLink/loongarch.h
+2-2llvm/lib/ExecutionEngine/JITLink/loongarch.cpp
+18-133 files

LLVM/project 5c03040llvm/include/llvm/ExecutionEngine/JITLink loongarch.h, llvm/lib/ExecutionEngine/JITLink ELF_loongarch.cpp loongarch.cpp

[JITLink][LoongArch] Add reloc types for LA32R/LA32S
DeltaFile
+84-1llvm/lib/ExecutionEngine/JITLink/ELF_loongarch.cpp
+72-1llvm/include/llvm/ExecutionEngine/JITLink/loongarch.h
+4-0llvm/lib/ExecutionEngine/JITLink/loongarch.cpp
+160-23 files

LLVM/project 03378b4llvm/include/llvm/BinaryFormat/ELFRelocs LoongArch.def, llvm/test/tools/llvm-readobj/ELF reloc-types-loongarch64.test

[llvm][LoongArch] Add reloc types for LA32R/LA32S

This patch introduces the relocation types added in la-abi-sepcs v2.50.

Link: https://github.com/loongson/la-abi-specs/pull/16
DeltaFile
+28-0llvm/unittests/Object/ELFTest.cpp
+26-0llvm/test/tools/llvm-readobj/ELF/reloc-types-loongarch64.test
+18-0llvm/include/llvm/BinaryFormat/ELFRelocs/LoongArch.def
+72-03 files

LLVM/project da5357bllvm/lib/Target/LoongArch LoongArchInstrInfo.td LoongArchMCInstLower.cpp, llvm/lib/Target/LoongArch/AsmParser LoongArchAsmParser.cpp

[llvm][LoongArch] Add call30 and tail30 macro instruction support

Link: https://sourceware.org/pipermail/binutils/2025-December/146091.html
DeltaFile
+30-12llvm/lib/Target/LoongArch/AsmParser/LoongArchAsmParser.cpp
+14-1llvm/test/MC/LoongArch/Macros/macros-call.s
+10-0llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
+3-0llvm/lib/Target/LoongArch/LoongArchMCInstLower.cpp
+3-0llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchMCAsmInfo.cpp
+1-0llvm/lib/Target/LoongArch/LoongArchInstrInfo.cpp
+61-132 files not shown
+63-138 files

LLVM/project 8486034llvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/Attributor nofpclass-fdiv.ll

ValueTracking: Handle fdiv by known 0 case in computeKnownFPClass

This will help subsume some transforms instsimplify performs
in the middle of SimplifyDemandedFPClass
DeltaFile
+16-16llvm/test/Transforms/Attributor/nofpclass-fdiv.ll
+8-0llvm/lib/Analysis/ValueTracking.cpp
+24-162 files

LLVM/project 18d6d67clang/lib/AST/ByteCode Function.h ByteCodeEmitter.cpp, clang/test/AST/ByteCode invalid.cpp

[clang][bytecode] Check for invalid function decls (#175312)

If the function decl is invalid, the `interp::Function` shouldn't ever
be valid.

Fixes https://github.com/llvm/llvm-project/issues/175280
DeltaFile
+9-0clang/test/AST/ByteCode/invalid.cpp
+3-2clang/lib/AST/ByteCode/Function.h
+2-1clang/lib/AST/ByteCode/ByteCodeEmitter.cpp
+14-33 files

LLVM/project 1eebd2allvm/test/CodeGen/RISCV xqccmp-push-pop-popret.ll xqccmp-callee-saved-gprs.ll, llvm/test/DebugInfo/RISCV relax_dwo_ranges.ll

[RISCV] Mark Xqccmp as not experimental (#175066)

DeltaFile
+6-6llvm/test/CodeGen/RISCV/xqccmp-push-pop-popret.ll
+4-4llvm/test/CodeGen/RISCV/xqccmp-callee-saved-gprs.ll
+3-3llvm/test/DebugInfo/RISCV/relax_dwo_ranges.ll
+3-3llvm/test/MC/RISCV/rv64xqccmp-valid.s
+3-3llvm/test/MC/RISCV/rv64e-xqccmp-valid.s
+3-3llvm/test/MC/RISCV/rv64e-xqccmp-invalid.s
+22-2219 files not shown
+53-5325 files

LLVM/project e2ff134llvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/Attributor nofpclass-fdiv.ll

ValueTracking: Improve sign bit handling for fdiv (#174652)

This is the fdiv version of 5020e0ff1494137ff12b4ed7c8fa896f8088b17b for
fmul.
DeltaFile
+16-10llvm/lib/Analysis/ValueTracking.cpp
+3-3llvm/test/Transforms/Attributor/nofpclass-fdiv.ll
+19-132 files

LLVM/project 7450a75llvm/lib/Transforms/Vectorize VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize/X86 vplan-single-bit-ind-var-width-4.ll

[VPlan] Allow truncation for lanes in VPScalarIVStepsRecipe (#175268)

VPScalarIVStepsRecipe relies on APInt truncation in order to vectorize
blocks with a width greater than the maximum value the types of some of
their (changing) operands are able to hold (e.g., an i1 input with a
vector width of 4). Simply reenable implicit truncation in
ConstantInt::get() to cover this case.

Remove the helper function given it is only called in one place to
prevent accidentally using it elsewhere where we probably do not want
implicit truncation turned on.

This fixes another case that we saw after
acb78bde6fb613a9af2a604bc69fa744a8cee850 did not fix that issue, which
had the same stack trace. We still want to keep lane constants as
unsigned.

Somewhat similar to 6d1e7d4982fabc9e245897056a5425496df6a7a3.

This test case comes from a tensorflow/XLA compilation from a test case
in https://github.com/google-research/spherical-cnn.
DeltaFile
+68-0llvm/test/Transforms/LoopVectorize/X86/vplan-single-bit-ind-var-width-4.ll
+8-8llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+76-82 files

LLVM/project c968484llvm/lib/Analysis ValueTracking.cpp

Use isKnownNeverInfOrNaN
DeltaFile
+1-1llvm/lib/Analysis/ValueTracking.cpp
+1-11 files