LLVM/project 5f47fee — libc/src/__support/math log1p.h

[NFC][libc] Clean up unsequenced access warning (#232043)

Close #217998.

---------

Co-authored-by: root <root at Best-Komp.localdomain>
DeltaFile
+8-4libc/src/__support/math/log1p.h
+8-41 files

LLVM/project 0e87f59 — llvm/include/llvm/CodeGen AsmPrinter.h, llvm/include/llvm/MC MCAsmInfo.h

MC: Remove MCAsmInfo::ExceptionsType

The exception model now comes from the module, and the MCAsmInfo
predicates that depend on it take the model as a parameter. The
target's default model is still available from
Triple::getDefaultExceptionHandling.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-17llvm/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
+0-11llvm/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
+0-6llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
+0-4llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
+0-4llvm/include/llvm/MC/MCAsmInfo.h
+2-2llvm/include/llvm/CodeGen/AsmPrinter.h
+2-4418 files not shown
+2-7424 files

LLVM/project cf9313c — llvm/lib/Target/WebAssembly WebAssemblyTargetMachine.cpp WebAssemblyLowerEmscriptenEHSjLj.cpp, llvm/test/CodeGen/WebAssembly eh-option-errors.ll

WebAssembly: Use reportFatalUsageError for eh option errors

Avoid using the deprecated report_fatal_error, and add missing
error test coverage.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+21-4llvm/test/CodeGen/WebAssembly/eh-option-errors.ll
+2-2llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp
+1-1llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+24-73 files

LLVM/project bf5edbe — clang/lib/CodeGen BackendUtil.cpp, llvm/include/llvm/MC MCAsmInfo.h

CodeGen: Remove TargetOptions::ExceptionModel

The exception model now comes only from the "exception-model" module
flag. Remove the TargetOptions field and its copy into MCAsmInfo, so
MCAsmInfo only knows the target's default model.

The WebAssembly model checks move from the TargetMachine constructor
into the Emscripten EH/SjLj lowering pass. Clang relied on the backend
to reject non-wasm models for wasm targets, so it now rejects them
itself.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+2-31llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+13-17llvm/include/llvm/MC/MCAsmInfo.h
+22-4llvm/test/CodeGen/AMDGPU/exception-model.ll
+0-11clang/lib/CodeGen/BackendUtil.cpp
+9-2llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp
+4-5llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+50-7020 files not shown
+94-10726 files

LLVM/project a633f30 — llvm/include/llvm/Target TargetMachine.h, llvm/lib/Target TargetMachine.cpp

Let targets override the supported exception models
DeltaFile
+38-32llvm/lib/Target/TargetMachine.cpp
+18-4llvm/include/llvm/Target/TargetMachine.h
+56-362 files

LLVM/project aa673fa — mlir/lib/Dialect/Linalg/Transforms Vectorization.cpp, mlir/lib/Dialect/Vector/Utils VectorUtils.cpp

[mlir][linalg] Fix rank-reducing insert_slice vectorization writing to wrong dims (#226490)

Vectorizing a rank-reducing `tensor.insert_slice` took the vector shape
from the non-dropped result dims, but wrote the vector back with an
implied minor-identity permutation map, i.e. onto the trailing result
dims. When the dropped unit dims are not the trailing ones, those are
the wrong dims.

Inserting a `tensor<5xi32>` into `tensor<5x3xi32>` at `[0, 2] [5, 1] [1,
1]` fills column 2, one element per row. Vectorized, the write went
along dim 1, so only the first element landed and the other four were
discarded by the out-of-bounds check. With user-provided vector sizes
the write was masked with `dim(1) - index(0)` and stored past the end of
the row instead.

Fixed by passing a permutation map built from the non-dropped result
dims, and by making `createWriteOrMaskedWrite` use the dims that map
selects, both to decide whether a mask is needed and to size it: each
mask size is `dim - index` for that dim.

    [17 lines not shown]
DeltaFile
+99-3mlir/test/Dialect/Linalg/vectorization/insert-slice.mlir
+51-0mlir/test/Integration/Dialect/Linalg/CPU/vectorize-insert-slice-rank-reducing.mlir
+23-18mlir/lib/Dialect/Vector/Utils/VectorUtils.cpp
+14-3mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
+187-244 files

LLVM/project 43a69cb — llvm/lib/CodeGen TargetPassConfig.cpp, llvm/lib/Passes CodeGenPassBuilder.cpp

CodeGen: Read the exception model from the module flag

Module::getExceptionModel() now falls back to the triple's default
model instead of falling back to the TargetMachine.

The pass pipeline is built before the module is known, so schedule each
EH preparation pass when the target supports a model, and let the pass
check the module's model. Add TargetMachine::supportsExceptionModel so
the pass config can skip definitely irrelevant passes. SjLjEHPrepare is
now scheduled on every target with exception handling, and WinEHPrepare
only on COFF and Wasm targets. WinEHPrepare and WasmEHPrepare are
scheduled for Wasm by the base pass configs, replacing the WebAssembly
override.

This is almost the last step towards removing TargetOptions::ExceptionModel.

Co-authored-by: Claude Opus <noreply at anthropic.com>
DeltaFile
+38-35llvm/lib/CodeGen/TargetPassConfig.cpp
+35-34llvm/lib/Passes/CodeGenPassBuilder.cpp
+69-0llvm/test/CodeGen/X86/exception-model-flag-eh-prepare.ll
+64-0llvm/test/CodeGen/X86/exception-model.ll
+31-0llvm/lib/Target/TargetMachine.cpp
+25-0llvm/test/CodeGen/AMDGPU/exception-model.ll
+262-6940 files not shown
+361-15146 files

LLVM/project 562796d — libcxxabi CMakeLists.txt

[libc++abi] Retain the old CMP0155 behavior for GCC compatibility

Raising the minimum CMake version to 3.31 enables automatic module dependency
scanning for the C++23 libc++abi object libraries. GCC 16 and 17 then probe
the libstdc++ bits/stdc++.h header when processing libc++ headers and fail
if it is absent.

Set CMP0155 to OLD within libc++abi only when using GCC until its optional
header lookup is fixed. Preserve automatic scanning with Clang and guard
the policy setting for older CMake versions.

GCC bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127940

Validated the policy workaround on the CMake 3.31 minimum-version branch
with GCC 16.2.0 and CMake 3.31.12: the focused cxa_handlers.cpp reproducer
compiles. Clang 22.1.0 still generates and successfully executes the
clang-scan-deps rule for that source. git diff --check passes.

Assisted-by: Codex
DeltaFile
+8-0libcxxabi/CMakeLists.txt
+8-01 files

LLVM/project 5d1f4a9 — libcxx/utils/ci run-buildbot

[libc++] Disable automatic module scanning on ARM CI builders

The ARM Buildkite toolchains do not expose clang-scan-deps to CMake.
When CMP0155 enables automatic scanning for libc++abi C++23 sources,
these standalone runtimes builds fail with the scanner set to NOTFOUND.

Pass CMAKE_CXX_SCAN_FOR_MODULES=OFF in the eight ARM job invocations,
including the no-exceptions variants, until their toolchains provide a
matching scanner. Keep the other CI configurations on their defaults.

Validated bash syntax, git diff --check, and argument dispatch for all
eight ARM jobs with generic C++20, C++23, and modules jobs as controls.

Assisted-by: Codex
DeltaFile
+16-6libcxx/utils/ci/run-buildbot
+16-61 files

LLVM/project 7a015be — lldb CMakeLists.txt, llvm-libgcc CMakeLists.txt

[CMake] Bump the minimum required version to 3.31

This is a follow up to e192ec42b426f6ffbc25419238a90f3c59088587 which
changes the warning to an error when using CMake older than 3.31.

See
https://discourse.llvm.org/t/91086

Assisted-by: Codex
DeltaFile
+1-9polly/CMakeLists.txt
+1-9openmp/CMakeLists.txt
+1-9offload/CMakeLists.txt
+1-9mlir/CMakeLists.txt
+1-9llvm-libgcc/CMakeLists.txt
+1-9lldb/CMakeLists.txt
+6-5414 files not shown
+20-17420 files

LLVM/project 9357f75 — libcxx/utils/ci run-buildbot ensure-cmake.sh

[libc++] Provision a suitable CMake for CI builds

The previous commit raised cmake_minimum_required to 3.31. The GitHub
jobs already satisfy it (the Linux image pins 3.31.0, macOS uses brew,
Windows uses the hosted image), but some self-hosted Buildkite agents
ship an older CMake and their images cannot be updated by us.

Teach run-buildbot to check the CMake version up front. When the cmake
on PATH is new enough, this costs a single `cmake --version` and nothing
else changes. Otherwise, download a pinned, SHA-256 verified CMake
3.31.12 release binary into ${XDG_CACHE_HOME:-~/.cache}/libcxx (outside
the build directory that run-buildbot wipes) and, when no binary exists
for the host or it cannot run there, bootstrap it from source with the
host compilers rather than the runtime's CC/CXX. The install is
published with an atomic rename so concurrent builders on one agent
never see a partial cache entry.

An explicit CMAKE override is still honored but now validated; in the
provisioned or overridden cases its directory is prepended to PATH so

    [5 lines not shown]
DeltaFile
+180-0libcxx/utils/ci/ensure-cmake.sh
+25-11libcxx/utils/ci/run-buildbot
+205-112 files

LLVM/project 7efe912 — llvm/include/llvm/TargetParser CMakeLists.txt, llvm/lib/Target/PowerPC PPCTargetParserDef.td

PowerPC: Use minimal tablegen inputs for TargetParser

Generate PPCGenTargetFeatures.inc from a file that only includes the
feature and processor definitions, instead of the full PPC.td. Add
stub SchedMachineModel, as was recently done for AArch64 in #231954,
since the TargetParser usage does not need them.

llvm-min-tblgen -gen-target-features

                         Gigainstructions  Peak RSS  .td deps
  PPC.td                 1.72              85 MB     81
  PPCTargetParserDef.td  0.01               6 MB      7

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+33-0llvm/lib/Target/PowerPC/PPCTargetParserDef.td
+1-1utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+1-1llvm/utils/gn/secondary/llvm/include/llvm/TargetParser/BUILD.gn
+1-1llvm/include/llvm/TargetParser/CMakeLists.txt
+36-34 files

LLVM/project 73aad95 — llvm/lib/Target/PowerPC PPC.td PPCProcessors.td

PowerPC: Move processor definitions to PPCProcessors.td

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+148-0llvm/lib/Target/PowerPC/PPCProcessors.td
+1-140llvm/lib/Target/PowerPC/PPC.td
+149-1402 files

LLVM/project c8a3ca7 — llvm/lib/Target/PowerPC PPC.td PPCFeatures.td

PowerPC: Move subtarget features to PPCFeatures.td

Move the subtarget features, predicates and processor feature lists out
of PPC.td, so they can be used without parsing the instruction and
register definitions.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+574-0llvm/lib/Target/PowerPC/PPCFeatures.td
+1-566llvm/lib/Target/PowerPC/PPC.td
+575-5662 files

LLVM/project e32600f — llvm/lib/Target/PowerPC PPC.td PPCRegisterInfo.td

PowerPC: Move the PPC32 and PPC64 hardware modes to PPCRegisterInfo.td

They are only used by the register, instruction and calling convention
definitions. This allows the feature definitions to be used without
HwMode.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+0-7llvm/lib/Target/PowerPC/PPC.td
+7-0llvm/lib/Target/PowerPC/PPCRegisterInfo.td
+7-72 files

LLVM/project 7c59916 — llvm/lib/Target/X86 X86FrameLowering.cpp, llvm/test/CodeGen/X86 stack-clash-aligned-allocation.mir

[X86][StackClash] Fix guard page skip with -fstack-clash-protection (#230951)

- issue: https://github.com/llvm/llvm-project/issues/230949

- Fixes possible guard page skip while using `-fstack-clash-protection`.

- If `AlignOffset = 0`, and `Offset` is a multiple of `StackProbeSize`,
the "N-1 pages" loop will leave:
`ChunkSize = Offset - CurrentOffset = StackProbeSize`.

- This is problematic since the tail allocation does not add a probe, as
it assumes `ChunkSize < StackProbeSize`.
So it will allocate `StackProbeSize` without a probe.
DeltaFile
+49-0llvm/test/CodeGen/X86/stack-clash-aligned-allocation.mir
+25-7llvm/lib/Target/X86/X86FrameLowering.cpp
+74-72 files

LLVM/project 1b6876d — llvm/lib/Target/X86 X86FrameLowering.cpp, llvm/test/CodeGen/X86 stack-probe-call-dead-defs.ll stack-probe-inline-dead-eflags.ll

X86: Mark flag clobbers dead in stack probe expansion (#227682)

Co-authored-by: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+196-0llvm/test/CodeGen/X86/stack-probe-inline-dead-eflags.ll
+118-0llvm/test/CodeGen/X86/stack-probe-call-dead-defs.ll
+24-12llvm/lib/Target/X86/X86FrameLowering.cpp
+338-123 files

LLVM/project 4df2abf — llvm/include/llvm/IR Instructions.h, llvm/lib/CodeGen/GlobalISel IRTranslator.cpp

[IR] Use getFirstNonPHIIt for unreachable handling (NFC) (#233020)

This patch replaces BasicBlock::getFirstNonPHIOrPseudoProbe with
BasicBlock::getFirstNonPHIIt when checking whether a block contains only
an UnreachableInst or when replacing a dead block with an
UnreachableInst in SCCP.

Note that llvm.pseudoprobe is marked nounwind and willreturn, so
SimplifyCFG eliminates pseudo probes preceding an UnreachableInst, and
SCCP does not need to preserve leading pseudo probes when erasing dead
blocks.

Assisted-by: Antigravity
DeltaFile
+3-4llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+3-4llvm/lib/Transforms/IPO/SCCP.cpp
+2-2llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+2-2llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+1-2llvm/include/llvm/IR/Instructions.h
+1-1llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
+12-156 files

LLVM/project f499a07 — llvm/utils/TableGen/Common CodeGenRegisters.h

Return conflicting compositions from addComposite immediately

Check for an existing composition up front: return a conflicting one
right away, instead of after updating B's ranges from a composition that
isn't recorded. This no longer needs the try_emplace result. The
generated code for all in-tree targets is unchanged, and the instruction
count is the same.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+13-7llvm/utils/TableGen/Common/CodeGenRegisters.h
+13-71 files

LLVM/project 6b8a837 — llvm/lib/IR AutoUpgrade.cpp, llvm/test/Assembler auto_upgrade_nvvm_intrinsics.ll

[NVPTX] Attach !atomic.ignore.denormal.mode when upgrading legacy NVVM atomic add intrinsics
DeltaFile
+25-64llvm/test/CodeGen/NVPTX/atomics.ll
+6-6llvm/test/Assembler/auto_upgrade_nvvm_intrinsics.ll
+8-0llvm/lib/IR/AutoUpgrade.cpp
+39-703 files

LLVM/project 793ff02 — flang/tools/flang-driver fc1_main.cpp, llvm/tools/llvm-split llvm-split.cpp

Initialize targets before creating a LibraryOptionsContext. NFC (#233041)

Initialize the targets to register their library options, before parsing
command line arguments.

This prepares for removing the T::Global fallback in
`LibraryOptionsContext::get<T>()`.

(The -mtriple change of llvm-split was originally added for
AMDGPU --lto-partitions #83128)
DeltaFile
+6-5flang/tools/flang-driver/fc1_main.cpp
+2-3llvm/tools/llvm-split/llvm-split.cpp
+8-82 files

LLVM/project 1366bc8 — llvm/lib/IR AutoUpgrade.cpp, llvm/test/Assembler auto_upgrade_nvvm_intrinsics.ll

[NVPTX] Attach !atomic.ignore.denormal.mode when upgrading legacy NVVM atomic add intrinsics
DeltaFile
+25-64llvm/test/CodeGen/NVPTX/atomics.ll
+6-6llvm/test/Assembler/auto_upgrade_nvvm_intrinsics.ll
+8-0llvm/lib/IR/AutoUpgrade.cpp
+39-703 files

LLVM/project 27e2fc2 — lld/COFF Driver.cpp Config.h, lld/ELF Config.h

[LTO,lld] Set -mllvm library options in the LTO context. NFC (#233026)

Follow-up to #231407:  move tools off cl::ParseCommandLineOptions, which
sets the libraries' `XXXOptions::Global`, to
`cl::parseCommandLineOptions(LibraryOptionsContext &, ...)`.

lto::Config::LibraryOptions replays into every LLVMContext that LTO
creates: the regular LTO context, each ThinLTO backend, and split code
generation.

This prepares for removing the T::Global fallback in
LibraryOptionsContext::get<T>().
LLM-aided
DeltaFile
+7-0llvm/include/llvm/LTO/Config.h
+2-3lld/MachO/Driver.cpp
+4-1llvm/tools/llvm-lto2/llvm-lto2.cpp
+1-1lld/COFF/Driver.cpp
+2-0lld/ELF/Config.h
+2-0lld/COFF/Config.h
+18-59 files not shown
+30-715 files

LLVM/project 1662c23 — llvm/utils/TableGen/Common CodeGenRegisters.h

TableGen: Look up sub-register index compositions in an array

compose() looked up each composition in a std::map. It is called for
every super-register class set in extendSuperRegClasses, and by
addComposite. Sub-register indices are numbered densely, so also keep
each index's compositions in an array indexed by enum value. For
AMDGPU's 400 indices this is about 1 MB.

AMDGPU tablegen runs that build the register bank:

            Gigainstructions  Gigacycles     CPU seconds
  Before    746               474            148
  After     721 (-3.4%)       446 (-6.1%)    139 (-5.8%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+13-6llvm/utils/TableGen/Common/CodeGenRegisters.h
+13-61 files

LLVM/project a2af6ee — llvm/utils/TableGen RegisterBankEmitter.cpp, llvm/utils/TableGen/Common CodeGenRegisters.h CodeGenRegisters.cpp

TableGen: Skip classes without matching super-register classes in RegisterBankEmitter

visitRegisterBankClasses checks every sub-register index for every pair
of register classes. Skip the per-index loop if RC is not in any of the
class's super-register class sets.

AMDGPU tablegen run for AMDGPUGenRegisterBank.inc:

            Gigacycles     CPU seconds
  Before    51.7           16.0
  After     48.4 (-6.4%)   14.9 (-6.9%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+6-0llvm/utils/TableGen/Common/CodeGenRegisters.cpp
+3-0llvm/utils/TableGen/RegisterBankEmitter.cpp
+3-0llvm/utils/TableGen/Common/CodeGenRegisters.h
+12-03 files

LLVM/project 60a5f18 — llvm/utils/TableGen/Common CodeGenRegisters.cpp

TableGen: Insert super-register class sets in one step

extendSuperRegClasses added each super-register class to the composed
index's set with a separate addSuperRegClass call, which looks up the
set in the DenseMap every time. Look up the set once and insert the
whole range.

AMDGPU tablegen runs that build the register bank:

            Gigainstructions  Gigacycles     CPU seconds
  Before    797               489            153
  After     755 (-5.2%)       477 (-2.4%)    149 (-2.5%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+1-2llvm/utils/TableGen/Common/CodeGenRegisters.cpp
+1-21 files

LLVM/project 6723683 — llvm/utils/TableGen/Common CodeGenRegisters.h CodeGenRegisters.cpp

Free the sub-register map once the sorted array is built

The map is not modified after computeSuperRegs, so keep only the array,
with the sub-register index pointers so it can also be iterated, and
search it by the index's enum value.

AMDGPU tablegen runs that build the register bank:

            Gigacycles     CPU seconds    Peak RSS (RegisterBank)
  Before    541            169            857 MB
  After     540 (-0.1%)    169 (+0.1%)    792 MB (-7.6%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+18-16llvm/utils/TableGen/Common/CodeGenRegisters.cpp
+12-6llvm/utils/TableGen/Common/CodeGenRegisters.h
+30-222 files

LLVM/project ff5a258 — llvm/utils/TableGen/Common CodeGenRegisters.h

TableGen: Return early from addComposite for known compositions

computeComposites calls addComposite for each pair of sub-registers of
every register with a distinct sub-register structure, so most calls
repeat a composition that is already known. Each call still did three
std::map lookups per hardware mode to update the sub-register ranges.
If the composition already exists and its result has an offset in every
mode, the rest of the function has no effect, so return early. Cache
whether the result has an offset in every mode, since offsets are never
cleared once set.

AMDGPU tablegen runs that build the register bank:

            Gigainstructions  Gigacycles     CPU seconds
  Before    916               540            169
  After     797 (-13.0%)      489 (-9.5%)    153 (-9.4%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+21-1llvm/utils/TableGen/Common/CodeGenRegisters.h
+21-11 files

LLVM/project c7ebbff — llvm/lib/IR AutoUpgrade.cpp, llvm/test/Assembler auto_upgrade_nvvm_intrinsics.ll

[NVPTX] Attach !atomic.ignore.denormal.mode when upgrading legacy NVVM atomic add intrinsics
DeltaFile
+25-64llvm/test/CodeGen/NVPTX/atomics.ll
+6-6llvm/test/Assembler/auto_upgrade_nvvm_intrinsics.ll
+8-0llvm/lib/IR/AutoUpgrade.cpp
+39-703 files

LLVM/project b784a98 — llvm/include/llvm/FuzzMutate FuzzerCLI.h, llvm/lib/FuzzMutate FuzzerCLI.cpp

[FuzzMutate] Parse fuzzer options into a context. NFC (#233035)

Move tools off cl::ParseCommandLineOptions, which sets the libraries'
`XXXOptions::Global`, to
`cl::parseCommandLineOptions(LibraryOptionsContext &, ...)`.

Create LibraryOptionsContext after initializing the targets (which may
register library options).

This prepares for removing the T::Global fallback in
`LibraryOptionsContext::get<T>()`.
DeltaFile
+9-6llvm/lib/FuzzMutate/FuzzerCLI.cpp
+11-3llvm/include/llvm/FuzzMutate/FuzzerCLI.h
+4-3llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp
+4-3llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp
+28-154 files