LLVM/project 57ef7d5 — clang/docs ReleaseNotes.md, clang/lib/Sema SemaTemplateDeduction.cpp

[Clang] Fix pack vs non-pack tie breaker. (#229024)

The tentative resolution for CWG1432 was not consistent for the
resolution of CWG1395.

This fixes the crash reported in #228870.

Additionally, this update the status of related core issues and papers
touching the same wording. Clang was never affected because we never
fully implemented CWG1395.

Fixes #228870
Fixes #27357

Assisted-by: Opus 5.5
DeltaFile
+17-0clang/test/SemaTemplate/partial-order.cpp
+12-4clang/lib/Sema/SemaTemplateDeduction.cpp
+13-0clang/test/SemaCXX/cxx2d-pack-indexing-template.cpp
+13-0clang/test/CXX/drs/cwg18xx.cpp
+4-0clang/test/CXX/drs/cwg13xx.cpp
+4-0clang/docs/ReleaseNotes.md
+63-42 files not shown
+65-68 files

LLVM/project bd55ada — llvm/test/Transforms/SLPVectorizer/RISCV reversed-widened-strided-load.ll

[SLP][NFC]Add a test with the incorrect vectorization, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/230488
DeltaFile
+79-0llvm/test/Transforms/SLPVectorizer/RISCV/reversed-widened-strided-load.ll
+79-01 files

LLVM/project 2acc171 — llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp, llvm/test/Analysis/CostModel/AArch64 sve-fptoi.ll sve-bitcast.ll

[AArch64][CostModel] Consider some nxv1 casts as illegal (#230153)

Codegen does not support all kinds of casts for these types.

This patch adds missing costmodel and codedgen tests.
DeltaFile
+164-0llvm/test/CodeGen/AArch64/sve-sext-zext.ll
+52-0llvm/test/CodeGen/AArch64/sve-bitcast.ll
+51-0llvm/test/Analysis/CostModel/AArch64/sve-itofp.ll
+10-6llvm/test/Analysis/CostModel/AArch64/sve-fptoi.ll
+16-0llvm/test/Analysis/CostModel/AArch64/sve-bitcast.ll
+16-0llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+309-62 files not shown
+319-68 files

LLVM/project 187dec7 — llvm/test/CodeGen/X86 mask-beforefirst.ll

Don't use mask types in arguments or return
DeltaFile
+207-180llvm/test/CodeGen/X86/mask-beforefirst.ll
+207-1801 files

LLVM/project ef05fab — flang-rt CMakeLists.txt, libclc/cmake/modules AddLibclc.cmake

[flang-rt][libclc] Install multilib variants in their own directory (#230251)

A multilib runtimes build sets <PROJECT>_LIBDIR_SUBDIR. flang-rt
libraries and libclc bitcode were installed with the same name as the
base library. This doesn't really work for `libclc` because the clang
driver doesn't look through multilibs currently, but it should still go
somewhere else so it doesn't clobber.
DeltaFile
+6-1libclc/cmake/modules/AddLibclc.cmake
+7-0flang-rt/CMakeLists.txt
+13-12 files

LLVM/project 170b564 — offload/include PluginManager.h, offload/include/OpenMP OffloadRTL.h

[offload][nfc] Pull OpenMP's InteropTbl out of PluginManager

PluginManager is shared with OpenACC, so the OpenMP interop table moves
to OmpPluginManager in libomptarget. The OpenMP PM is defined there, and
interop cleanup is registered from initRuntime.
DeltaFile
+12-4offload/libomptarget/OffloadRTL.cpp
+10-1offload/include/OpenMP/OffloadRTL.h
+0-7offload/libompaccsupport/PluginManager.cpp
+0-5offload/include/PluginManager.h
+22-174 files

LLVM/project 3530621 — offload/include PluginManager.h device.h, offload/include/OpenMP OffloadRTL.h

[offload][nfc] Use the PluginManager instance instead of the global PM

PluginManager methods referred to the global PM pointer instead of the
object they were called on. DeviceTy now carries the PluginManager that
created it. Move the PM definition and the RTL atomics to OffloadRTL.
DeltaFile
+27-28offload/libompaccsupport/PluginManager.cpp
+24-0offload/include/OpenMP/OffloadRTL.h
+4-4offload/libompaccsupport/Mapping.cpp
+4-1offload/include/device.h
+0-4offload/include/PluginManager.h
+2-2offload/libompaccsupport/device.cpp
+61-395 files not shown
+67-4211 files

LLVM/project f8470a9 — clang/include/clang/CIR/Dialect/IR CIRTypeConstraints.td CIROps.td, clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp

[CIR][Matrix] Implement vector splat/add for CIR lowering (#230185)

This patch extends cir.add/cir.fadd to work on matrixes of int/float,
and lower correctly to add/fadd in LLVMIR.

It also extends cir.vec.splat to work with a matrix as well, so we could
get mixed-matrix-int/float operations to work. I considered making this
its own operation, however it is so nearly identical to cir.vec.splat
(and will become more so as we extend matrix) that it didn't seem
valuable to consider it separately, particularly as they lower to the
same things in LLVM.

One limitation: Splat is sometimes constant-folded during simplify.
However, we don't yet have a constant attribute type for a matrix, so
this is left for future work.
DeltaFile
+207-0clang/test/CIR/CodeGen/matrix-add.c
+70-0clang/test/CIR/Lowering/matrix-add.cir
+52-0clang/test/CIR/IR/invalid-matrix.cir
+23-21clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+23-13clang/include/clang/CIR/Dialect/IR/CIROps.td
+29-1clang/include/clang/CIR/Dialect/IR/CIRTypeConstraints.td
+404-354 files not shown
+461-3910 files

LLVM/project 3c109cf — llvm/lib/Target/RISCV RISCVISelLowering.cpp, llvm/test/CodeGen/RISCV/rvv fixed-vectors-mask-beforefirst.ll

[RISCV] Custom lower fixed length mask_beforefirst

Rather than add a new _VL node, just put it in a scalable container with VLMAX so it gets the scalable vmsbf.m pattern. RISCVVLOptimizer can optimize the VL of it based on its users.
DeltaFile
+114-103llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-beforefirst.ll
+5-2llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+119-1052 files

LLVM/project 07dc962 — llvm/docs LangRef.md ReleaseNotes.md, llvm/include/llvm/IR IntrinsicsX86.td

[X86] Declare memory effects for the AMX intrinsics (#229025)

The AMX intrinsics that name tile registers (`llvm.x86.tileloadd64`,
`llvm.x86.tdpbssd` and the rest of the non-`_internal` forms) have no
memory attributes, so to the optimizer every call may read and write any
memory. A loop-invariant value that lives in memory is reloaded after
every tile instruction, a store isn't forwarded past a tile load, and
two reads of the same tile row aren't merged.

This PR models the tile registers and the tile configuration as
`target_mem0`, the way AArch64 models SME's ZT0 and ZA
(`target_mem0`/`target_mem1`; `SME_Load_Intrinsic` is
`[IntrRead<[ArgMem, ZA]>, IntrWrite<[ZA]>]`), and declares what each
intrinsic actually does:

| Intrinsics | Reads | Writes |
|---|---|---|
| `tileloadd64`, `tileloaddt164`, `tileloaddrs64`, `tileloaddrst164` |
pointer argument, tile state | tile state |

    [63 lines not shown]
DeltaFile
+115-74llvm/include/llvm/IR/IntrinsicsX86.td
+130-0llvm/test/Transforms/LICM/X86/amx-memory-effects.ll
+86-0llvm/test/Transforms/EarlyCSE/X86/amx-tile-state.ll
+6-0llvm/docs/ReleaseNotes.md
+2-1llvm/docs/LangRef.md
+2-0llvm/test/Transforms/LICM/X86/lit.local.cfg
+341-756 files

LLVM/project 43c3bf2 — llvm/include/llvm/CodeGen MachineBasicBlock.h, llvm/lib/CodeGen MachineBasicBlock.cpp PHIElimination.cpp

CodeGen: Only visit live-out vregs when splitting a critical edge with LIS (#230441)

To update LiveIntervals, SplitCriticalEdge checked every virtual
register in the function for liveness at the end of the split block.
That made PHIElimination's edge splitting O(splits * vregs).

PHIElimination now computes the set of virtual registers live out of
each block before the first split and passes it through
SplitCriticalEdgeAnalyses. Only those registers are visited, and the set
for the new block is added once the intervals are updated.

This essentially resurrects the per-block sparse register sets used to
update LiveVariables, which were removed in #228618 and #230147, applied
to the LiveIntervals update instead.

Instructions retired in phi-node-elimination, x86_64 -O3, on a generated
chain of N compare blocks branching to a shared PHI block:

  N     before          after           after/before

    [11 lines not shown]
DeltaFile
+26-10llvm/lib/CodeGen/PHIElimination.cpp
+22-5llvm/lib/CodeGen/MachineBasicBlock.cpp
+7-0llvm/include/llvm/CodeGen/MachineBasicBlock.h
+55-153 files

LLVM/project 35eee97 — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Transforms/IndVarSimplify lftr-reuse-long-chain.ll

[SCEVExp] Only count instructions needing analysis in reuse budget. (#230446)

canReuseInstruction gave up once it had visited 16 values, counting
constants and values already known to be poison-contributors of S. These
values are not walked any further, so only charge the instructions we
have to analyze operands of.

This improves re-use across a number of workloads end-to-end:
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/1624

I noticed this while invesigating missed re-use after changing operand
order in SCEV (https://github.com/llvm/llvm-project/pull/230252)

Compile-time impact in the noise

https://llvm-compile-time-tracker.com/compare.php?from=10d4b33fe57fecd864b7f9dbdfa558ae2f1329ad&to=0a29e64eaf5e64e683a81529323428d9b111751d&stat=instructions:u

PR: https://github.com/llvm/llvm-project/pull/230446
DeltaFile
+240-0llvm/test/Transforms/IndVarSimplify/lftr-reuse-long-chain.ll
+5-4llvm/lib/Analysis/ScalarEvolution.cpp
+245-42 files

LLVM/project bd4933d — llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp, llvm/test/MC/AArch64 armv8.5a-mte-error.s basic-a64-diagnostics.s

fixup! And fix all the other cases
DeltaFile
+69-69llvm/test/MC/AArch64/basic-a64-diagnostics.s
+53-53llvm/test/MC/AArch64/armv8.5a-mte-error.s
+37-29llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+16-16llvm/test/MC/AArch64/SVE/st1h-diagnostics.s
+16-16llvm/test/MC/AArch64/SVE/ld1h-diagnostics.s
+14-14llvm/test/MC/AArch64/SVE/st1w-diagnostics.s
+205-197113 files not shown
+667-659119 files

LLVM/project 1718697 — llvm/test/MC/AArch64 armv9.8a-cflt-diagnostics.s arm64-diags.s, llvm/test/MC/AArch64/SVE str-diagnostics.s ldr-diagnostics.s

[AArch64][llvm] Fix incorrect diagnostic (index/immediate in simm9)

Improve the error message in the simm9 diagnostics and use the word
'immediate' instead of 'index'. This was noticed when creating the
CFLT instructions for Armv9.8-A, but would have caused a lot of
unrelated churn if merged as part of that change.

Co-authored-by: Martin Wehking <martin.wehking at arm.com>
DeltaFile
+82-82llvm/test/MC/AArch64/basic-a64-diagnostics.s
+39-39llvm/test/MC/AArch64/armv8.4a-ldst-error.s
+5-5llvm/test/MC/AArch64/arm64-diags.s
+4-4llvm/test/MC/AArch64/SVE/str-diagnostics.s
+4-4llvm/test/MC/AArch64/SVE/ldr-diagnostics.s
+2-2llvm/test/MC/AArch64/armv9.8a-cflt-diagnostics.s
+136-1361 files not shown
+137-1377 files

LLVM/project 8d8be2b — llvm/lib/Target/AArch64 AArch64InstrFormats.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

[AArch64][llvm] Fix constant expressions in CMPBR immediate aliases

Use the standard immediate parser for CMPBR aliases so that parenthesized
expressions and explicit unary plus are accepted. This also simplifies
the amount of code required, since we can remove `tryParseAdjImm0_63`,
and reuse code in `AdjImmAsmOperand` which does the same job.

Check immediates in their original ranges and apply the adjustment
when rendering MC operands. Add coverage for constant expressions in
`cbge`, `cbhs`, `cble` and `cbls`.
DeltaFile
+14-24llvm/lib/Target/AArch64/AArch64InstrFormats.td
+0-35llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+13-0llvm/test/MC/AArch64/CMPBR/cmpbr_aliases.s
+27-593 files

LLVM/project f13be6d — llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp, llvm/test/MC/AArch64 armv8.5a-mte-error.s armv9.8a-cflt-diagnostics.s

[AArch64][llvm] Improve diagnostics for invalid operands

Return `DiagnosticPredicate` from `isSImm()`, `isImmInRange()`, and
`isUImm12Offset()` so invalid operand types do not produce misleading
immediate range errors, while out-of-range constants retain their
range diagnostics.

Keep the load/store fallback predicate boolean and remove the
CFLT-specific diagnostic workaround. Update affected diagnostic
tests and add prefetch and CFLT regression testcases.
DeltaFile
+16-17llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+14-14llvm/test/MC/AArch64/basic-a64-diagnostics.s
+5-5llvm/test/MC/AArch64/neon-diagnostics.s
+9-0llvm/test/MC/AArch64/armv9.8a-cflt-diagnostics.s
+3-3llvm/test/MC/AArch64/SME2p1/zero-diagnostics.s
+2-2llvm/test/MC/AArch64/armv8.5a-mte-error.s
+49-4121 files not shown
+71-6327 files

LLVM/project 8071eb4 — llvm/lib/Target/AArch64 AArch64InstrFormats.td

fixup! Remove UImm6Plus1Operand and UImm6Minus1Operand
DeltaFile
+8-11llvm/lib/Target/AArch64/AArch64InstrFormats.td
+8-111 files

LLVM/project df8ea84 — llvm/lib/Target/AArch64 AArch64InstrInfo.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

[AArch64][llvm] Armv9.8-A: Add support for FEAT_RLCS (release consistency scoping)

Add support for FEAT_RLCS (release consistency scoping) instructions:
  - SRLS
  - SLBND
DeltaFile
+33-0llvm/test/MC/AArch64/armv9.8a-rlcs.s
+31-0llvm/test/MC/AArch64/armv9.8a-rlcs-diagnostics.s
+3-1llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+3-0llvm/lib/Target/AArch64/AArch64InstrInfo.td
+70-14 files

LLVM/project e347521 — libc/include termios.yaml, libc/src/termios tcsetwinsize.h

[libc] Implement tcsetwinsize in termios (#228498)

Implement the standard POSIX.1-2024 function `tcsetwinsize` in
`<termios.h>`.

Fixes #228380
Part of #228378

Implementation was assisted by Antigravity by analysing other functions
in header and reviewed by Aman Maurya.
DeltaFile
+95-0libc/test/src/termios/tcsetwinsize_test.cpp
+34-0libc/src/termios/linux/tcsetwinsize.cpp
+26-0libc/src/termios/tcsetwinsize.h
+18-0libc/test/src/termios/CMakeLists.txt
+13-0libc/src/termios/linux/CMakeLists.txt
+7-1libc/include/termios.yaml
+193-14 files not shown
+202-110 files

LLVM/project ae4a4a0 — llvm/lib/Target/AArch64 AArch64InstrInfo.td, llvm/test/MC/AArch64 directive-arch_extension-negative.s directive-arch.s

fixup! Address PR comments
DeltaFile
+20-18llvm/test/MC/AArch64/armv9.8a-lsc64b.s
+1-1llvm/test/MC/AArch64/directive-arch_extension-negative.s
+1-1llvm/test/MC/AArch64/directive-arch.s
+1-1llvm/test/MC/AArch64/directive-arch-negative.s
+1-1llvm/test/MC/AArch64/armv9.8a-lsc64b-diagnostics.s
+1-1llvm/lib/Target/AArch64/AArch64InstrInfo.td
+25-231 files not shown
+25-257 files

LLVM/project 7f2daab — mlir/include/mlir/Remark RemarkStreamer.h, mlir/lib/Remark CMakeLists.txt RemarkStreamer.cpp

[MLIR][Remark] Report why the LLVM remark streamer could not be created

LLVMRemarkStreamer::createToFile dropped the reason it failed: a file that
could not be opened and a serializer that could not be created both turned
into a bare failure, and enableOptimizationRemarksWithLLVMStreamer failed
without a diagnostic.

- createToFile returns llvm::Expected. It opens the file with
  mlir::openOutputFile and returns its message; a serializer error is
  returned as a FileError naming the file.
- enableOptimizationRemarksWithLLVMStreamer emits the error on the context.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+29-0mlir/unittests/IR/RemarkTest.cpp
+12-15mlir/lib/Remark/RemarkStreamer.cpp
+5-2mlir/include/mlir/Remark/RemarkStreamer.h
+5-0mlir/test/Pass/remark-output-error.mlir
+1-0utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+1-0mlir/lib/Remark/CMakeLists.txt
+53-176 files

LLVM/project df0ee94 — llvm/include/llvm/CodeGen TargetLowering.h, llvm/lib/CodeGen/SelectionDAG LegalizeIntegerTypes.cpp LegalizeVectorOps.cpp

Revert "[DAG] Expand mask_beforefirst during promotion (#230163)"

This reverts commit 001b1abc28a7f22345b8b326d0ec4aca88743292.
DeltaFile
+39-16llvm/test/CodeGen/AArch64/mask-beforefirst-sve.ll
+0-12llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+8-1llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
+0-7llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
+0-5llvm/include/llvm/CodeGen/TargetLowering.h
+47-415 files

LLVM/project fefeef2 — llvm/include/llvm/Transforms/Utils InstructionNamer.h, llvm/lib/Passes StandardInstrumentations.cpp

[IR] Name unnamed values after each pass (#221519)

Unnamed IR values are hard to follow in pass-by-pass output. Their
printed
numbers can shift when a pass adds or removes values.

Add the hidden `-instnamer-after-each-pass` option to name unnamed
arguments,
basic blocks, and non-void instructions before the first snapshot and
after
each new pass manager pass. It reuses InstructionNamer and keeps a
counter
across the pipeline, so a generated name is not reused after its value
is
removed. Existing names are preserved.

This makes text snapshots easier to compare, but names do not identify
instruction objects: a pass can transfer or reuse an existing name. The
ordinary `instnamer` pass and `-print-changed=diff` output are
unchanged.
DeltaFile
+43-4llvm/lib/Transforms/Utils/InstructionNamer.cpp
+32-0llvm/test/Transforms/InstNamer/after-each-pass.ll
+29-0llvm/test/Transforms/InstNamer/new-values-after-pass.ll
+22-0llvm/test/Transforms/InstNamer/multiple-functions.ll
+8-0llvm/include/llvm/Transforms/Utils/InstructionNamer.h
+3-0llvm/lib/Passes/StandardInstrumentations.cpp
+137-42 files not shown
+141-48 files

LLVM/project 7a005aa — llvm/lib/Target/ARM/Disassembler ARMDisassembler.cpp, llvm/test/MC/Disassembler/ARM thumb-barrier-predicates.txt

[ARM][Disassembler] Add missing predicates when decoding Thumb barriers (#223540)

`DecodeThumb2BCCInstruction` omits predicate operands for Thumb barriers
when the data-barrier feature is disabled, causing llvm-objdump
--arch-name=thumb to abort.

Add the missing operands using the current IT state, with disassembler
and llvm-objdump regression tests.

Fixes #193877
DeltaFile
+31-0llvm/test/MC/Disassembler/ARM/thumb-barrier-predicates.txt
+19-0llvm/test/tools/llvm-objdump/ELF/ARM/thumb-barriers.s
+4-1llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+54-13 files

LLVM/project c2f3a04 — llvm/test/CodeGen/RISCV/rvv vwsub-sdnode.ll vwadd-sdnode.ll

[RISCV] Generalize combineBinOpOfZExt to allow sext

The combine currently only handles cases where both operands are zext, but we can also allow sext.

If any operand is sexted then we need to sext the result as the sign bit may not be zero.

We can't handle udiv + urem if either of the operands are sext, since sign extending a narrower udiv/urem gives incorrect results. E.g. `udiv (sext (i8 -1) to i32), (zext (i8 2) to i32)`:

- At i32: `udiv 0xffffffff, 2 = 0x7fffffff`
- Narrowed to i16: `sext (udiv 0xffff, 2) to i32 = sext 0x7fff to i32 = 0x00007ffff`
DeltaFile
+340-285llvm/test/CodeGen/RISCV/rvv/fixed-vectors-zvdot4a8i.ll
+112-144llvm/test/CodeGen/RISCV/rvv/vwmul-sdnode.ll
+93-96llvm/test/CodeGen/RISCV/rvv/zvdot4a8i-sdnode.ll
+88-76llvm/test/CodeGen/RISCV/rvv/binop-sext.ll
+56-72llvm/test/CodeGen/RISCV/rvv/vwsub-sdnode.ll
+56-72llvm/test/CodeGen/RISCV/rvv/vwadd-sdnode.ll
+745-7458 files not shown
+840-83614 files

LLVM/project ec3d17e — clang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp, clang/test/CIR/CodeGen call-conv-lowering-amdgpu-cxx-records.cpp call-conv-lowering-amdgpu-return-types.c

[CIR] Wire AMDGPU into the call-convention lowering pass
DeltaFile
+132-73clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+165-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-arg-types.c
+158-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-return-types.c
+140-0clang/test/CIR/CodeGenHIP/call-conv-lowering-amdgpu-kernel-args.hip
+74-0clang/test/CIR/CodeGen/call-conv-lowering-amdgpu-cxx-records.cpp
+59-0clang/test/CIR/Transforms/abi-lowering/amdgpu-calling-conv.cir
+728-7310 files not shown
+821-9116 files

LLVM/project 9368462 — llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp, llvm/test/Transforms/LoopVectorize/AArch64 replicating-load-store-costs-apple.ll transform-narrow-interleave-to-widen-memory-factor-gt-vf.ll

[AArch64] Use VectorInstrContext in getScalarizationOverhead. (#177201)

Use VectorInstrContext to return more accurate scalarization overhead
costs when inserts/extracts can be folded into ld1/st1 and CPUs where
ld1/st1 are fast (same perf as regular loads).

Depends on https://github.com/llvm/llvm-project/pull/175982

PR: https://github.com/llvm/llvm-project/pull/177201
DeltaFile
+1,535-215llvm/test/Transforms/LoopVectorize/AArch64/transform-narrow-interleave-to-widen-memory-factor-gt-vf.ll
+259-52llvm/test/Transforms/LoopVectorize/AArch64/replicating-load-store-costs-apple.ll
+9-0llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+1,803-2673 files

LLVM/project 4362ba8 — clang/include/clang/CIR MissingFeatures.h, clang/lib/CIR/CodeGen CIRGenCleanup.cpp

[CIR] Find conditional cleanups in implicit code (#229829)

`ConditionalEvaluationFinder` in `CIRGenCleanup` skipped implicit code
because that's the default for `RecursiveASTVisitor`. This lead to
default arguments and default member initializers being skipped.

This patch enables the traversal of implicit code with the exception of
the implicit call to `await_resume()` in `co_await` and `co_yield`
expressions. This requires cleanup scopes for await full-expressions
which don't exist yet.

---------

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+191-3clang/test/CIR/CodeGen/cleanup-conditional.cpp
+27-2clang/lib/CIR/CodeGen/CIRGenCleanup.cpp
+1-0clang/include/clang/CIR/MissingFeatures.h
+219-53 files

LLVM/project d1d0fed — llvm/lib/CodeGen/SelectionDAG LegalizeVectorOps.cpp, llvm/lib/Target/AArch64 AArch64ISelLowering.cpp

[LLVM][CodeGen][SVE] Add lowering for bfloat strict-fp cast operators. (#223709)

The majority of the changes are just a case of ensuring the chain is
routed correctly and the matching STRICT passthrough node is used.

NOTE: At present full strict-fp support has a minimum requirement of
+sve2+bf16, otherwise we lack the necessary cast instructions. Of these
+bf16 is fundamental whereas +sve2 is only required for double->bfloat.
DeltaFile
+409-0llvm/test/CodeGen/AArch64/sve-bf-constrained-intrinsics.ll
+46-30llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+6-0llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
+461-303 files

LLVM/project 97d2c0c — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 minbw-interchangeable-mul-shl.ll

[SLP]Fix poison shift after MinBW demotion

Lanes converted from mul-by-power-of-2 are emitted as shl by the
exponent; check the node shift amounts, not the scalar operands.

Fixes #230392

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/230464
DeltaFile
+9-7llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+4-2llvm/test/Transforms/SLPVectorizer/X86/minbw-interchangeable-mul-shl.ll
+13-92 files