LLVM/project df9549c — clang/docs ReleaseNotes.md, clang/lib/AST ItaniumMangle.cpp

[Clang] Fix mangling of parenthesized aggregate initialization (#232357)

Clang was not correctly including the arguments used to initialize a
struct with parentheses in the generated symbol name. This could give
different template expressions the same symbol name, and some cast forms
could crash while being mangled.

Used the arguments written in the source when generating the symbol
name, including for C-style casts and static_cast.

Followed the Itanium ABI section 5.1.6 for mangling.

The generated names were compared with GCC 15.2 and GCC trunk:
https://godbolt.org/z/xWPcnr3K6

Fixes #231953
DeltaFile
+46-0clang/test/CodeGenCXX/mangle-cxx2a.cpp
+21-2clang/lib/AST/ItaniumMangle.cpp
+5-0clang/docs/ReleaseNotes.md
+72-23 files

LLVM/project c12cfa7 — mlir/test/Dialect/LLVMIR mem2reg.mlir, mlir/test/Dialect/SCF mem2reg.mlir

[mlir][Mem2Reg] Standardise memory slot interface implementation file names (nfc) (#232637)

Renames the files implementing the interfaces defined in
`MemorySlotInterfaces.td` to consistently use
`MemorySlotInterfacesImpl.{h,cpp}`.

The previous names (e.g. `MemRefMemorySlot.h` and
`MemorySlotOpInterfaceImpl.h`) were inconsistent with the TableGen
definition, particularly its use of the plural `Interfaces`.

Also:
* Adds and updates comments to clarify that the implementations in
  `mlir/lib/Dialect/MemRef/Transforms/` use external models, unlike
  those in `mlir/lib/Dialect/MemRef/IR/`.
* Moves all Mem2Reg tests to `mlir/test/Transforms/Mem2Reg/`. As
  demonstrated by #217793, these tests depend on multiple dialects,
  making `mlir/test/Transforms/` a more appropriate location than
  `mlir/test/Dialect/`.
DeltaFile
+0-1,299mlir/test/Dialect/LLVMIR/mem2reg.mlir
+1,299-0mlir/test/Transforms/Mem2Reg/llvm.mlir
+0-1,120mlir/test/Dialect/SCF/mem2reg.mlir
+1,120-0mlir/test/Transforms/Mem2Reg/scf.mlir
+0-692mlir/test/Dialect/Vector/mem2reg.mlir
+692-0mlir/test/Transforms/Mem2Reg/vector.mlir
+3,111-3,11124 files not shown
+5,302-5,28930 files

LLVM/project 57e04b1 — llvm/lib/Target/AMDGPU AMDGPULowerVGPREncoding.cpp SIModeRegister.cpp

[AMDGPU][NFC] Explicitly narrow conversions in hazard and waitcnt passes (#215197)

Fixes 53 instances of MSVC warning C4244 and 11 of C4267 ("possible loss of data") across 6 files in llvm/lib/Target/AMDGPU.

Assisted-by: Claude <noreply at anthropic.com>
DeltaFile
+48-47llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+22-16llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+12-10llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
+9-8llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
+8-7llvm/lib/Target/AMDGPU/SIModeRegister.cpp
+1-1llvm/lib/Target/AMDGPU/AMDGPULowerVGPREncoding.cpp
+100-896 files

LLVM/project fc76f17 — llvm/lib/Target/RISCV RISCVMergeBaseOffset.cpp, llvm/test/CodeGen/RISCV merge-base-offset-debug-fold.mir

[RISCV] Ignore debug uses when folding offsets into a global address (#231718)

Check for non-debug uses instead. The fold changes the value of the
address register, so make its debug users undef first, and make those of
the erased offset instructions undef too.

Assisted-by: Claude
DeltaFile
+75-0llvm/test/CodeGen/RISCV/merge-base-offset-debug-fold.mir
+20-7llvm/lib/Target/RISCV/RISCVMergeBaseOffset.cpp
+95-72 files

LLVM/project 47c04c2 — libc/test/src/math/exhaustive cos.wc sin.wc, llvm/lib/Support UnicodeNameToCodepointGenerated.cpp

Merge updated allocating/freeing support branch
DeltaFile
+1,091,085-0libc/test/src/math/exhaustive/sin.wc
+1,090,178-0libc/test/src/math/exhaustive/cos.wc
+98,508-116,745llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+30,284-36,334llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+32,750-17,381llvm/test/CodeGen/AMDGPU/frem.ll
+23,347-23,371llvm/lib/Support/UnicodeNameToCodepointGenerated.cpp
+2,366,152-193,83137,688 files not shown
+5,264,107-1,617,90537,694 files

LLVM/project d0e0d62 — mlir/lib/Dialect/Vector/Utils VectorUtils.cpp, mlir/test/Dialect/Linalg/vectorization insert-slice.mlir

[mlir][vector] Keep a write mask that does not cover the whole vector (#228668)

`isMaskTriviallyFoldable` decides whether a transfer mask is all-true
and can be left out. For constant sizes and indices it checked that the
masked part stays in bounds, but not that the mask covers the whole
vector.

Since #174810 the write mask size is `dim - index`. With a non-zero
constant index that can be smaller than the vector, and the mask was
still dropped.

For example, vectorizing this with `vector_sizes [4]`:

```mlir
%r = tensor.insert_slice %src into %dest[6] [%size] [1]
    : tensor<?xi32> into tensor<8xi32>
```
gave an unmasked 4-element `vector.transfer_write` at index 6, marked
`in_bounds`. It is now masked with size 2.

    [10 lines not shown]
DeltaFile
+25-0mlir/test/Dialect/Linalg/vectorization/insert-slice.mlir
+7-4mlir/lib/Dialect/Vector/Utils/VectorUtils.cpp
+32-42 files

LLVM/project 4f2b017 — llvm/lib/Target/DirectX DXILTranslateMetadata.cpp, llvm/lib/Target/DirectX/DirectXIRPasses PointerTypeAnalysis.cpp

[PowerPC][DirectX] Do not check result of getTerminator. NFC. (#232813)

Since #189416 BasicBlock::getTerminator cannot return nullptr.
DeltaFile
+1-2llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
+0-2llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
+1-1llvm/lib/Target/DirectX/DirectXIRPasses/PointerTypeAnalysis.cpp
+2-53 files

LLVM/project 899d13e — llvm/lib/Target/AArch64 AArch64.h AArch64TargetMachine.cpp, llvm/lib/Target/AArch64/MCTargetDesc AArch64MCLFIRewriter.cpp AArch64MCOptions.h

[AArch64] Make options per-context (#232584)

Follow-up to #232170: drop `perContext = false` from AArch64Options and
AArch64MCOptions. Their readers use MCTargetOptions::LibraryOptions; the
IR passes use their function's or module's LLVMContext.

LLM-aided
DeltaFile
+26-19llvm/lib/Target/AArch64/AArch64StackTagging.cpp
+5-4llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
+8-0llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCOptions.h
+4-3llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+7-0llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCLFIRewriter.cpp
+3-1llvm/lib/Target/AArch64/AArch64.h
+53-276 files not shown
+63-3612 files

LLVM/project 6df9055 — llvm/test/CodeGen/AMDGPU clmul.ll amdgcn.bitcast.1024bit.ll, llvm/test/CodeGen/NVPTX atomicrmw-elementwise-sm90.ll atomicrmw-elementwise-sm70.ll

Merge branch 'main' into users/lukel97/instcombine-lshr-trunc-sext-to-ashr-sext-test-target-agnostic
DeltaFile
+31,848-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm60.ll
+31,310-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm70.ll
+22,710-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+7,716-7,532llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+5,611-5,555llvm/test/CodeGen/RISCV/clmul.ll
+2,795-3,867llvm/test/CodeGen/AMDGPU/clmul.ll
+101,990-16,9545,096 files not shown
+344,512-134,2175,102 files

LLVM/project 337446d — llvm/lib/Transforms/IPO CrossDSOCFI.cpp, llvm/test/Transforms/CrossDSOCFI basic.ll

[profcheck][CrossDSOCFI] Label synthesized __cfi_check profile as explicitly unknown (#232634)

The frontend writes a weak stub for `__cfi_check`. The `CrossDSOCFI`
pass deletes the body of this stub. Then the pass writes a new body. The
new body has a `switch` on the CFI type ID. Each case of the `switch`
calls `llvm.type.test`.

Because this function synthesized by compiler so no profile data for
this function can exist. Before this change, the pass did not attach
profile metadata to the function. It also did not attach profile
metadata to the `switch`. Thus, the profile verifier failed with this
error: "function entry count missing".

This PR does these changes:

1. It sets the entry count of `__cfi_check` to "explicitly unknown". It
uses `setExplicitlyUnknownFunctionEntryCount` for this step.
2. It sets the branch weights of the `switch` to "explicitly unknown".
It uses `setExplicitlyUnknownBranchWeights` for this step.

Co-authored-by: Jin Huang <jingold at google.com>
DeltaFile
+4-2llvm/test/Transforms/CrossDSOCFI/basic.ll
+6-0llvm/lib/Transforms/IPO/CrossDSOCFI.cpp
+0-4llvm/utils/profcheck-xfail.txt
+10-63 files

LLVM/project 8decc32 — llvm/lib/Transforms/IPO OpenMPOpt.cpp, llvm/test/Transforms/OpenMP spmdization_guarding.ll

[OpenMP] Fix SPMDszaton pass reordering strict fences (#232481)

Summary:
The SPMDization pass works by moving the explitic single threaded then
fork model into a single parallel region where the previously
single-threaded code is executed under a masked thread which shares a
barrier. In some cases, this was moving a system-scope memory fence past
where it was and broke the happens-before relationship it implied.

The pass already handled things like stores, just extend this handling
to fences of sufficiently strict scope.

Fixes https://amd-hub.atlassian.net/browse/LCOMPILER-2940
DeltaFile
+50-1llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+46-0llvm/test/Transforms/OpenMP/spmdization_guarding.ll
+96-12 files

LLVM/project aa845d0 — libc/src/__support/math exp_double_utils.h exp2_accurate_128.h, libc/test/src/math exp2_test.cpp

[libc][math] Optimize exp2 and refactor shared double-precision exp utilities. (#231041)

Refactor double-precision `exp2` to improve latency, throughput, and
code
sharing across `exp`, `exp2`, `exp10`, and `pow`, while adding support
for
`LIBC_MATH_HAS_SMALL_TABLES` and `LIBC_MATH_HAS_SKIP_ACCURATE_PASS`.

Algorithm & implementation overview:
- Fast path (`exp2_double_eval.h`, `exp_utils.h`):
- Single-step range reduction `x = k * 2^-N + dx` (`N = 7` by default,
or
    `N = 4` when `LIBC_MATH_HAS_SMALL_TABLES` is enabled) with
    `hi = k >> N`, `idx = k & (2^N - 1)`, and `u = dx * log(2)`.
- Without FMA, use fixed-point splitting (`SPLIT_18` on `dx`,
`LOG_2_HI_12`
on `log(2)`, and `SPLIT_22` on `EXP2_MID[idx]`) so `m_hi * (1 + u_hi)`
is
exact in `double` without needing Veltkamp splitting or `DoubleDouble`

    [37 lines not shown]
DeltaFile
+474-1libc/src/__support/math/exp_utils.h
+13-424libc/src/__support/math/exp2.h
+158-93libc/test/src/math/exp2_test.cpp
+228-0libc/src/__support/math/exp2_accurate_128.h
+171-0libc/src/__support/math/exp_double_utils.h
+88-48libc/test/src/math/smoke/exp2_test.cpp
+1,132-56610 files not shown
+1,440-60416 files

LLVM/project 10dcdee — clang/test/Sema/LifetimeSafety safety.cpp

update tests
DeltaFile
+5-5clang/test/Sema/LifetimeSafety/safety.cpp
+5-51 files

LLVM/project 778762d — llvm/lib/Target/AMDGPU DSInstructions.td

[AMDGPU] Fix assembler predicates for GFX13 DS barrier arrive atomics. NFCI. (#231977)

DS_ATOMIC_ASYNC_BARRIER_ARRIVE_B64 and DS_ATOMIC_BARRIER_ARRIVE_RTN_B64
were defined with DS_Real_gfx12_gfx13 inside
"let AssemblerPredicate = HasLdsBarrierArriveAtomic". The outer let
overrode the isGFX12Only/isGFX13Only predicates set by the multiclass, so
the asm matcher could not tell the _gfx12 and _gfx13 reals apart and
always picked the _gfx12 one.

The let was redundant anyway, since the reals already inherit
HasLdsBarrierArriveAtomic from the pseudos via OtherPredicates. Remove
it.

This is NFC for all current processors because no GFX13 processor has
FeatureLdsBarrierArriveAtomic, and the encodings are the same in any
case.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply at anthropic.com>
DeltaFile
+0-2llvm/lib/Target/AMDGPU/DSInstructions.td
+0-21 files

LLVM/project bc8c0da — libc/test/src/math/exhaustive cos.wc sin.wc, llvm/lib/Support UnicodeNameToCodepointGenerated.cpp

Merge upstream/main into users/NeKon69/issue-213435-support-allocating-freeing-functions
DeltaFile
+1,091,085-0libc/test/src/math/exhaustive/sin.wc
+1,090,178-0libc/test/src/math/exhaustive/cos.wc
+98,508-116,745llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+30,284-36,334llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+32,750-17,381llvm/test/CodeGen/AMDGPU/frem.ll
+23,347-23,371llvm/lib/Support/UnicodeNameToCodepointGenerated.cpp
+2,366,152-193,83137,688 files not shown
+5,264,082-1,617,88037,694 files

LLVM/project 8f144be — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/lib/Transforms/Vectorize/SLPVectorizer SLPMemoryUtils.cpp

[SLP] Handle REVEC when costing expanded compress mask

With REVEC the scalars are vectors. The masked-load-compress shuffle that is
emitted uses the compress mask expanded to the elements of those vectors
(transformScalarShuffleIndiciesToVector), but the cost was computed with the
unexpanded per-vector mask, so a shuffle such as <24 x i8> -> <16 x i8> was
costed as a <2 x i8> shuffle. This made the compress sequence looked cheaper
than it is.

Assisted-By: Claude Sonnet 5.5
DeltaFile
+13-9llvm/test/Transforms/SLPVectorizer/RISCV/revec-compress-mask-cost.ll
+7-2llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+6-2llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPMemoryUtils.cpp
+26-133 files

LLVM/project 0bc741a — flang/docs Extensions.md, flang/lib/Evaluate fold-implementation.h

[flang][Evaluate] Fold type-only inquiries of conditional arguments (#227466)

Fold a reference to an intrinsic inquiry function whose result depends
only on the declared type, kind type parameters, or rank of an argument
when that argument is a conditional argument with a non-constant
condition:

  integer, parameter :: k = kind((flag ? a : b))

Every consequent-arg of a conditional argument has the same declared
type and kind type parameters (F2023 C1538) and the same rank unless
all of them are assumed-rank (C1539), so such an inquiry has the same
value whichever consequent-arg is chosen at run time.
FoldOperation(FunctionRef) folds the reference by substituting the
first consequent-arg for the conditional argument in a copy of the
reference and keeps the result when it is a constant.

Accepting such a reference in a constant expression, as in the
PARAMETER above, is an extension. F2023 10.1.12 item (6) admits a

    [41 lines not shown]
DeltaFile
+56-28flang/lib/Evaluate/fold-implementation.h
+76-0flang/test/Semantics/conditional-arg-inquiry.f90
+71-0flang/test/Evaluate/fold-conditional-arg.f90
+13-0flang/test/Evaluate/fold-conditional-arg-exec.f90
+10-0flang/docs/Extensions.md
+226-285 files

LLVM/project dbfa006 — llvm/test/Transforms/SLPVectorizer/RISCV revec-compress-mask-cost.ll

precommit test

Co-Authored-By: Claude Sonnet 5.5 <noreply at anthropic.com>
DeltaFile
+39-0llvm/test/Transforms/SLPVectorizer/RISCV/revec-compress-mask-cost.ll
+39-01 files

LLVM/project 5594e94 — clang/docs ReleaseNotes.md, clang/lib/Sema SemaExpr.cpp

[Clang][Sema] Fix lambdas mistakenly inheriting InImmediateFunctionContext (#232458)

This fixes a regression since Clang 21.

As per [expr.const]/p14.1, only the innermost enclosing function
parameter scope matters for determining whether a function or lambda is
in an immediate function context. It does not matter whether the parent
is an immediate function or not.

However, synthesized functions such as Lambda conversion operators and
constructors do need to inherit immediate function context from the
parent. Fix this by explicitly exempting the lambda call operator.

Fixes #183415.
Fixes #169139. 
DeltaFile
+65-0clang/test/SemaCXX/cxx2b-consteval-propagate.cpp
+4-5clang/lib/Sema/SemaExpr.cpp
+3-0clang/docs/ReleaseNotes.md
+72-53 files

LLVM/project fe39a5f — llvm/test/TableGen getRegClassFromMatchKind.td RegisterClassCopyCost.td, llvm/utils/TableGen RegisterInfoEmitter.cpp

[TableGen] Declare `MCRegisterClassStorageType` as `inline constexpr` (NFC) (#232403)

This reduces size of binaries generated by MSVC on Windows. After
#207168 was merged some of the binaries that include AMDGPU back-end
grew by around 15% on Windows. Declaring the storage class as
`constexpr` allows MSVC to correctly optimize the code brining the
binary size back to its original size.

This is an alternative to #232010 that was reverted due to not being
compatible with MSVC 2019.
DeltaFile
+1-1llvm/utils/TableGen/RegisterInfoEmitter.cpp
+1-1llvm/test/TableGen/getRegClassFromMatchKind.td
+1-1llvm/test/TableGen/RegisterClassCopyCost.td
+3-33 files

LLVM/project adbc6f8 — llvm/lib/Target/AArch64 AArch64MIPeepholeOpt.cpp, llvm/test/CodeGen/AArch64 mipeephole-split-imm-debug-use.mir

[AArch64] Ignore debug uses when splitting immediates (#231717)

and make the debug users of the erased MOV and SUBREG_TO_REG undef.

Assisted-by: Claude
DeltaFile
+48-0llvm/test/CodeGen/AArch64/mipeephole-split-imm-debug-use.mir
+21-3llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp
+69-32 files

LLVM/project b839d36 — llvm/test/CodeGen/AMDGPU build-vector-packed-partial-undef.ll shrink-add-sub-constant.ll, llvm/test/CodeGen/AMDGPU/GlobalISel fshl.ll llvm.amdgcn.image.atomic.dim.a16.ll

[AMDGPU][GlobalISel] Look through copies when matching GCNPat patterns
DeltaFile
+800-1,875llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.image.atomic.dim.a16.ll
+280-1,577llvm/test/CodeGen/AMDGPU/fmul-to-ldexp.ll
+838-134llvm/test/CodeGen/AMDGPU/lshl-add-u64.ll
+204-373llvm/test/CodeGen/AMDGPU/shrink-add-sub-constant.ll
+158-417llvm/test/CodeGen/AMDGPU/build-vector-packed-partial-undef.ll
+230-239llvm/test/CodeGen/AMDGPU/GlobalISel/fshl.ll
+2,510-4,61565 files not shown
+4,029-6,79371 files

LLVM/project 74c943c — clang/test/CIR/CodeGenHIP lambda-reference-var.hip

fix test on latest main
DeltaFile
+6-2clang/test/CIR/CodeGenHIP/lambda-reference-var.hip
+6-21 files

LLVM/project 9b837fc — llvm/test/Transforms/SLPVectorizer/RISCV combined-loads-stored.ll rotated-strided-loads.ll

[RISCV] Double the cost of slides

From what I've measured and from what I can read on https://camel-cdr.github.io/rvv-bench-results, vslideup and vslidedown generally aren't pipelined to the same degree as arithmetic ops. This, combined with the fact that they require a vsetvli toggle which we don't currently cost for, makes shufflevector sequences emitted by SLP expensive on hardware.

Doubling the costs of the slides prevents unprofitable SLP vectorization in 525.x264_r, and improves performance by 3.91% on the SpacemiT-K3, -march=rva23u64 -O3 -flto. There were no other noticeable changes on SPEC CPU 2017.

The vslideup/vslidedown throughputs relative to vadd.vx are listed below. SiFive x280 is the only core I could see with better throughput. I considered adding a tuning flag for it, but I'm guessing that if SLP vectorization isn't profitable on other cores, they're likely not profitable on the X-series cores either. Happy to add a flag if reviewers prefer.

| core | VLEN | mf2 | m1 | m2 | m4 | m8 |
|---|---|---|---|---|---|---|
| SpacemiT X60 | 256 | 1.0× / 1.0× | 2.0× / 3.0× | 2.0× / 2.5× | 2.0× / 2.2× | 2.0× / 2.1× |
| SpacemiT X100 | 256 | 1.0× / 1.2× | 1.9× / 2.8× | 2.0× / 2.5× | 2.0× / 2.2× | 2.0× / 2.1× |
| SpacemiT A100 | 1024 | 4.0× / 5.0× | 4.0× / 4.5× | 4.0× / 4.2× | 4.0× / 4.1× | 4.0× / 4.1× |
| SiFive P870 | 128 | 1.2× / 1.2× | 1.2× / 1.2× | 8.0× / 9.0× | 5.0× / 6.0× | 3.5× / 4.5× |
| Tenstorrent Ascalon X | 256 | 1.0× / 1.0× | 1.0× / 1.0× | 2.0× / 1.0× | 3.5× / 2.7× | 5.6× / 4.5× |
| Tenstorrent Ascalon S | 256 | 1.0× / 1.0× | 1.0× / 1.0× | 2.6× / 1.0× | 3.8× / 2.8× | 5.7× / 4.6× |
| XiangShan V3 | 128 | 2.0× / 2.0× | 2.0× / 2.0× | 3.5× / 3.5× | 7.0× / 7.0× | 14.0× / 14.0× |
| SiFive X280 | 512 | 1.0× / 1.0× | 0.7× / 1.0× | 0.8× / 1.0× | 0.6× / 1.0× | 0.7× / 1.0× |
| AX45MPV | 512 | 2.0× / 2.0× | 2.0× / 2.0× | 1.5× / 2.0× | 1.8× / 2.0× | 1.9× / 2.0× |
| Tenstorrent Tensix T2 | 128 | - | 7.8× / 7.8× | 7.9× / 7.9× | 7.9× / 7.9× | 6.8× / 6.8× |
DeltaFile
+200-72llvm/test/Transforms/SLPVectorizer/RISCV/strided-loads-based-reduction.ll
+82-49llvm/test/Transforms/SLPVectorizer/RISCV/strided-load-in-tree-stride.ll
+27-13llvm/test/Transforms/SLPVectorizer/RISCV/gather-constant-offset-lanes-different-bases.ll
+5-11llvm/test/Transforms/SLPVectorizer/RISCV/rotated-strided-loads.ll
+6-10llvm/test/Transforms/SLPVectorizer/RISCV/revec-strided-load.ll
+8-5llvm/test/Transforms/SLPVectorizer/RISCV/combined-loads-stored.ll
+328-1607 files not shown
+353-18313 files

LLVM/project a48e820 — llvm/test/CodeGen/AMDGPU tuple-allocation-failure.ll uniform-cfg-around-divergent-region.ll, llvm/test/Transforms/SLPVectorizer/X86 merge-input-operands.ll

Merge branch 'main' into revert-231420-users/arsenm/clang/reapply-targetid-parsing-amdgpu-targetparser
DeltaFile
+2,795-3,867llvm/test/CodeGen/AMDGPU/clmul.ll
+1,325-0llvm/test/CodeGen/AMDGPU/setcc-i64-to-i32.ll
+0-900llvm/test/CodeGen/AMDGPU/setcc-select-hi32mask.ll
+462-0llvm/test/Transforms/SLPVectorizer/X86/merge-input-operands.ll
+354-0llvm/test/CodeGen/AMDGPU/uniform-cfg-around-divergent-region.ll
+150-196llvm/test/CodeGen/AMDGPU/tuple-allocation-failure.ll
+5,086-4,963311 files not shown
+11,399-7,316317 files

LLVM/project a9af670 — llvm/lib/Target/RISCV RISCVExpandPseudoPreRA.cpp, llvm/test/CodeGen/RISCV prera-expand-pseudo.mir

RISCV: Mark unused TLSDESC call defs dead (#232734)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+30-0llvm/test/CodeGen/RISCV/prera-expand-pseudo.mir
+2-1llvm/lib/Target/RISCV/RISCVExpandPseudoPreRA.cpp
+32-12 files

LLVM/project 9b8b383 — llvm/lib/Support UnicodeNameToCodepointGenerated.cpp, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.896bit.ll amdgcn.bitcast.960bit.ll

Merge branch 'main' into users/vntkmr/flang-conditional-args/02-Fold-type-only-inquiries-of-conditional-arguments
DeltaFile
+80,340-99,572llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+32,675-17,281llvm/test/CodeGen/AMDGPU/frem.ll
+21,540-27,245llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+23,347-23,371llvm/lib/Support/UnicodeNameToCodepointGenerated.cpp
+16,761-20,379llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+15,630-19,063llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+190,293-206,91114,593 files not shown
+1,161,847-709,45514,599 files

LLVM/project c313c3e — llvm/test/tools/llubi bitinsert_bitextract_le.ll bitinsert_bitextract_be.ll, llvm/tools/llubi/lib Context.h Context.cpp

[llubi] Add support for `bitinsert` and `bitextract` (#230827)

Add support for `bitinsert` and `bitextract`.
DeltaFile
+78-0llvm/test/tools/llubi/bitinsert_bitextract_le.ll
+78-0llvm/test/tools/llubi/bitinsert_bitextract_be.ll
+29-0llvm/tools/llubi/lib/Interpreter.cpp
+19-0llvm/tools/llubi/lib/Context.cpp
+7-0llvm/tools/llubi/lib/Context.h
+211-05 files

LLVM/project 217e229 — clang/lib/Analysis ThreadSafetyCommon.cpp, clang/lib/Sema SemaDeclAttr.cpp

[clang][ThreadSafety] Do not read a C field's address as a pointer to member (#231604)

The analysis reads `&Class::mu` in an attribute as a wildcard, matching
`mu` of any object, and tested for it with `isCXXInstanceMember()`. That
test is true of a C field too -- probably unexpectedly given the CXX in
the name -- so in:

    struct Dev {
      struct Mutex mu;
      int a GUARDED_BY(&mu);
    };

`a` was guarded by the `mu` of any object: locking `other->mu` allowed
writing `dev->a`. C has no pointer-to-member syntax, so there `&mu`
names the field of the same object, as `mu` does. The wildcard is kept
for C++ only, as seems likely to have been intended (despite the test
from #191187 being changed here). This ensures the struct annotation now
has the same meaning on C and C++ parsing.
DeltaFile
+28-2clang/test/Sema/warn-thread-safety-analysis.c
+20-0clang/test/SemaCXX/warn-thread-safety-analysis.cpp
+5-5clang/lib/Sema/SemaDeclAttr.cpp
+3-6clang/lib/Analysis/ThreadSafetyCommon.cpp
+56-134 files

LLVM/project 097e8eb — llvm/include/llvm/CodeGen MachineBasicBlock.h, llvm/lib/CodeGen ProcessImplicitDefs.cpp MachineBasicBlock.cpp

ProcessImplicitDefs: Mark kept physreg IMPLICIT_DEFs dead

A physreg IMPLICIT_DEF has undef set on all of its readers in the block,
but is only erased if the block has no successors. Otherwise it was left
live even when no successor has the register live-in. Mark it dead in
that case.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+110-0llvm/test/CodeGen/X86/process-implicit-defs-physreg-dead.mir
+57-0llvm/test/CodeGen/AMDGPU/process-implicit-defs-livein-lanemask.mir
+16-0llvm/lib/CodeGen/MachineBasicBlock.cpp
+11-4llvm/lib/CodeGen/ProcessImplicitDefs.cpp
+5-0llvm/include/llvm/CodeGen/MachineBasicBlock.h
+199-45 files