LLVM/project 9c53215llvm/test/Transforms/LoopVectorize iv-select-cmp-decreasing.ll vector-loop-backedge-elimination.ll, llvm/test/Transforms/LoopVectorize/AArch64 optsize_minsize.ll

[VPlan] Remove manual region removal when simplifying for VF and UF. (#181252)

Replace manual region dissolution code in
simplifyBranchConditionForVFAndUF with using general
removeBranchOnConst. simplifyBranchConditionForVFAndUF now just creates
a (BranchOnCond true) or updates BranchOnTwoConds.

The loop then gets automatically removed by running removeBranchOnConst.

This removes a bunch of special logic to handle header phi replacements
and CFG updates. With the new code, there's no restriction on what kind
of header phi recipes the loop contains.

Note that VPEVLBasedIVRecipe needs to be marked as readnone. This is
technically unrelated, but I could not find an independent test that
would be impacted.

The code to deal with epilogue resume values now needs updating, because
we may simplify a reduction directly to the start value.

PR: https://github.com/llvm/llvm-project/pull/181252
DeltaFile
+87-205llvm/test/Transforms/LoopVectorize/iv-select-cmp-decreasing.ll
+266-0llvm/test/Transforms/LoopVectorize/vector-loop-backedge-elimination.ll
+84-125llvm/test/Transforms/LoopVectorize/AArch64/optsize_minsize.ll
+187-9llvm/test/Transforms/LoopVectorize/epilog-vectorization-reductions.ll
+63-116llvm/test/Transforms/LoopVectorize/load-deref-pred-poison-ub-ops-feeding-pointer.ll
+42-68llvm/test/Transforms/LoopVectorize/X86/load-deref-pred.ll
+729-52316 files not shown
+923-81822 files

LLVM/project 4b10a4cmlir/include/mlir/Tools/mlir-opt MlirOptMain.h, mlir/lib/Tools/mlir-opt MlirOptMain.cpp

[mlir] Enable specifying bytecode producer in mlir-opt. (#182846)

DeltaFile
+14-0mlir/include/mlir/Tools/mlir-opt/MlirOptMain.h
+9-1mlir/lib/Tools/mlir-opt/MlirOptMain.cpp
+5-0mlir/test/Bytecode/bytecode_producer.mlir
+1-0mlir/test/CMakeLists.txt
+1-0mlir/test/lit.cfg.py
+30-15 files

LLVM/project 25c946cclang/lib/Sema SemaOverload.cpp, clang/test/SemaTemplate temp_arg_nontype_cxx11.cpp

[clang] stop error recovery in SFINAE for narrowing in converted constant expressions

A narrowing conversion in a converted constant expression should produce an
invalid expression so that [temp.deduct.general]p7 is satisfied, by stopping
substitution at this point.

Fixes #167709
DeltaFile
+10-1clang/test/SemaTemplate/temp_arg_nontype_cxx11.cpp
+8-0clang/lib/Sema/SemaOverload.cpp
+18-12 files

LLVM/project 2265d32llvm/lib/DebugInfo/PDB/Native GSIStreamBuilder.cpp

[pdb] Fix libc++ strict-weak-ordering assertion failures from gsiRecordCmp (#183749)

Builds using libc++ hardening was hitting asserts like

  libc++ Hardening assertion
  !__comp(*(__first + __a), *(__first + __b)) failed:
  Your comparator is not a valid strict-weak ordering

printf-debugging revealed that symbols like "?ST@@3JA" were not
comparing equal with themselves. It turns out the comparison was done
with

  return S1.compare_insensitive(S2.data());

and even when &S1 == &S2, S1 and S2.data() may not refer to identical
strings, since data() may not have a null terminator where the StringRef
locally ends.

This fixes the ordering, simplifies the code, and makes it a little

    [2 lines not shown]
DeltaFile
+1-1llvm/lib/DebugInfo/PDB/Native/GSIStreamBuilder.cpp
+1-11 files

LLVM/project ed05f70mlir/lib/Dialect/Vector/TransformOps VectorTransformOps.cpp, mlir/lib/Dialect/Vector/Transforms LowerVectorMultiReduction.cpp

[mlir][vector] Rename `ReduceMultiDimReductionRank` -> `FlattenMultiReduction` (NFC) (#183721)

The updated name better captures what the pattern does and matches the
coresponding `populat*` hook,
`populateVectorMultiReductionFlatteningPatterns`, that only contains
this pattern.
DeltaFile
+18-8mlir/lib/Dialect/Vector/Transforms/LowerVectorMultiReduction.cpp
+4-0mlir/test/Dialect/Vector/vector-multi-reduction-flattening.mlir
+3-0mlir/lib/Dialect/Vector/TransformOps/VectorTransformOps.cpp
+25-83 files

LLVM/project 681d7b2llvm/include/llvm/MC MCAsmBaseStreamer.h MCAsmStreamer.h, llvm/lib/MC MCAsmStreamer.cpp MCGNUAsmStreamer.cpp

[MC] Rename MCAsmStreamer to MCGNUAsmStreamer

Also rename MCBaseAsmStreamer to MCAsmStreamer.
DeltaFile
+94-2,554llvm/lib/MC/MCAsmStreamer.cpp
+2,605-0llvm/lib/MC/MCGNUAsmStreamer.cpp
+0-143llvm/lib/MC/MCAsmBaseStreamer.cpp
+0-61llvm/include/llvm/MC/MCAsmBaseStreamer.h
+61-0llvm/include/llvm/MC/MCAsmStreamer.h
+3-3llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.h
+2,763-2,7611 files not shown
+2,764-2,7627 files

LLVM/project e3a8c1allvm/include/llvm/Analysis ScalarEvolution.h, llvm/lib/Analysis ScalarEvolution.cpp

!fixup more cleanups
DeltaFile
+22-33llvm/lib/Analysis/ScalarEvolution.cpp
+2-6llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+4-2llvm/include/llvm/Analysis/ScalarEvolution.h
+1-2llvm/lib/Transforms/Scalar/LoopFuse.cpp
+1-1llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp
+30-445 files

LLVM/project 11a92a9llvm/include/llvm/MC MCSymbolGOFF.h MCGOFFAttributes.h, llvm/lib/MC GOFFObjectWriter.cpp MCSymbolGOFF.cpp

[SystemZ] Add indirect reference bit XATTR REFERENCE(INDIRECT) for indirect symbol handling support (#183441)

This is the first of three patches aimed to support indirect symbol
handling for the SystemZ backend. This PR introduces a `GOFF:ERAttr` to
represent indirect references, handles indirect symbols within
`setSymbolAttribute()` by setting the indirect reference bit, and also
updates the HLASM streamer to emit `XATTR REFERENCE(INDIRECT)` and
various other combinations.
DeltaFile
+19-9llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.cpp
+8-2llvm/include/llvm/MC/MCSymbolGOFF.h
+4-3llvm/lib/MC/GOFFObjectWriter.cpp
+3-1llvm/lib/MC/MCSymbolGOFF.cpp
+1-0llvm/include/llvm/MC/MCGOFFAttributes.h
+35-155 files

LLVM/project f99dfcf

Merge branch 'users/aokblast/elf/fix_error' into users/aokblast/readelf/pxnum_support
DeltaFile
+0-00 files

LLVM/project 1f0ce12llvm/include/llvm/Object ELF.h, llvm/test/tools/llvm-readobj/ELF many-sections.s

fixup! [Object][ELF] Fix section header zero check
DeltaFile
+3-4llvm/include/llvm/Object/ELF.h
+1-1llvm/test/tools/llvm-readobj/ELF/many-sections.s
+4-52 files

LLVM/project 4eab75ellvm/test/Transforms/SLPVectorizer/AMDGPU zext-duplicate-shift.ll

[SLP][NFC] Precommit test for zext reorder with duplicate shifts (#183748)

This is a pre-commit test for
https://github.com/llvm/llvm-project/pull/183627,
DeltaFile
+53-0llvm/test/Transforms/SLPVectorizer/AMDGPU/zext-duplicate-shift.ll
+53-01 files

LLVM/project 53656d1clang/test/DebugInfo/CXX vtable-external.cpp vtable-template-instantiation.cpp

[clang][DebugInfo] Rename _vtable$ to __clang_vtable (#183617)

Discussion is a follow-up from
https://github.com/llvm/llvm-project/issues/182762#issuecomment-3965207289
(where we're discussing how LLDB could make use of this symbol for
vtable detection).

`_vtable$` is not a reserved identifier in C or C++. In order for
debuggers to reliably use this symbol without accidentally reaching into
user-identifiers, this patch renames it such that it is reserved. The
naming follows the style of the recently added `__clang_trap_msg`
debug-info symbol.
DeltaFile
+13-13clang/test/DebugInfo/CXX/vtable-external.cpp
+12-12clang/test/DebugInfo/CXX/vtable-template-instantiation.cpp
+9-9clang/test/DebugInfo/CXX/vtable-inheritance-simple-main.cpp
+9-9clang/test/DebugInfo/CXX/vtable-inheritance-diamond.cpp
+9-9clang/test/DebugInfo/CXX/vtable-inheritance-virtual.cpp
+7-7clang/test/DebugInfo/CXX/vtable-inheritance-multiple.cpp
+59-592 files not shown
+66-668 files

LLVM/project d8956d7llvm/lib/Target/SPIRV SPIRVCommandLine.cpp SPIRVCommandLine.h, llvm/lib/Target/SPIRV/MCTargetDesc SPIRVBaseInfo.h

[SPIRV][NFCI] Use unordered data structures for SPIR-V extensions (#183567)

Review follow-up from https://github.com/llvm/llvm-project/pull/183325
No reason for these data structures to be ordered.

Minor annoyance when trying to use `DenseMap` because of the C++ code
for enums generated by TableGen, but not too bad.

Signed-off-by: Nick Sarnie <nick.sarnie at intel.com>
DeltaFile
+160-173llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp
+23-0llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVBaseInfo.h
+7-12llvm/lib/Target/SPIRV/SPIRVCommandLine.h
+4-6llvm/lib/Target/SPIRV/SPIRVSubtarget.cpp
+3-5llvm/lib/Target/SPIRV/SPIRVSubtarget.h
+1-1llvm/lib/Target/SPIRV/SPIRVAPI.cpp
+198-1976 files

LLVM/project d118308llvm/include/llvm/Analysis ScalarEvolution.h ScalarEvolutionExpressions.h, llvm/lib/Analysis ScalarEvolution.cpp

[SCEV] Introduce SCEVUse wrapper type (NFC)

Add SCEVUse as a PointerIntPair wrapper around const SCEV * to prepare
for storing additional per-use information.

This commit contains the mechanical changes of adding an intial SCEVUse
wrapper and updating all relevant interfaces to take SCEVUse. Note that
currently the integer part is never set, and all SCEVUses are
considered canonical.
DeltaFile
+280-246llvm/lib/Analysis/ScalarEvolution.cpp
+117-47llvm/include/llvm/Analysis/ScalarEvolution.h
+78-70llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h
+36-29llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+25-26llvm/lib/Transforms/Scalar/NaryReassociate.cpp
+17-18llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+553-43622 files not shown
+656-52328 files

LLVM/project f41133fllvm/include/llvm/Analysis ScalarEvolutionExpressions.h, llvm/lib/Transforms/Scalar LoopFuse.cpp LoopPredication.cpp

!fixup address latest comments, thanks
DeltaFile
+18-20llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h
+3-3llvm/lib/Transforms/Scalar/LoopFuse.cpp
+1-4llvm/lib/Transforms/Scalar/LoopPredication.cpp
+1-4llvm/lib/Transforms/Scalar/NaryReassociate.cpp
+1-4llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp
+1-2llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
+25-371 files not shown
+26-387 files

LLVM/project ef05d06lldb/source/Plugins/Process/FreeBSD-Kernel-Core ProcessFreeBSDKernelCore.cpp CMakeLists.txt, llvm/docs ReleaseNotes.md

[lldb][Process/FreeBSDKernelCore] Implement DoWriteMemory() (#183553)

Implement `ProcessFreeBSDKernelCore::DoWriteMemory()` to write data on
kernel crash dump or `/dev/mem`. Due to safety reasons (e.g. writing
wrong value on `/dev/mem` can trigger kernel panic), this feature is
only enabled when `plugin.process.freebsd-kernel-core.read-only` is set
to false (true by default).

Since 85a1fe6 (#183237) was reverted as it was prematurely merged, I'm
committing changes again with corrections here.

---------

Signed-off-by: Minsoo Choo <minsoochoo0122 at proton.me>
DeltaFile
+69-2lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.cpp
+12-0lldb/source/Plugins/Process/FreeBSD-Kernel-Core/CMakeLists.txt
+8-0lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCoreProperties.td
+6-0lldb/source/Plugins/Process/FreeBSD-Kernel-Core/ProcessFreeBSDKernelCore.h
+4-0llvm/docs/ReleaseNotes.md
+99-25 files

LLVM/project bcd8819mlir/lib/Transforms RemoveDeadValues.cpp, mlir/test/Transforms remove-dead-values.mlir

[mlir][transforms] Fix crash in remove-dead-values when function has non-call users (#183655)

`processFuncOp` asserts that all symbol uses of a function are
`CallOpInterface` operations. This is violated when a function is
referenced by a non-call operation such as `spirv.EntryPoint`, which
uses the function symbol for metadata purposes without calling it.

Fix this by replacing the assertion with an early return: if any user of
the function symbol is not a `CallOpInterface`, skip the function
entirely. This is safe because the pass cannot determine the semantics
of arbitrary non-call references, so it should leave such functions
alone.

Fixes #180416
DeltaFile
+21-0mlir/test/Transforms/remove-dead-values.mlir
+14-5mlir/lib/Transforms/RemoveDeadValues.cpp
+35-52 files

LLVM/project 620425amlir/lib/Dialect/Tensor/IR TensorOps.cpp, mlir/test/Dialect/Tensor canonicalize.mlir

[mlir][tensor] Fix crash in tensor.from_elements fold with non-scalar element types (#183659)

The fold for tensor.from_elements attempted to always produce a
DenseElementsAttr by calling DenseElementsAttr::get(type, elements).
However, DenseElementsAttr::get only handles basic scalar element types
(integer, index, float, complex) directly. For other element types such
as vector types, it expects StringAttr (raw bytes) for each element,
which folded constants won't provide — triggering an assertion.

Fix this by guarding the fold: only attempt the DenseElementsAttr fold
when the tensor element type is integer, index, float, or complex.

Fixes #180459
DeltaFile
+15-0mlir/test/Dialect/Tensor/canonicalize.mlir
+7-0mlir/lib/Dialect/Tensor/IR/TensorOps.cpp
+22-02 files

LLVM/project f55b862mlir/lib/Bindings/Python IRCore.cpp IRAttributes.cpp

[mlir][Python] Drop Python <=3.9 compatibility path (#183416)

According to PR #163499, minimum Python version for mlir-py is now 3.10,
we no longer need patches for py<=3.9.

This change aligns with the Python version bump policy discussed
[here](https://discourse.llvm.org/t/rfc-adopt-regularly-scheduled-python-minimum-version-bumps/88841).
DeltaFile
+0-24mlir/lib/Bindings/Python/IRCore.cpp
+0-9mlir/lib/Bindings/Python/IRAttributes.cpp
+0-332 files

LLVM/project 3702733llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/AArch64 clmul-fixed.ll

[SelectionDAG] Fix CLMULR/CLMULH expansion  (#183537)

For v8i8 on AArch64, `expandCLMUL` picked the zext path (ExtVT=v8i16) since ZERO_EXTEND/SRL were legal, but CLMUL on v8i16 is not, resulting in a bit-by-bit expansion (~42 insns). Prefer the bitreverse path when CLMUL is legal on VT but not ExtVT.

v8i8 CLMULR: 42 → 4 instructions.

Fixes #182780
DeltaFile
+9-82llvm/test/CodeGen/AArch64/clmul-fixed.ll
+6-1llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+15-832 files

LLVM/project 7cc27e2mlir/lib/Dialect/Vector/Transforms VectorUnroll.cpp, mlir/lib/Dialect/XeGPU/Transforms XeGPUBlocking.cpp

[MLIR][Vector] Enhance shape_cast unrolling support in case the target shape is [1, 1, ..1]  (#183436)

This PR fixes a minor issue in shape_cast unrolling: when all target
dimensions are unit-sized, it no longer removes all leading unit
dimensions.
DeltaFile
+18-0mlir/test/Dialect/Vector/vector-unroll-options.mlir
+4-4mlir/lib/Dialect/Vector/Transforms/VectorUnroll.cpp
+4-0mlir/test/lib/Dialect/Vector/TestVectorTransforms.cpp
+2-1mlir/lib/Dialect/XeGPU/Transforms/XeGPUBlocking.cpp
+28-54 files

LLVM/project 9c2a3camlir/lib/Dialect/OpenACC/IR OpenACC.cpp, mlir/test/Dialect/OpenACC ops.mlir

[MLIR] Fix OpenACC parser crash with opaque pointers (#183521)

Fixes #181453
Fixes #181589
DeltaFile
+18-0mlir/test/Dialect/OpenACC/ops.mlir
+11-4mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
+29-42 files

LLVM/project 6bc7e21llvm/test/tools/llvm-readobj/ELF many-segments.test file-headers.test

fixup! [llvm-readobj, ELF] Support reading binary with more than PN_XNUM segments.
DeltaFile
+13-9llvm/test/tools/llvm-readobj/ELF/many-segments.test
+2-0llvm/test/tools/llvm-readobj/ELF/file-headers.test
+15-92 files

LLVM/project a8a6613llvm/lib/Target/AMDGPU GCNSchedStrategy.cpp

[AMDGPU][Scheduler] Fix compilation fail in EXPENSIVE_CHECKS (#183745)

Bug introduced by #182853 (`Remat` is now a pointer).
DeltaFile
+1-1llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
+1-11 files

LLVM/project 7402312llvm/lib/Target/SPIRV SPIRVInstructionSelector.cpp

[NFC][SPIRV] Fix compile warnings (#183725)

Fix compile warnings in SPIR-V 

```
llvm-project/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp:2882:26: warning: enumerated and non-enumerated type in conditional expression [-Wextra]
 2882 |         return IsFloatTy ? SPIRV::OpGroupNonUniformFMax : IntOp;
      |                ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
llvm-project/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp: In lambda function:
llvm-project/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp:2897:26: warning: enumerated and non-enumerated type in conditional expression [-Wextra]
 2897 |         return IsFloatTy ? SPIRV::OpGroupNonUniformFMin : IntOp;
      |                ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
DeltaFile
+4-4llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp
+4-41 files

LLVM/project 9210d70llvm/lib/CodeGen/MIRParser MIParser.cpp, llvm/test/CodeGen/MIR/Generic expected-unsigned.mir

[MIR] Error on signed integer in getUnsigned (#183171)

Previously we effectively took the absolute value of the APSInt, instead
diagnose the unexpected negative value.

Change-Id: I4efe961e7b29fdf1d5f97df12f8139aac12c9219
DeltaFile
+26-0llvm/test/CodeGen/MIR/Generic/expected-unsigned.mir
+4-1llvm/lib/CodeGen/MIRParser/MIParser.cpp
+30-12 files

LLVM/project bf3ab0dllvm/lib/Target/AMDGPU GCNSchedStrategy.cpp GCNRegPressure.cpp

[AMDGPU][Scheduler] Add `GCNRegPressure`-based methods to `GCNRPTarget` (#182853)

This adds a few methods to `GCNRPTarget` that can estimate/perform RP
savings based on `GCNRegPressure` instead of a single `Register`,
opening the door to model/incorporate more complex savings made up of
multiple registers of potentially different classes. The scheduler's
rematerialization stage now uses this new API.

Although there are no test changes this is not really NFC since register
pressure savings in the rematerialization stage are now computed through
`GCNRegPressure` instead of the stage itself. If anything this makes
them more consistent with the rest of the RP-tracking infrastructure.
DeltaFile
+51-53llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
+27-3llvm/lib/Target/AMDGPU/GCNRegPressure.cpp
+12-14llvm/lib/Target/AMDGPU/GCNSchedStrategy.h
+13-1llvm/lib/Target/AMDGPU/GCNRegPressure.h
+103-714 files

LLVM/project 72a1d86llvm/lib/Target/AMDGPU AMDGPUFeatures.td AMDGPU.td, llvm/lib/Target/AMDGPU/Utils AMDGPUBaseInfo.cpp

[AMDGPU] Use subtarget feature for flat offset bit width instead of arch checks
DeltaFile
+10-0llvm/lib/Target/AMDGPU/AMDGPUFeatures.td
+3-2llvm/lib/Target/AMDGPU/AMDGPU.td
+2-3llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+3-0llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
+18-54 files

LLVM/project cab10b5llvm/include/llvm/Object ELF.h, llvm/test/tools/llvm-readobj/ELF many-sections.s

fixup! [Object][ELF] Fix section header zero check
DeltaFile
+3-4llvm/include/llvm/Object/ELF.h
+1-1llvm/test/tools/llvm-readobj/ELF/many-sections.s
+4-52 files

LLVM/project 20df251llvm/runtimes CMakeLists.txt

[LLVM][Runtimes] Add 'llvm-gpu-loader' to dependency list (#183601)

Summary:
This is used to run the unit tests in libc / libc++. It must exist in
the build directory's binary path, but without this dependnecy we may
not build it before running the runtimes build. This should ensure that
it's present, and only if we have tests enabled.
DeltaFile
+1-0llvm/runtimes/CMakeLists.txt
+1-01 files