LLVM/project 013c9d5 — lld/MachO InputSection.h Dwarf.cpp, lld/test/MachO/invalid duplicate-symbol-debug-dwarf5.s

[lld-macho] Make printing DWARF 5 source locations work (#233946)

DWARF 5 line tables store directory and file names in __debug_line_str,
so we need to pass that through.

Morally ports 3832d7c25df912 from lld/ELF.
DeltaFile
+309-0lld/test/MachO/invalid/duplicate-symbol-debug-dwarf5.s
+2-0lld/MachO/Dwarf.h
+1-0lld/MachO/InputSection.h
+1-0lld/MachO/Dwarf.cpp
+313-04 files

LLVM/project 56ed7f8 — llvm/lib/Target/X86 X86InstrFoldTables.cpp, llvm/test/TableGen x86-fold-tables.inc

[X86] Generate X86MemUnfoldTable at compile time. NFC (#235442)

This is a table for memory->register unfolding. Previously we computed
this table lazily at runtime which involved sorting it. However we can
just compute it in TableGen and save geomean 0.30% compile time on
stage2-O3 builds:
https://llvm-compile-time-tracker.com/compare.php?from=2b6e769dd3add8bbd8d8be60e59f8d7e5f30ec54&to=b6594131545c6de101ef37570ac6892edabad6c7&stat=instructions:u

It doesn't make much of a difference for LTO builds since the table is
only computed once in the link step, but for non-LTO builds where there
are many codegen phases this helps.
The Clang binary size increases by 113KiB for arm64 Release + asserts,
which seems negligible (0.06% overall)

Assisted-by: Opus 5.5
DeltaFile
+9,687-0llvm/test/TableGen/x86-fold-tables.inc
+2-69llvm/lib/Target/X86/X86InstrFoldTables.cpp
+55-1llvm/utils/TableGen/X86FoldTablesEmitter.cpp
+9,744-703 files

LLVM/project 21a84a5 — llvm/lib/Target/PowerPC PPCTargetMachine.cpp PPCTLSDynamicCall.cpp, llvm/test/CodeGen/PowerPC O3-pipeline.ll O0-pipeline.ll

PowerPC: Remove LiveVariables run and unused LiveIntervals requirement

PPCTLSDynamicCall has not used LiveIntervals since 3ff319c69047, but
still required the analysis. LiveIntervals requires there to be no
unreachable blocks or otherwise it asserts. These blocks were
indirectly removed by adding the extra LiveVariables run, because
LiveVariables has a declared requirement on
UnreachableMachineBasicBlockElim.

Drop the dead analysis requirements along with the LiveVariables run.
This also avoids computing LiveIntervals at -O0 for PIC. This is
still broken if the pipeliner is explicitly enabled on optnone
functions which requires a separate fix.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+54-0llvm/test/CodeGen/PowerPC/tls-dynamic-call-unreachable-block.ll
+24-0llvm/test/CodeGen/PowerPC/tls-dynamic-call-unreachable-block-optnone.ll
+2-9llvm/lib/Target/PowerPC/PPCTLSDynamicCall.cpp
+1-7llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
+0-5llvm/test/CodeGen/PowerPC/O0-pipeline.ll
+0-4llvm/test/CodeGen/PowerPC/O3-pipeline.ll
+81-256 files

LLVM/project d24d5c9 — mlir/lib/Dialect/SCF/IR SCF.cpp, mlir/test/Dialect/SCF canonicalize.mlir

[mlir][scf] Propagate if conditions to captured select uses (#235433)

## Summary

Simplify branch-local uses of `arith.select` when an enclosing `scf.if`
uses the same scalar condition. A use in the then region takes the
select's true operand, and a use in the else region takes its false
operand. The rule also covers uses nested in those regions and preserves
uses outside the if.

For example:

```python
%x = arith.select %p, %a, %b : i32
scf.if %p {
  func.call @consume(%x) : (i32) -> ()
} else {
  func.call @consume(%x) : (i32) -> ()
}

    [26 lines not shown]
DeltaFile
+276-0mlir/test/Dialect/SCF/canonicalize.mlir
+28-1mlir/lib/Dialect/SCF/IR/SCF.cpp
+304-12 files

LLVM/project 62141d5 — libcxx/test/libcxx/lldb vector_bool_formatter.sh.test map_formatter.sh.test, libcxx/utils/lldb/libcxx libcxx.py libcxx_vector_formatter.py

[libc++][lldb] Add initial LLDB data-formatters (#187677)

Add synthetic child providers for `std::map` and `std::vector`. These
were translated from C++ into Python (with the help of Claude).

Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
Co-authored-by: Louis Dionne <ldionne.2 at gmail.com>
Co-authored-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+417-0libcxx/utils/lldb/libcxx/libcxx_map_formatter.py
+219-0libcxx/utils/lldb/libcxx/libcxx_vector_formatter.py
+170-0libcxx/test/libcxx/lldb/vector_formatter.sh.test
+56-0libcxx/utils/lldb/libcxx/libcxx.py
+41-0libcxx/test/libcxx/lldb/map_formatter.sh.test
+39-0libcxx/test/libcxx/lldb/vector_bool_formatter.sh.test
+942-03 files not shown
+996-09 files

LLVM/project 5459e31 — flang/include/flang/Evaluate match.h type.h, flang/lib/Evaluate initial-image.cpp

[flang] Update comments for runtime KIND representation
DeltaFile
+4-5flang/include/flang/Evaluate/tools.h
+3-4flang/include/flang/Evaluate/expression.h
+2-3flang/include/flang/Evaluate/type.h
+2-2flang/include/flang/Evaluate/match.h
+1-1flang/lib/Semantics/expression.cpp
+1-1flang/lib/Evaluate/initial-image.cpp
+13-166 files

LLVM/project b965c27 — llvm/include/llvm/DebugInfo/GSYM DwarfTransformer.h, llvm/include/llvm/DebugInfo/PDB/Native NamedStreamMap.h

[llvm] Remove forward and friend declarations of non-existent types (NFC) (#235397)

This patch removes forward and friend declarations of classes and
structs that are not defined anywhere in the codebase.

Assisted-by: Antigravity
DeltaFile
+0-5llvm/include/llvm/ExecutionEngine/Orc/LinkGraphLinkingLayer.h
+0-2llvm/tools/dsymutil/RelocationMap.h
+0-2llvm/lib/Support/Z3Solver.cpp
+0-2llvm/include/llvm/Remarks/BitstreamRemarkSerializer.h
+0-2llvm/include/llvm/DebugInfo/PDB/Native/NamedStreamMap.h
+0-2llvm/include/llvm/DebugInfo/GSYM/DwarfTransformer.h
+0-156 files not shown
+0-2112 files

LLVM/project a55a868 — clang/lib/AST Decl.cpp TemplateName.cpp, clang/lib/AST/ByteCode DeclOrExpr.h

[clang] Replace PointerUnion::dyn_cast with llvm::dyn_cast (NFC) (#235396)

PointerUnion::dyn_cast has been soft-deprecated in favor of
llvm::dyn_cast and llvm::dyn_cast_if_present.  This patch replaces
PointerUnion::dyn_cast with llvm::dyn_cast at 7 call sites across 3
files under clang/lib/AST/.

All tests in check-clang pass with these changes, and LLM-based static
analysis of the surrounding data structures and call sites confirms that
the PointerUnion operand at each site is nonnull either by construction
or because callers ensure it is nonnull before reaching llvm::dyn_cast.

Assisted-by: Antigravity
DeltaFile
+5-5clang/lib/AST/TemplateName.cpp
+2-2clang/lib/AST/ByteCode/DeclOrExpr.h
+1-1clang/lib/AST/Decl.cpp
+8-83 files

LLVM/project beb5396 — flang/include/flang/Evaluate tools.h match.h

[flang] Fix grammar in Evaluate comments
DeltaFile
+3-3flang/include/flang/Evaluate/expression.h
+1-1flang/include/flang/Evaluate/tools.h
+1-1flang/include/flang/Evaluate/match.h
+5-53 files

LLVM/project 9425cf9 — clang-tools-extra/clang-tidy/bugprone CrtpConstructorAccessibilityCheck.cpp, clang-tools-extra/docs ReleaseNotes.md

[clang-tidy] Fix crash and invalid fix-its in bugprone-crtp-constructor-accessibility (#232163)

The fix-it puts `private:` at `getBeginLoc().getLocWithOffset(-1)` and
the old access specifier at `getEndLoc().getLocWithOffset(1)`. Stepping
back one character is what breaks:

- When the constructor starts with a macro, as in the issue, -1 leaves
the macro's SLocEntry. If the entry before it is a file, assertion
builds crash in `isMacroArgExpansion`. If it's a macro argument, nothing
asserts and `--fix` writes `private:` into that argument, so `ID(1)`
becomes `ID(1private:`.
- Without macros, `private:` gets glued onto whatever comes before the
constructor: `public:CRTP() {}` becomes `publicprivate:`, an empty
`CONSTEXPR` macro becomes `CONSTEXPRprivate:` (7 of the 12 `private:`
insertions in Boost's `date_time` at `-std=c++11`), and an unindented
constructor after a `// comment` line gets it inside the comment.

Crash repro:


    [29 lines not shown]
DeltaFile
+24-17clang-tools-extra/clang-tidy/bugprone/CrtpConstructorAccessibilityCheck.cpp
+40-0clang-tools-extra/test/clang-tidy/checkers/bugprone/crtp-constructor-accessibility-macro.cpp
+14-0clang-tools-extra/test/clang-tidy/checkers/bugprone/crtp-constructor-accessibility.cpp
+5-0clang-tools-extra/docs/ReleaseNotes.md
+83-174 files

LLVM/project 72bde89 — compiler-rt/lib/copyprof copyprof.cpp CMakeLists.txt, compiler-rt/lib/copyprof/tests copyprof_state_test.cpp

[CopyProf] Intercept new/delete and track per-object cost.

This intercepts the C++ `new` and `delete` operators, so that all
heap memory owned by a copy is tracked.

Using per-object state tracking, reports now tell the user how much
accumulated memory a copy is worth and whether it allocated.
This is useful for filtering of reports.

RFC: https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
DeltaFile
+139-0compiler-rt/lib/copyprof/copyprof_new_delete.cpp
+102-0compiler-rt/lib/copyprof/tests/copyprof_state_test.cpp
+70-0compiler-rt/lib/copyprof/copyprof_per_object_state.cpp
+44-0compiler-rt/lib/copyprof/copyprof_per_object_state.h
+23-0compiler-rt/lib/copyprof/CMakeLists.txt
+17-5compiler-rt/lib/copyprof/copyprof.cpp
+395-57 files not shown
+440-1813 files

LLVM/project c04b418 — compiler-rt/lib/copyprof copyprof_internal.h copyprof_interceptors.cpp, compiler-rt/lib/copyprof/tests copyprof_state_test.cpp

[CopyProf] Intercept C heap functions.

A copy that owns heap memory is only unnecessary if that memory is not
modified either. This intercepts the libc heap functions and routes them
to the CopyProf allocator, which marks memory allocated while copying as
copy, and checks the shadow memory of memory freed during destruction.

Memory allocated inside a d'tor is marked as copy as well, so that
freeing temporaries does not suppress reports.

Now that `malloc` is intercepted, `strndup` and `realpath` are
intercepted as well.

RFC: https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
DeltaFile
+197-0compiler-rt/lib/copyprof/tests/copyprof_state_test.cpp
+182-0compiler-rt/lib/copyprof/copyprof_malloc_linux.cpp
+15-4compiler-rt/lib/copyprof/copyprof_allocator.cpp
+10-8compiler-rt/lib/copyprof/copyprof_state.h
+2-7compiler-rt/lib/copyprof/copyprof_interceptors.cpp
+4-0compiler-rt/lib/copyprof/copyprof_internal.h
+410-192 files not shown
+415-198 files

LLVM/project 5e83b60 — compiler-rt/lib/copyprof copyprof.cpp CMakeLists.txt, compiler-rt/lib/copyprof/tests CMakeLists.txt copyprof_allocator_test.cpp

[CopyProf] Add standalone allocator.

Detecting modifications of heap memory owned by a copy requires hooking
all (de)allocations and knowing allocation sizes. This adds a CopyProf
specific allocator based on the sanitizer_common allocator.

It provides surrogates for the libc heap functions, which are hooked up
to interceptors in a subsequent patch.

RFC: https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
Previous PR: #232851
DeltaFile
+312-0compiler-rt/lib/copyprof/copyprof_allocator.cpp
+227-0compiler-rt/lib/copyprof/tests/copyprof_allocator_test.cpp
+45-0compiler-rt/lib/copyprof/copyprof_allocator.h
+2-0compiler-rt/lib/copyprof/copyprof.cpp
+2-0compiler-rt/lib/copyprof/CMakeLists.txt
+1-0compiler-rt/lib/copyprof/tests/CMakeLists.txt
+589-06 files

LLVM/project 8797061 — compiler-rt/lib/copyprof copyprof_internal.h copyprof_interceptors.cpp, compiler-rt/lib/copyprof/tests copyprof_state_test.cpp

[CopyProf] Intercept C heap functions.

A copy that owns heap memory is only unnecessary if that memory is not
modified either. This intercepts the libc heap functions and routes them
to the CopyProf allocator, which marks memory allocated while copying as
copy, and checks the shadow memory of memory freed during destruction.

Memory allocated inside a d'tor is marked as copy as well, so that
freeing temporaries does not suppress reports.

Now that `malloc` is intercepted, `strndup` and `realpath` are
intercepted as well.

RFC: https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
DeltaFile
+197-0compiler-rt/lib/copyprof/tests/copyprof_state_test.cpp
+182-0compiler-rt/lib/copyprof/copyprof_malloc_linux.cpp
+15-4compiler-rt/lib/copyprof/copyprof_allocator.cpp
+10-8compiler-rt/lib/copyprof/copyprof_state.h
+2-7compiler-rt/lib/copyprof/copyprof_interceptors.cpp
+4-0compiler-rt/lib/copyprof/copyprof_internal.h
+410-192 files not shown
+415-198 files

LLVM/project bad9649 — compiler-rt/lib/copyprof copyprof.cpp CMakeLists.txt, compiler-rt/lib/copyprof/tests CMakeLists.txt copyprof_allocator_test.cpp

[CopyProf] Add standalone allocator.

Detecting modifications of heap memory owned by a copy requires hooking
all (de)allocations and knowing allocation sizes. This adds a CopyProf
specific allocator based on the sanitizer_common allocator.

It provides surrogates for the libc heap functions, which are hooked up
to interceptors in a subsequent patch.

RFC: https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
Previous PR: #232851
DeltaFile
+312-0compiler-rt/lib/copyprof/copyprof_allocator.cpp
+226-0compiler-rt/lib/copyprof/tests/copyprof_allocator_test.cpp
+45-0compiler-rt/lib/copyprof/copyprof_allocator.h
+2-0compiler-rt/lib/copyprof/copyprof.cpp
+2-0compiler-rt/lib/copyprof/CMakeLists.txt
+1-0compiler-rt/lib/copyprof/tests/CMakeLists.txt
+588-06 files

LLVM/project 4d31337 — compiler-rt/lib/copyprof copyprof.cpp CMakeLists.txt, compiler-rt/lib/copyprof/tests copyprof_state_test.cpp

[CopyProf] Intercept new/delete and track per-object cost.

This intercepts the C++ `new` and `delete` operators, so that all
heap memory owned by a copy is tracked.

Using per-object state tracking, reports now tell the user how much
accumulated memory a copy is worth and whether it allocated.
This is useful for filtering of reports.

RFC: https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
DeltaFile
+139-0compiler-rt/lib/copyprof/copyprof_new_delete.cpp
+102-0compiler-rt/lib/copyprof/tests/copyprof_state_test.cpp
+70-0compiler-rt/lib/copyprof/copyprof_per_object_state.cpp
+44-0compiler-rt/lib/copyprof/copyprof_per_object_state.h
+23-0compiler-rt/lib/copyprof/CMakeLists.txt
+17-5compiler-rt/lib/copyprof/copyprof.cpp
+395-57 files not shown
+440-1813 files

LLVM/project 54a695f — llvm/lib/Target/AMDGPU AMDGPUTargetTransformInfo.cpp, llvm/test/Analysis/CostModel/AMDGPU packed-fp32-shuffle.ll packed-fp32-insertelement.ll

[AMDGPU][TTI] Refine gfx9 packed FP32 SLP costs for pair formation and shuffles (#208572)

On targets with packed f32 operations (hasAnyPackedFP32Ops), for throughput only: an insertelement of a computed f32 into an <N x float> costs one v_mov_b32 at any width. Load-fed lanes, arguments, constants are still free.
An f32 shuffle is costed the same way. 
This makes SLP reject compute-fed gathers and cross-half shuffles that only look cheap because of the packed-arithmetic discount, while keeping profitable load-fed pairing.

Preliminary work and idea by Michael Selehov.

---------

Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+192-0llvm/test/Analysis/CostModel/AMDGPU/packed-fp32-insertelement.ll
+182-0llvm/test/Analysis/CostModel/AMDGPU/packed-fp32-shuffle.ll
+139-0llvm/test/Transforms/SLPVectorizer/AMDGPU/packed-fp32-insert-cost.ll
+48-0llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+18-3llvm/test/Transforms/SLPVectorizer/AMDGPU/complex-mul-fma.ll
+579-35 files

LLVM/project 232cf1d — flang/lib/Evaluate variable.cpp, flang/unittests/Evaluate expression.cpp

[flang] Compare runtime KIND in Designator equality
DeltaFile
+7-0flang/unittests/Evaluate/expression.cpp
+1-1flang/lib/Evaluate/variable.cpp
+8-12 files

LLVM/project d66ce18 — llvm/lib/Transforms/InstCombine InstructionCombining.cpp InstCombineCasts.cpp, llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Fold `bitextract` of a vector to `extractelement` or `shufflevector`
DeltaFile
+108-58llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+44-0llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+20-0llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+172-583 files

LLVM/project 3c499d9 — llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Pre-commit tests for `bitextract` of a vector
DeltaFile
+298-0llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+298-01 files

LLVM/project 3077043 — compiler-rt/lib/copyprof copyprof_preinit.cpp copyprof_interceptors_memintrinsics.h, compiler-rt/lib/copyprof/tests copyprof_state_test.cpp

[CopyProf] Add libc interceptors.

A copy is reported as unnecessary if neither the object nor any memory
it owns is modified before it is destroyed. So far, writes by
uninstrumented code, most importantly library functions (e.g. `memcpy`,
`memset`, etc.), are not accounted for, which leads to false positives.
Interceptors make these writes visible.

Additionally, objects constructed inside a d'tor are now marked as copy,
so that destroying temporaries (e.g. a string built for a log message)
does not suppress reports.

Note that `strndup` and `realpath` are not intercepted yet, as their
interceptors allocate memory via the `malloc` interceptor, which is only
added in a subsequent patch.

RFC:
https://discourse.llvm.org/t/rfc-copysanitizer-csan-detecting-unneccessary-object-copies-at-runtime/91038
Previous PR: #225905
DeltaFile
+112-0compiler-rt/lib/copyprof/copyprof_interceptors.cpp
+66-33compiler-rt/lib/copyprof/tests/copyprof_state_test.cpp
+78-0compiler-rt/lib/copyprof/copyprof_interceptors_memintrinsics.cpp
+40-0compiler-rt/lib/copyprof/copyprof_interceptors.h
+30-0compiler-rt/lib/copyprof/copyprof_interceptors_memintrinsics.h
+23-0compiler-rt/lib/copyprof/copyprof_preinit.cpp
+349-335 files not shown
+405-4111 files

LLVM/project 62e4899 — llvm/lib/CodeGen TargetLoweringObjectFileImpl.cpp, llvm/test/CodeGen/M68k eh-pic-encoding.ll

[M68k] Use PC-relative EH pointer encodings under PIC (#235347)

The function `TargetLoweringObjectFileELF::initialize` has no `case`
branch for `m68k`, meaning the default absolute encoding is used for the
personality/lsda/type-info pointers: `DW_EH_PE_absptr`. IN a PIE or
shared lib, those pointers then need `R_68K_32` dynamic relocations in
`.eh_frame` and `.gcc_except_table` which are read-only, so a link with
the flag `-z text` fails - that flag is default for PIE. Error:
```
ld: read-only segment has dynamic relocations
```

This PR adds `m68k` to the existing `x86/ppc` case, selecting
`indirect/pcrel/sdata4` for the personality and `pcrel/sdata4` for
the LSDA (under PIC, and `absptr` otherwise). With the change, the
`.eh_frame` relocations for a PIC function with a personality and lsda
are `R_68K_PC32`, not `R_68K_32` as before. The new test checks both
relocation models.


    [3 lines not shown]
DeltaFile
+38-0llvm/test/CodeGen/M68k/eh-pic-encoding.ll
+1-0llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+39-02 files

LLVM/project 4a43ff4 — llvm/lib/Transforms/Utils VNCoercion.cpp, llvm/test/Transforms/GVN pr14166.ll pr63059.ll

[GVN] Don't coerce forwarded vectors through integers

A vector is poisoned per lane, but an integer is poisoned as a whole. So
casting a forwarded vector to an integer let a poison lane outside of the
loaded bytes poison the loaded value. Forward vectors through bytes and
`bitextract` instead.

Fixes #99268.
Fixes #209935.
DeltaFile
+65-100llvm/test/Transforms/GVN/vector-poison.ll
+48-63llvm/test/Transforms/GVN/pr63059.ll
+17-5llvm/lib/Transforms/Utils/VNCoercion.cpp
+0-1llvm/test/Transforms/GVN/pr14166.ll
+130-1694 files

LLVM/project 558763d — llvm/test/Transforms/GVN vector-poison.ll

[GVN] Pre-commit tests for forwarding part of a vector
DeltaFile
+519-0llvm/test/Transforms/GVN/vector-poison.ll
+519-01 files

LLVM/project 87e44ea — llvm/lib/Transforms/InstCombine InstructionCombining.cpp InstCombineCasts.cpp, llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Fold `bitextract` of a vector to `extractelement` or `shufflevector`
DeltaFile
+141-74llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+42-0llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+24-0llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+207-743 files

LLVM/project aaa2c08 — mlir/lib/Dialect/Linalg/IR LinalgOps.cpp, mlir/test/Dialect/Linalg canonicalize.mlir

[mlir][linalg] Extend FoldReduceBroadcast to float maximumf/minimumf (#233417)

Extend `FoldReduceBroadcast` to fold `reduce(broadcast(x))` into `x`
for `arith.maximumf`/`arith.minimumf` when the init is the identity
(`-inf`/`+inf`). The identity check gains a `FloatAttr` branch.

Safety: `maximumf(-inf, x) == x` for all values — finite, ±inf,
-0.0, and NaN (NaN-propagating semantics). Only an exact ±inf init
passes the check; finite/NaN inits are rejected by negative tests.
`maxnumf`/`minnumf` are deliberately excluded: they ignore NaN, so
`reduce(broadcast(NaN))` with init `-inf` would yield `-inf`, not NaN
(covered by a negative test).

Assisted-by: AI.
DeltaFile
+116-2mlir/test/Dialect/Linalg/canonicalize.mlir
+22-0mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
+138-22 files

LLVM/project d5de383 — llvm/lib/Transforms/Scalar SROA.cpp, llvm/test/Transforms/SROA byte-conversion-big-endian.ll byte-conversion.ll

[SROA] Don't widen byte values through integers
DeltaFile
+228-15llvm/lib/Transforms/Scalar/SROA.cpp
+19-62llvm/test/Transforms/SROA/byte-conversion.ll
+7-23llvm/test/Transforms/SROA/byte-conversion-big-endian.ll
+254-1003 files

LLVM/project 12293d3 — llvm/test/Transforms/SROA byte-conversion-big-endian.ll byte-conversion.ll

[SROA] Pre-commit tests for byte conversions
DeltaFile
+476-0llvm/test/Transforms/SROA/byte-conversion.ll
+99-0llvm/test/Transforms/SROA/byte-conversion-big-endian.ll
+575-02 files

LLVM/project fdd67fa — llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Pre-commit tests for `bitextract` of a vector
DeltaFile
+352-0llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+352-01 files

LLVM/project cced08f — llvm/lib/Transforms/InstCombine InstCombineInternal.h InstructionCombining.cpp, llvm/test/Transforms/InstCombine bitinsert-bitextract.ll

[InstCombine] Fold full-width `bitinsert` and `bitextract` to `bitcast` (#229147)

Add InstCombine visitors for `bitinsert` and `bitextract`.
A full-width `bitextract` or `bitinsert` at offset zero becomes a
`bitcast`.

```llvm
%a = bitextract i64, b64 %x, i32 0                ; bitcast b64 %x to i64
%b = bitinsert b64 %x, ptr %y, i32 0              ; bitcast ptr %y to b64
%c = bitextract ptr addrspace(1), b32 %x, i32 0   ; bitcast b32 %x to ptr addrspace(1)
```
DeltaFile
+150-0llvm/test/Transforms/InstCombine/bitinsert-bitextract.ll
+31-0llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+2-0llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+183-03 files