LLVM/project ab7bbbbflang/include/flang/Optimizer/Dialect FIRAttr.h, flang/lib/Lower ConvertVariable.cpp

[flang][AllocationPlacement] prevent promotion of mock result to allocmem (#212825)

Under the new experimental pass that can move automatic arrays to the
heap, "mock" result storage may be promoted to allocmem before
AbstractResult removes them and replace them by a hidden result.

Add a fir.must_be_stack attribute to these mock alloca so they are never
promoted. So that passes dealing with array function results ABI can
expect to find an fir.alloca and remove it.
DeltaFile
+15-2flang/lib/Lower/ConvertVariable.cpp
+15-0flang/test/Integration/allocation-placement-array-result.f90
+6-6flang/test/Lower/HLFIR/custom-intrinsic.f90
+11-0flang/lib/Optimizer/Transforms/AllocationPlacement.cpp
+10-0flang/include/flang/Optimizer/Dialect/FIRAttr.h
+4-4flang/test/Lower/HLFIR/array-ctor-index.f90
+61-124 files not shown
+67-1810 files

LLVM/project 551f3c8llvm/include/llvm/TargetParser AMDGPUTargetParser.h, llvm/lib/TargetParser AMDGPUTargetParser.cpp

AMDGPU: Export the TargetParser feature bitset

Previously this bitset was only used to populate the feature
name string map used by clang. Eventually this will replace
the current bitmask integer. AArch64 already has a similar
interface.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+17-14llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+29-0llvm/unittests/TargetParser/TargetParserTest.cpp
+16-0llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+62-143 files

LLVM/project 30aafd8clang/test/CodeGen link-builtin-bitcode.c, llvm/lib/Target/AMDGPU AMDGPU.td

AMDGPU: Tablegenerate TargetParser feature sets

Traditionally we maintained 2 parallel feature mechanisms,
one in clang (later moved to TargetParser), with largely
mirrored subtarget features defined in the backend. Start
directly taking feature information from the backend and putting
it into TargetParser. This is still in a compromise mid-migration
state. We still have both the legacy "ArchAttr" bitfield integer,
plus a new AMDGPUFeatureBitset field stored in the table, which
isn't yet exported.

For the moment, the new bitset is only used to populate the
feature string name map, which is the big maintainability win.
This also lists an explicit subset of exported features to
avoid churn.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+51-508llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+115-3llvm/utils/TableGen/Basic/AMDGPUTargetDefEmitter.cpp
+43-0llvm/unittests/TargetParser/TargetParserTest.cpp
+39-0llvm/lib/Target/AMDGPU/AMDGPU.td
+3-3clang/test/CodeGen/link-builtin-bitcode.c
+251-5145 files

LLVM/project 51ed0aeflang/lib/Lower/OpenMP ClauseProcessor.cpp, flang/lib/Optimizer/OpenMP LowerWorkdistribute.cpp

[flang][OpenMP] Lower allocate align modifier on parallel

Lower the align modifier on OpenMP allocate clauses for parallel constructs.
Carry per-item alignments through the OpenMP dialect and select
__kmpc_aligned_alloc for aligned private storage while retaining the existing
allocation and cleanup behavior for unaligned items.

Add source, verifier, preservation, LLVM IR, i386 ABI, and overflow coverage.
Keep unsupported construct kinds and device lowering unchanged.

Assisted-by: GitHub Copilot
DeltaFile
+81-49mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+115-10mlir/test/Target/LLVMIR/openmp-allocate-clause.mlir
+52-0mlir/test/Dialect/OpenMP/invalid.mlir
+20-16flang/lib/Optimizer/OpenMP/LowerWorkdistribute.cpp
+19-10flang/lib/Lower/OpenMP/ClauseProcessor.cpp
+25-0flang/test/Semantics/OpenMP/allocate-clause01.f90
+312-8512 files not shown
+383-11018 files

LLVM/project d3ca4e5libcxx/include streambuf, libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area setg.assert.pass.cpp

[libc++][NFC] Rename the streambuf members (#212277)

This refactors `streambuf` to contain a `_GetArea` and a `_PutArea`.
This makes the code significantly easier to read, since the pointers
belonging together are bundled in a struct.
DeltaFile
+41-47libcxx/include/streambuf
+3-3libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/setg.assert.pass.cpp
+1-1libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/setp.assert.pass.cpp
+45-513 files

LLVM/project 0d78fb5llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize epilog-vectorization-reductions.ll

[VPlan] Make simplifyRecipe more like InstCombine

Most combines in simplifyRecipe RAUW a value, but not all of them erase the old recipe.
Unify them and bring it in line with InstCombine by having it return a VPValue, which simplifyRecipes can then call RAUW with, and automatically erase the old recipe.

Similarly to InstCombine, combines that modify a recipe should return the same recipe.
DeltaFile
+113-149llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+0-11llvm/test/Transforms/LoopVectorize/VPlan/constant-fold.ll
+0-2llvm/test/Transforms/LoopVectorize/epilog-vectorization-reductions.ll
+113-1623 files

LLVM/project 98cdcbalibcxx/include __locale, libcxx/include/__locale_dir num.h

[libc++] Move numpunct into <__locale_dir/num.h> (#212465)

`numpunct` is part of the `num` family of facets, so it should live in
`num.h`.
DeltaFile
+0-98libcxx/include/__locale
+98-0libcxx/include/__locale_dir/num.h
+8-0libcxx/test/libcxx/transitive_includes/cxx23.csv
+6-0libcxx/test/libcxx/transitive_includes/cxx26.csv
+1-0libcxx/test/std/utilities/format/format.functions/locale-specific_form.pass.cpp
+1-0libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.print/locale-specific_form.pass.cpp
+114-983 files not shown
+117-989 files

LLVM/project c27b357libcxx/include tuple

[libc++] Remove SFINAE checks in tuple which are always true (#212765)

We have a specialization for `tuple` with no arguments, so checking
`sizeof...(_Tp) >= 1` in the primary template will never be false.
DeltaFile
+5-7libcxx/include/tuple
+5-71 files

LLVM/project 6ddd80alldb/source/Target Memory.cpp, lldb/unittests/Target MemoryTest.cpp

[lldb] Fix stale L1 memory cache read after memory write (#208347)

A `memory write` can leave stale bytes in the L1 memory cache, so a later
`memory read` of the address that was just written returns the old value.

The L1 cache (`m_L1_cache`) is a map keyed by each chunk's start address, and
chunks can overlap: a read larger than an L2 cache line
(`target.memory-cache-line-size`, 512 by default) bypasses L2 and is stored
whole in L1, so two large reads can produce two chunks that both cover the same
address.

`Flush()` invalidates the L1 cache on a write. It started at the chunk at or
below the flushed address and walked forward, stopping at the first chunk that
did not intersect. It therefore never inspected a chunk that starts below the
flushed address but is long enough to reach into it, leaving that chunk behind
with the stale byte. A later read fully contained in that chunk is served from
the cache and returns the old value.

Fix `Flush()` to walk the whole L1 cache and erase every chunk that intersects

    [7 lines not shown]
DeltaFile
+117-0lldb/unittests/Target/MemoryTest.cpp
+8-8lldb/source/Target/Memory.cpp
+125-82 files

LLVM/project 506d70dllvm/lib/Analysis BlockFrequencyInfoImpl.cpp

[BFI] Compute the minimum frequency only when dumping. NFC (#212957)
DeltaFile
+13-16llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
+13-161 files

LLVM/project 9814675llvm/lib/Target/Sparc/AsmParser SparcAsmParser.cpp, llvm/test/MC/Sparc/Directives seg.s

[SPARC] Support the .seg directive (#209001)

Support the legacy .seg directive used by SunOS SPARC assembly. Map
"text", "data", "data1", and "bss" to their corresponding MC sections,
using subsection 1 for "data1".
DeltaFile
+36-0llvm/test/MC/Sparc/Directives/seg.s
+22-0llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
+58-02 files

LLVM/project 58c12ffllvm/test/CodeGen/AMDGPU atomic_optimizations_mul_one.ll, llvm/test/CodeGen/AMDGPU/GlobalISel atomic_optimizations_mul_one.ll

1. Move test out of globalIsel directory.
2. Rename functions with type.
DeltaFile
+0-972llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_optimizations_mul_one.ll
+972-0llvm/test/CodeGen/AMDGPU/atomic_optimizations_mul_one.ll
+972-9722 files

LLVM/project ddb662dllvm/lib/Target/WebAssembly WebAssemblyTargetTransformInfo.cpp, llvm/test/Analysis/CostModel/WebAssembly vector-shift.ll

[WebAssembly][TTI] Avoid crash when costing scalable vector shifts (#212759)

I see the following 

```
 anutosh491 at Anutoshs-MacBook-Air llvm-project % cat /private/tmp/wasm-scalable-shift-cost.ll
define <vscale x 4 x i32> @shift(<vscale x 4 x i32> %x,
                                 <vscale x 4 x i32> %amount) {
  %result = shl <vscale x 4 x i32> %x, %amount
  ret <vscale x 4 x i32> %result
}


 anutosh491 at Anutoshs-MacBook-Air llvm-project % build-assert/bin/opt \
  -mtriple=wasm32-unknown-unknown \
  -mattr=+simd128 \
  -passes='print<cost-model>' \
  -disable-output \
  /private/tmp/wasm-scalable-shift-cost.ll

    [27 lines not shown]
DeltaFile
+42-0llvm/test/Analysis/CostModel/WebAssembly/vector-shift.ll
+2-2llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp
+44-22 files

LLVM/project 9aee371llvm/docs LangRef.md, llvm/include/llvm/Support CodeGen.h

IR: Introduce "float-abi" module flag (#210821)

This is intended to eliminate the FloatABIType TargetOptions field.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+33-8llvm/include/llvm/Support/CodeGen.h
+37-0llvm/test/Verifier/module-flags-float-abi.ll
+33-0llvm/docs/LangRef.md
+16-12llvm/lib/IR/AutoUpgrade.cpp
+28-0llvm/test/Linker/module-flags-float-abi.ll
+16-0llvm/test/Bitcode/upgrade-ppc-float-abi.ll
+163-204 files not shown
+201-2010 files

LLVM/project ef7f2f6llvm/lib/Target/RISCV RISCVVectorPeephole.cpp, llvm/test/CodeGen/RISCV/rvv vlmax-peephole.mir

[RISCV] Fix crash in convertToVLMAX when AVL is an ADDI of a frame index (#212923)

`getConstant()` recognizes an AVL that is an immediate by checking
the opcode is `ADDI`, then reading the second operand and checking
if it is `X0`. However the second operand may be a frame index and
`getReg()` asserts with "This is not a register operand!".

We should guard the register access with `isReg()` before comparing
against `X0`.

Fixes #212797.
DeltaFile
+25-0llvm/test/CodeGen/RISCV/rvv/vlmax-peephole.mir
+1-1llvm/lib/Target/RISCV/RISCVVectorPeephole.cpp
+26-12 files

LLVM/project 27c7355mlir/test/Target/SPIRV debug.mlir non-uniform-ops.mlir

[NFC][mlir][SPIR-V] Use Subgroup scope in GroupNonUniform tests (#212928)

After https://github.com/KhronosGroup/SPIRV-Tools/pull/6811 spirv-val
rejects Workgroup scope on these ops
DeltaFile
+26-26mlir/test/Target/SPIRV/non-uniform-ops.mlir
+1-1mlir/test/Target/SPIRV/debug.mlir
+27-272 files

LLVM/project 46919d2llvm/docs AMDGPUAsyncOperations.md

[Docs][AMDGPU] Explain completion of async operations (#212756)

This improves the somewhat hand-wavey "memory model" currently described
for async operations. While this version is also not complete, it
prepares for the more complete memory model being written down.
DeltaFile
+26-12llvm/docs/AMDGPUAsyncOperations.md
+26-121 files

LLVM/project 6007408llvm/lib/Target/RISCV RISCVSchedTTAscalonX.td RISCVSchedSpacemitX60.td

[RISCV] Split and rename WriteVSlideI/WriteVISlide1X/WriteVFSlide1F (#212184)

Split each of these SchedWrites into separate slide-up and slide-down
variants:
  - WriteVSlideI     -> WriteVSlideUpI, WriteVSlideDownI
  - WriteVISlide1X   -> WriteVISlide1Up, WriteVISlide1Down
  - WriteVFSlide1F   -> WriteVFSlide1Up, WriteVFSlide1Down

SpacemiT X100 and A100 have different latencies and/or throughput for
slide up vs. slide down operations, so they need separate SchedWrites to
model that difference.
DeltaFile
+12-11llvm/lib/Target/RISCV/RISCVInstrInfoV.td
+12-9llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
+12-6llvm/lib/Target/RISCV/RISCVScheduleV.td
+8-4llvm/lib/Target/RISCV/RISCVSchedSiFiveP600.td
+6-3llvm/lib/Target/RISCV/RISCVSchedTTAscalonX.td
+6-3llvm/lib/Target/RISCV/RISCVSchedSpacemitX60.td
+56-365 files not shown
+82-5011 files

LLVM/project a4b3c7eclang/lib/Driver/ToolChains CommonArgs.cpp AMDGPU.h, clang/test/Driver amdgpu-assembler-xnack-sramecc.s

clang/AMDGPU: Forward xnack/sramecc mode to the assembler

When assembling a .s file with no target ID directive, the requested
xnack/sramecc mode has no module flag to carry it. Forward the mode
requested via -mxnack/-msramecc (or the -mcpu target ID modifiers) to the
assembler as a target feature so it is recorded in the object's e_flags.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+33-0clang/test/Driver/amdgpu-assembler-xnack-sramecc.s
+18-1clang/lib/Driver/ToolChains/AMDGPU.cpp
+2-1clang/lib/Driver/ToolChains/AMDGPU.h
+1-1clang/lib/Driver/ToolChains/CommonArgs.cpp
+54-34 files

LLVM/project cb8513dllvm/lib/Target/CSKY CSKYAsmPrinter.cpp

CSKY: Avoid constructing a temporary CSKYSubtarget in AsmPrinter (#212944)

This was reconstructing a subtarget equivalent to the global
subtarget instead of just using the available one.
DeltaFile
+1-9llvm/lib/Target/CSKY/CSKYAsmPrinter.cpp
+1-91 files

LLVM/project 2b45696llvm/lib/Target/Mips/AsmParser MipsAsmParser.cpp, llvm/test/MC/Mips macro-ddivu-bad.s macro-divu-bad.s

[Mips] Fix Clang crashes when assembling MIPS div/rem with register-name symbol as divisor (#200354)

Add check before getimm().

Fix #185363.
DeltaFile
+7-4llvm/test/MC/Mips/macro-ddiv-bad.s
+5-2llvm/test/MC/Mips/macro-divu-bad.s
+5-2llvm/test/MC/Mips/macro-div-bad.s
+4-1llvm/test/MC/Mips/macro-ddivu-bad.s
+2-0llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+23-95 files

LLVM/project 07897c2llvm/include/llvm/TargetParser AMDGPUTargetParser.h, llvm/lib/TargetParser AMDGPUTargetParser.cpp Triple.cpp

AMDGPU: TableGen the subarch triple name table (#212627)

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+87-20llvm/utils/TableGen/Basic/AMDGPUTargetDefEmitter.cpp
+2-45llvm/lib/TargetParser/Triple.cpp
+23-0llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+17-0llvm/test/TableGen/AMDGPUTargetDefErrors.td
+4-0llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+133-655 files

LLVM/project 8e28a0bflang/lib/Lower/OpenMP OpenMP.cpp, flang/test/Lower/OpenMP allocate-clause-allocator.f90

[flang][OpenMP] Fix allocate indices for common blocks

Co-authored-by: Copilot <223556219+Copilot at users.noreply.github.com>
DeltaFile
+17-5flang/lib/Lower/OpenMP/OpenMP.cpp
+18-0flang/test/Lower/OpenMP/allocate-clause-allocator.f90
+35-52 files

LLVM/project 70e39dellvm/test/CodeGen/X86 vec_int_to_fp.ll

[X86] vec_int_to_fp.ll - regenerate tests with missing VPADD constant asm comments (#212941)

Reduces diff in a future patch
DeltaFile
+4-4llvm/test/CodeGen/X86/vec_int_to_fp.ll
+4-41 files

LLVM/project 13e5ce4llvm/test/CodeGen/X86 avx512-gather-scatter-intrin.ll avx512-gather-scatter-intrin-deprecated.ll

[X86] Regenerate gather tests with missing VPADD constant asm comments (#212940)

Reduces diff in a future patch
DeltaFile
+9-9llvm/test/CodeGen/X86/avx512-gather-scatter-intrin.ll
+9-9llvm/test/CodeGen/X86/avx512-gather-scatter-intrin-deprecated.ll
+18-182 files

LLVM/project a4d1a09flang/include/flang/Evaluate complex.h integer.h, flang/lib/Evaluate initial-image.cpp character.h

[Flang] Use abstraction for binary scalar data
DeltaFile
+151-0flang/include/flang/Evaluate/character.h
+0-122flang/lib/Evaluate/character.h
+27-18flang/include/flang/Evaluate/initial-image.h
+17-21flang/lib/Evaluate/initial-image.cpp
+21-0flang/include/flang/Evaluate/integer.h
+18-0flang/include/flang/Evaluate/complex.h
+234-1614 files not shown
+263-17310 files

LLVM/project fc764a7llvm/include/llvm/IR RuntimeLibcalls.td, llvm/lib/Target/ARM ARMSubtarget.cpp

ARM: Mark more generic libgcc functions as available (#210961)

Generic libgcc/compiler-rt functions coexist with aeabi variants
(e.g., __divsi3  and __aeabi_idiv) according to my reading of the
build. At least in compiler-rt, some are aliases.

They were previously removed from the available set on AEABI+AAPCS
targets to force selection of the preferred __aeabi_* variants, back when
only one implementation per libcall could be recorded.

Now that multiple implementations can be available per libcall, stop
hiding the generics and select the __aeabi_* variant explicitly as the
preferred implementation. This reduces the number of special cases to 
consider for future libcalls info improvements.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+71-0llvm/lib/Target/ARM/ARMSubtarget.cpp
+1-7llvm/include/llvm/IR/RuntimeLibcalls.td
+72-72 files

LLVM/project fb93fddllvm/docs AMDGPUUsage.rst AMDGPUMemoryModel.md

[Docs][AMDGPU] availability/visibility in addrspace(3) and other cleanups

addrspace(3) on AMDGPU corresponds to LDS, which is a fast memory directly
accessed by all threads in a workgroup (there is no intervening cache). Thus,
any accesses to this addrspace have built-in availability and visibility at
"workgroup" scope.

Other cleanups:

- Update the intrinsic names to match the implementation.
- Explain store-available and load-visible.
- Rename to "make-available" and "make-visible" for consistent spelling.
DeltaFile
+92-53llvm/docs/AMDGPUMemoryModel.md
+2-0llvm/docs/AMDGPUUsage.rst
+94-532 files

LLVM/project f08211ellvm/lib/Target/AArch64 AArch64RegisterInfo.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

[AArch64] Remove assembler-only register classes (#211527)

ZPRMul2, ZPRMul4 and PPRMul2 register classes are used solely by the asm
parser to validate other register classes (ZPR2Mul2, ZPR4Mul4,
PPR2Mul2). Since they're real register classes TableGen synthesizes
numerous intersection classes and pressure sets from them.

Removing them and validating the constraint directly in the assembly
parser reduces:

- generated register classes: 521 -> 403 (~22%)
- generated pressure sets: 188 -> 60 (68%)
- generated register-info size: 11.9 MB -> 9.1 MB (23%)

Also improves CTMark geomean -0.23% on stage1-aarch64-O3.

https://llvm-compile-time-tracker.com/compare.php?from=a90dbb43cd67856f681feba82d51a0d5fbcae3c2&to=5565d4907cdf960cc142a7507f16e551f51919b0&stat=instructions%3Au

Assisted-by: codex
DeltaFile
+32-33llvm/lib/Target/AArch64/AArch64RegisterInfo.td
+5-3llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+3-3llvm/test/TableGen/aarch64-register-info-stats.td
+3-3llvm/test/CodeGen/AArch64/stp-opt-with-renaming.mir
+1-1llvm/test/CodeGen/AArch64/fmlal-loreg.ll
+44-435 files

LLVM/project df272b1llvm/include/llvm/TargetParser AMDGPUTargetParser.h, llvm/lib/TargetParser AMDGPUTargetParser.cpp

AMDGPU: Export the TargetParser feature bitset

Previously this bitset was only used to populate the feature
name string map used by clang. Eventually this will replace
the current bitmask integer. AArch64 already has a similar
interface.

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+17-14llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+29-0llvm/unittests/TargetParser/TargetParserTest.cpp
+16-0llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+62-143 files