LLVM/project 5145033bolt/runtime instr.cpp sys_aarch64.h

[BOLT][AArch64][Android] Only the dumping thread can longjmp (#222719)

`__bolt_instr_recovery_active` is a process global flag and the reader
in `boltHandleFatalAndRecover()` runs on any thread. When a dump is in
flight, another thread that fails `assert()` or exhausts `GlobalAlloc`
in `instrumentIndirectCall()` could see the flag set, longjmp with the
dumping thread's buffer and restore the dump thread's sp/fp/lr. This
is wrong since the thread would then run on the dumping thread's stack
and later release a mutex that it does not own or hold.

`GlobalWriteProfileMutex` already serializes the writers, so one buffer
would be sufficient; only the reader side needs to know who owns the
buffer. Replace the flag with `__bolt_instr_recovery_tid` holding the
owner's thread ID, and longjmp only when it matches `__gettid()`. Other
threads will fall through to just record the failure and return.

Added a `__gettid()` syscall wrapper, for aarch64 only.

Assited-by: opus
DeltaFile
+9-6bolt/runtime/common.h
+11-0bolt/runtime/sys_aarch64.h
+3-3bolt/runtime/instr.cpp
+23-93 files

LLVM/project 105ff16llvm/lib/Target/RISCV/AsmParser RISCVAsmParser.cpp, llvm/lib/Target/RISCV/MCTargetDesc RISCVELFStreamer.cpp RISCVBaseInfo.cpp

[RISCV] Change RISCVABI::computeTargetABI() to return Expected<ABI>

Return Expected<ABI> instead of printing to errs()/reportFatalUsageError
internally, so callers decide whether to fall back to the default ABI
or treat the failure as fatal, and so it's unit-testable. Also fold the
duplicated Hard-float 'f'/'d' ABI checks from RISCVAsmParser.cpp and
RISCVISelLowering.cpp into computeTargetABI(), and add RISCVBaseInfoTest
coverage for the error paths.

This change was created with the help of AI tools

Reviewed By: lenary

Pull Request: https://github.com/llvm/llvm-project/pull/213410
DeltaFile
+61-59llvm/test/MC/RISCV/target-abi-invalid.s
+34-30llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp
+41-1llvm/unittests/Target/RISCV/RISCVBaseInfoTest.cpp
+15-15llvm/test/CodeGen/RISCV/target-abi-invalid.ll
+10-16llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+17-2llvm/lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp
+178-1235 files not shown
+196-14211 files

LLVM/project 204b703utils/bazel/llvm-project-overlay/libc/test/UnitTest BUILD.bazel

Fix bazel build for libc/test/UnitTest:string_utils (#223051)

Fixes https://github.com/llvm/llvm-project/pull/222988 (commit
18db3eee9d04) by adding missing dependencies.
DeltaFile
+3-0utils/bazel/llvm-project-overlay/libc/test/UnitTest/BUILD.bazel
+3-01 files

LLVM/project 28efe19clang/docs UsersManual.md, clang/include/clang/Options Options.td

[Clang] Implement -fkeep-inline-functions (#218533)

Implement the -fkeep-inline-functions flag, which forces selected inline
function definitions to be emitted into the object file even if they
have been inlined into all their callers. The function retention
behavior follows GCC's semantics.

The front-end has been modified to:
- emit the selected functions even if they are unused; and
- add the selected functions to llvm.compiler.used/llvm.used to ensure
they are retained.

The functions selected for emission are inline function definitions that
are available in the current translation unit. available_externally
definitions are excluded because their authoritative definitions are
expected to be emitted by another translation unit.

This is also done for C99 inline function external definitions with
external linkage, which would normally be emitted into the object file

    [3 lines not shown]
DeltaFile
+105-0clang/test/CodeGen/keep-inline-functions.cpp
+59-0clang/test/CodeGen/keep-inline-functions.cppm
+42-0clang/test/CodeGen/keep-inline-functions.c
+35-0clang/lib/CodeGen/CodeGenModule.cpp
+31-0clang/docs/UsersManual.md
+6-1clang/include/clang/Options/Options.td
+278-14 files not shown
+288-510 files

LLVM/project 89dcbe5llvm/lib/Support UnicodeNameToCodepointGenerated.cpp, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.512bit.ll amdgcn.bitcast.1024bit.ll

rebase

Created using spr 1.3.8-beta.1-arichardson
DeltaFile
+79,049-77,406llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+25,784-36,416llvm/test/CodeGen/RISCV/rvv/clmulh-sdnode.ll
+24,053-23,916llvm/lib/Support/UnicodeNameToCodepointGenerated.cpp
+32,849-11,102llvm/test/CodeGen/RISCV/clmul.ll
+20,070-19,319llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+12,227-23,140llvm/test/CodeGen/RISCV/rvv/clmul-sdnode.ll
+194,032-191,29942,063 files not shown
+3,102,620-1,767,57342,069 files

LLVM/project 93f0351llvm/lib/Support UnicodeNameToCodepointGenerated.cpp, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.512bit.ll amdgcn.bitcast.1024bit.ll

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.8-beta.1-arichardson

[skip ci]
DeltaFile
+79,049-77,406llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+25,784-36,416llvm/test/CodeGen/RISCV/rvv/clmulh-sdnode.ll
+24,053-23,916llvm/lib/Support/UnicodeNameToCodepointGenerated.cpp
+32,849-11,102llvm/test/CodeGen/RISCV/clmul.ll
+20,070-19,319llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+12,227-23,140llvm/test/CodeGen/RISCV/rvv/clmul-sdnode.ll
+194,032-191,29942,062 files not shown
+3,102,545-1,767,54742,068 files

LLVM/project 9a762fcclang/lib/CIR/CodeGen CIRGenBuilder.h CIRGenExprScalar.cpp, clang/test/CIR/CodeGen atomic.c

[CIR] Implement 'simple' atomic inc/dec. (#222730)

This only works for types where a compare-exchange instruction (or just
a lock-free implementation matters) is possible, and a loop isn't
necessary. This is basically just a conversion of classic-codegen,
  except it clarifies some of the logic (particularly around bools).
DeltaFile
+215-0clang/test/CIR/CodeGen/atomic.c
+81-3clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp
+2-0clang/lib/CIR/CodeGen/CIRGenBuilder.h
+298-33 files

LLVM/project ecb66efclang/lib/CIR/CodeGen CIRGenClass.cpp CIRGenException.cpp

[CIR][NFCI] Refactor uses of 'mlir::Location' vs 'SourceRange' on calls/etc (#222981)

As a prerequisite to an upcoming patch, emitCall needs access to the
Clang source locations, not just the mlir::Location. We're going to need
this in quite a few more places in the future, since there are various
diagnostics that use clang locations in the code generation.

This patch also has to change the RAII source location stuff, which I
switched to SourceRange. This should improve the amount of data we give
for our source information.

I DID have to remove the assertion on it though, because we do have a
few places that intentionally wanted an invalid location if other stuff
wasn't available (see the CUDA use in particular), but otherwise this
should allow us to improve our source location info, AND use it for
diagnostics in the future.
DeltaFile
+25-22clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+12-11clang/lib/CIR/CodeGen/CIRGenFunction.h
+10-11clang/lib/CIR/CodeGen/CIRGenExprCXX.cpp
+8-7clang/lib/CIR/CodeGen/CIRGenDecl.cpp
+6-6clang/lib/CIR/CodeGen/CIRGenClass.cpp
+7-5clang/lib/CIR/CodeGen/CIRGenException.cpp
+68-6214 files not shown
+111-11020 files

LLVM/project c177644llvm/test/CodeGen/AArch64 overflow-vec.ll, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.832bit.ll amdgcn.bitcast.896bit.ll

rebase

Created using spr 1.3.8-beta.1-arichardson
DeltaFile
+57,327-55,762llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+6,634-6,608llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+5,576-5,657llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+4,486-4,550llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+6,589-0llvm/test/CodeGen/AArch64/overflow-vec.ll
+2,884-2,534llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
+83,496-75,1114,371 files not shown
+279,147-173,4894,377 files

LLVM/project dbb0e7bllvm/test/CodeGen/AArch64 overflow-vec.ll, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.832bit.ll amdgcn.bitcast.896bit.ll

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.8-beta.1-arichardson

[skip ci]
DeltaFile
+57,327-55,762llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+6,634-6,608llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+5,576-5,657llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+4,486-4,550llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+6,589-0llvm/test/CodeGen/AArch64/overflow-vec.ll
+2,884-2,534llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
+83,496-75,1114,371 files not shown
+279,147-173,4894,377 files

LLVM/project e41147dllvm/lib/Target/RISCV RISCVInstrInfoXVentana.td, llvm/test/CodeGen/RISCV select-binop-identity.ll condbinops.ll

[RISCV] Remove Ventana Conditional Ops (#221042)

This extension is used by any silicon as far as I am aware.

If any person/company was reliant on this extension, the extension
can be added back in under the same/different name.

AI Usage: Assisted by Codex
DeltaFile
+0-1,202llvm/test/CodeGen/RISCV/condops.ll
+0-455llvm/test/CodeGen/RISCV/zicond-opts.ll
+0-407llvm/test/CodeGen/RISCV/select.ll
+0-115llvm/test/CodeGen/RISCV/condbinops.ll
+0-96llvm/test/CodeGen/RISCV/select-binop-identity.ll
+0-32llvm/lib/Target/RISCV/RISCVInstrInfoXVentana.td
+0-2,30717 files not shown
+14-2,38123 files

LLVM/project 9a9ed33llvm/test/tools/dsymutil/Inputs/member-hash 2.o debug-map.map, llvm/test/tools/dsymutil/X86 member-hash.cpp

[dsymutil] Test qualified name hashing for members (#223017)

hashFullyQualifiedName walks DW_AT_specification to reach a member's
enclosing struct, so the accelerator table entry for a type nested in an
out-of-line member function definition depends on that walk. Pin the
resulting hash.

The test has lived downstream since the fix that made the function take
its DWARFDie by value instead of by pointer, where the pointee went out
of scope during the walk. Give it a debug map of its own describing
member-hash/2.o rather than extending the shared dummy-debug-map.map,
which describes a different set of objects.

rdar://184990209
DeltaFile
+40-0llvm/test/tools/dsymutil/X86/member-hash.cpp
+8-0llvm/test/tools/dsymutil/Inputs/member-hash/debug-map.map
+0-0llvm/test/tools/dsymutil/Inputs/member-hash/2.o
+48-03 files

LLVM/project 02780b2mlir/include/mlir/Conversion Passes.td, mlir/include/mlir/Dialect/LLVMIR ROCDLTargetInfo.h

[mlir][AMDGPU] Keep `chipset` as a deprecated alias for `arch`

Renaming the option meant every existing invocation of these passes had
to be updated in lockstep. Accept the old spelling instead: `chipset` on
`convert-amdgpu-to-rocdl`, `convert-gpu-to-rocdl`, `convert-arith-to-amdgpu`,
`convert-math-to-rocdl` and `amdgpu-emulate-atomics`, and `chip` on
`gpu-lower-to-rocdl-pipeline`, which is what each of them was called
before the rename.

`arch` wins whenever it names a target; the alias is consulted only when
`arch` is still at the sentinel that means "no target given", so with
neither given the error still names the unusable default rather than an
empty string, and a stale alias value is reported as itself.
DeltaFile
+27-0mlir/test/Conversion/ArithToAMDGPU/deprecated-chipset-alias.mlir
+22-0mlir/unittests/Dialect/LLVMIR/ROCDLTargetInfoTest.cpp
+6-3mlir/lib/Dialect/GPU/Pipelines/GPUToROCDLPipeline.cpp
+8-0mlir/include/mlir/Conversion/Passes.td
+7-0mlir/lib/Dialect/LLVMIR/IR/ROCDLTargetInfo.cpp
+6-0mlir/include/mlir/Dialect/LLVMIR/ROCDLTargetInfo.h
+76-39 files not shown
+96-1115 files

LLVM/project 3874f92flang/test/Lower/OpenMP target_cpu_features.f90

Update features test for flang
DeltaFile
+1-1flang/test/Lower/OpenMP/target_cpu_features.f90
+1-11 files

LLVM/project 85cc794mlir/docs ReleaseNotes.md, mlir/include/mlir/Dialect/LLVMIR ROCDLTargetInfo.h

[mlir][ROCDL] Carry `arch`'s xnack/sramecc onto the module

`rocdl-attach-target` rejected a target ID that pinned xnack or sramecc,
because `#rocdl.target` feeds a TargetMachine and the backend no longer
accepts those two as subtarget features. Now that the module attributes
exist, migrate them instead of refusing: `TargetInfo` gains
`migrateArchFeaturesToModuleFlags`, which records the settings the target
ID pinned as `rocdl.xnack` / `rocdl.sramecc` on a module, and
`rocdl-attach-target` calls it on each module it attaches to.

A setting the target ID leaves open, or that the GPU does not support, is
left alone rather than written as false: an absent flag means "either",
so writing false would be a different request. That also means an
attribute already on the module survives an `arch` that says nothing
about the feature, while an `arch` that does pin it wins as the more
specific request.
DeltaFile
+55-0mlir/unittests/Dialect/LLVMIR/ROCDLTargetInfoTest.cpp
+6-27mlir/lib/Dialect/GPU/Transforms/ROCDLAttachTarget.cpp
+17-10mlir/test/Dialect/LLVMIR/rocdl-attach-target-arch.mlir
+22-0mlir/lib/Dialect/LLVMIR/IR/ROCDLTargetInfo.cpp
+13-0mlir/include/mlir/Dialect/LLVMIR/ROCDLTargetInfo.h
+8-1mlir/docs/ReleaseNotes.md
+121-381 files not shown
+123-397 files

LLVM/project 7fe87acmlir/include/mlir/Dialect/LLVMIR ROCDLTargetInfo.h, mlir/lib/Dialect/GPU/Pipelines GPUToROCDLPipeline.cpp

[mlir][AMDGPU] Take an `arch` target ID instead of triple/chip/features

`features` was a general `-mattr` string, which needed a general feature
parser and let callers ask for arbitrary combinations we have no interest
in supporting. In practice the only things anyone sets are the wavefront
size and the xnack/sramecc settings that come off a device query.

Replace `triple`, `chip` and `features` with a single `arch` option that
names the target the way Clang does, parsed by `llvm::AMDGPU::TargetID`
rather than by hand. It accepts

  - a processor, with optional target-ID modifiers: `gfx942`,
    `gfx942:xnack+`, `gfx9-4-generic`;
  - a triple: `amdgpu9.42-amd-amdhsa`;
  - a full target ID: `amdcgn-amd-amdhsa--gfx90a:sramecc+:xnack-`, which
    is what `rocminfo` prints for a device's ISA, so that output can be
    pasted straight in.

Since `chipset=gfx942` becomes `arch=gfx942`, migration is a rename.

    [22 lines not shown]
DeltaFile
+103-68mlir/lib/Dialect/LLVMIR/IR/ROCDLTargetInfo.cpp
+107-38mlir/unittests/Dialect/LLVMIR/ROCDLTargetInfoTest.cpp
+108-4mlir/lib/Dialect/GPU/Transforms/ROCDLAttachTarget.cpp
+98-0mlir/test/Dialect/LLVMIR/rocdl-attach-target-arch.mlir
+62-7mlir/include/mlir/Dialect/LLVMIR/ROCDLTargetInfo.h
+5-32mlir/lib/Dialect/GPU/Pipelines/GPUToROCDLPipeline.cpp
+483-14993 files not shown
+719-39799 files

LLVM/project d117423mlir/include/mlir/Dialect/LLVMIR ROCDLTargetInfo.h, mlir/lib/Conversion/AMDGPUToROCDL AMDGPUToROCDL.cpp

[mlir] Migrate AMDGPU/ROCDL to targets, not chipset versions

**migration tl;dr:** `chipset=` becomes `triple=`, migrate off of
`amdgpu::Chipset` to `ROCDL::TargetInfo`, and eventually change
`gfxXYZ` to `amdgpuX.YZ-amd-amdhsa` in that `triple` argument.

`amdgpu::Chipset` was an awkward hack that was hard to keep up to date
with changes in the compiler/new architectures, and didn't properly
support generic targets (and has been strongly disfavored by the
compiler team).

This PR replaces `amdgpu::Chipset` with `ROCDL::TargetInfo`, a
structure that uses LLVM's TargetParser and the underlying LLVM
features tables to get the real nature of the target being compiled
for.

This also helps MLIR move to
new-style (`-mtriple=amdgpuX.YZ-amd-amdhsa`) over "old
style" (`-mtriple=amdgcn-amd-amdhsa -mcpu=gfxXYZ`) triples.

    [40 lines not shown]
DeltaFile
+314-323mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp
+246-0mlir/unittests/Dialect/LLVMIR/ROCDLTargetInfoTest.cpp
+178-0mlir/lib/Dialect/LLVMIR/IR/ROCDLTargetInfo.cpp
+119-0mlir/include/mlir/Dialect/LLVMIR/ROCDLTargetInfo.h
+45-40mlir/lib/Dialect/AMDGPU/Transforms/EmulateAtomics.cpp
+49-24mlir/test/Dialect/AMDGPU/amdgpu-emulate-atomics.mlir
+951-387103 files not shown
+1,505-711109 files

LLVM/project ccc6223mlir/test/Conversion/AMDGPUToROCDL permlane.mlir mfma-gfx950.mlir, mlir/test/Dialect/AMDGPU amdgpu-emulate-atomics.mlir

[mlir][AMDGPU][NFC] Pre-commit tests for incorrect version checks

There'll be a refactoring from `amdgpu::Chipset` to
`ROCDL::TargetInfo`, thus also moving from chip version checks to
features checks. This commit adds tests for incorrect lowerings that
were allowed by the current code.

- gfx90c is >= gfx90a but stil needs atomic emulation (it doesn't
  have buffer fmax and so on).
- gfx90c is also >= gfx90a but has no barrier back-off, so it needs
  the inline asm workaround around `s_barrier` that it isn't getting
- gfx908 doesn't have a packed fp16 atomic add but we thought it did
- gfx950 is mistakenly allowing xf32 MFMAs
- gfx1200 is allowing permlane_swap instructions that it doesn't have
- gfx11.7 should be allowing OCP FP8 conversions but isn't on the list

This also cleans up some redundant tests with a --check-prefixes

AI disclosure: Claude found these and wrote the tests.

    [2 lines not shown]
DeltaFile
+36-33mlir/test/Dialect/AMDGPU/amdgpu-emulate-atomics.mlir
+28-0mlir/test/Conversion/AMDGPUToROCDL/8-bit-floats-ocp-gfx1170.mlir
+15-0mlir/test/Conversion/AMDGPUToROCDL/lds-barrier-gfx90c.mlir
+14-0mlir/test/Conversion/AMDGPUToROCDL/mfma-gfx950.mlir
+4-0mlir/test/Conversion/AMDGPUToROCDL/permlane.mlir
+97-335 files

LLVM/project d617a60mlir/lib/Dialect/LLVMIR/IR ROCDLDialect.cpp, mlir/test/Dialect/LLVMIR rocdl.mlir

Fix names up a bit
DeltaFile
+4-4mlir/test/Dialect/LLVMIR/rocdl.mlir
+3-4mlir/lib/Dialect/LLVMIR/IR/ROCDLDialect.cpp
+7-82 files

LLVM/project 96aec20mlir/include/mlir/Dialect/LLVMIR ROCDLDialect.td, mlir/lib/Dialect/LLVMIR/IR ROCDLDialect.cpp

[mlir][ROCDL] Add `rocdl.xnack` and `rocdl.sramecc` module attributes

Since 27eeb7370281, the AMDGPU backend takes the xnack
and sramecc target-ID settings from the `amdgpu.xnack` and
`amdgpu.sramecc` module flags instead subtarget features, making the
old usage a hard error.

This commit adds `rocdl.xnack` and `rocdl.sramecc` module attributes
to the discardable attribute list the ROCDL dialect defines in order
to represent these flags and adds translations for them.

Omitting them means to leave these modifiers at
their default "either" state, which isn't the same as setting them to
false.

AI disclosure: Claude wrote this code and I reviewed it and tried to
reword the comments to something better.
DeltaFile
+38-0mlir/test/Dialect/LLVMIR/rocdl.mlir
+29-0mlir/test/Target/LLVMIR/rocdl-module-flags.mlir
+18-0mlir/lib/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.cpp
+13-0mlir/include/mlir/Dialect/LLVMIR/ROCDLDialect.td
+10-0mlir/lib/Dialect/LLVMIR/IR/ROCDLDialect.cpp
+108-05 files

LLVM/project 2eb8c73llvm/include/llvm/TargetParser AMDGPUTargetParser.h, llvm/lib/Target/AMDGPU AMDGPU.td

[AMDGPU] Expose buffer resource num_records width in TargetParser (#220103)

This also fixes the conflict in gfx12.

Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply at anthropic.com>
DeltaFile
+38-0llvm/unittests/TargetParser/TargetParserTest.cpp
+13-0llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+3-3llvm/test/TableGen/AMDGPUTargetDefSubArchSpelling.td
+6-0llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+2-1llvm/utils/TableGen/Basic/AMDGPUTargetDefEmitter.cpp
+1-1llvm/lib/Target/AMDGPU/AMDGPU.td
+63-56 files

LLVM/project 64b7dfellvm/include/llvm/IR PassManager.h PassManagerImpl.h, llvm/lib/Transforms/Scalar InferAlignment.cpp

[PassManager] Store analysis results in contiguous storage (#222003)

Store per-IR analysis results in a `SmallVector` instead of `std::list`
to avoid a heap allocation per cached analysis. The lookup map stores
the raw result pointer, which stays stable behind the unique_ptr.

geomean -0.12% for optimizing builds, clang build -0.34%

https://llvm-compile-time-tracker.com/compare.php?from=e6734a41bb41d91cb880fe7abce46d8146182518&to=4fc43802817cf8daddbebadb0b7fbfaa6286e7fe&stat=instructions:u
DeltaFile
+21-11llvm/include/llvm/IR/PassManagerImpl.h
+17-14llvm/include/llvm/IR/PassManager.h
+1-0polly/include/polly/ScopInfo.h
+1-0llvm/tools/llubi/lib/Interpreter.cpp
+1-0llvm/lib/Transforms/Scalar/InferAlignment.cpp
+41-255 files

LLVM/project 181d1a6llvm/lib/Frontend/OpenMP OMPDescriptors.inc, llvm/test/Analysis/CostModel/X86 shuffle-extract_subvector.ll

Merge branch 'main' into users/adams381/cir-callconv-argmem-memory-effects
DeltaFile
+2,066-2,066llvm/test/Analysis/CostModel/X86/shuffle-extract_subvector.ll
+840-839llvm/lib/Frontend/OpenMP/OMPDescriptors.inc
+1,173-489llvm/test/CodeGen/AArch64/sve-bf16-combines.ll
+1,482-0llvm/test/CodeGen/LoongArch/memory-barrier-opt.ll
+121-1,318llvm/test/Transforms/Attributor/nofpclass.ll
+1,156-0llvm/test/Transforms/Attributor/nofpclass-fadd-fsub.ll
+6,838-4,7121,199 files not shown
+47,695-20,3191,205 files

LLVM/project 9d17025clang/test/CIR/Transforms/abi-lowering indirect-non-byval-nyi.cir, llvm/test/Analysis/CostModel/X86 rem.ll masked-divrem.ll

Merge branch 'main' into users/adams381/cir-callconv-dropped-return-res-attrs
DeltaFile
+48-556llvm/test/Transforms/LoopVectorize/X86/cost-conditional-branches.ll
+569-0llvm/test/Analysis/CostModel/X86/masked-divrem.ll
+361-205llvm/test/Transforms/AggressiveInstCombine/AArch64/or-load.ll
+547-0clang/test/CIR/Transforms/abi-lowering/indirect-non-byval-nyi.cir
+394-104llvm/test/Analysis/CostModel/X86/rem.ll
+483-0llvm/test/Transforms/AggressiveInstCombine/RISCV/or-load.ll
+2,402-865186 files not shown
+9,449-3,764192 files

LLVM/project 73abf95lldb/bindings/python get-python-config.py

[lldb] Use lowercase for path "lib\site-packages" on Windows. (#222816)

Using an uppercase "L" doesn't have any visible effect for most uses.
But if you create a zip file with `set(cpack_generator ZIP)`, you get a
zip file which contains both "lib/" and "Lib/". That produces odd
results if you extract it on Linux.
DeltaFile
+7-2lldb/bindings/python/get-python-config.py
+7-21 files

LLVM/project e0d4831clang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp, clang/test/CIR/Transforms/abi-lowering x86_64-aggregate-nyi.cir

[CIR] Remove the NYI test case for a pointer-element vector (#223019)

#222736 removed CIR_AnyPtrType from VectorElementType, so `!cir.vector<2
x !cir.ptr<!s32i>>` no longer verifies. That stops
x86_64-aggregate-nyi.cir parsing at all, so the whole test fails rather
than just that case.

The case only pinned that the x86_64 bridge refuses the shape. No C or
C++ source produces it, since clang rejects a pointer element with
"invalid vector element type", so the verifier is the earlier and better
place for that rejection. The comment in isSupportedType justifying the
bridge-side exclusion is also removed.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+0-9clang/test/CIR/Transforms/abi-lowering/x86_64-aggregate-nyi.cir
+1-2clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+1-112 files

LLVM/project c61ea75clang/include/clang/Sema AnalysisBasedWarnings.h, clang/lib/Sema AnalysisBasedWarnings.cpp

Cache analysis-warning gates by diagnostic state

Avoid resolving the same disabled warning groups for every function.
Reuse one cached policy for the lifetime, uninitialized-use,
fallthrough, recursion, noexcept, and logical-error analysis gates.

CTMark O0 (3 samples, CPU 6): 29.439800 s -> 29.457833 s (+0.061%).

Impact on significant TUs in MLIR build time:
- `mlir/lib/RegisterAllDialects.cpp`: 1.5439% fewer retired
  instructions.
- `mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp`: 0.7746% fewer retired
  instructions.

Assisted-by: Codex
DeltaFile
+51-16clang/lib/Sema/AnalysisBasedWarnings.cpp
+36-0clang/include/clang/Sema/AnalysisBasedWarnings.h
+87-162 files

LLVM/project 4371ce9llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

[NFC][SLPVectorizer] Capture TTI explicitly in the cost-caching lambdas (#223020)

Follow-up to #122348, which converted a number of lambdas in this file
to capture the TTI member explicitly. Covers a couple sites that have
been added since.
DeltaFile
+2-2llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+2-21 files

LLVM/project c501ceallvm/docs LangRef.md, llvm/lib/CodeGen MachineBlockPlacement.cpp

IR: Add verifier checks and LangRef for llvm.loop.align

Verify the nested !{!"llvm.loop.align", i32 N} tag.
Require exactly two operands, an integer constant of type i32 or smaller,
and a positive power-of-two value

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+121-0llvm/test/Verifier/llvm.loop.align.ll
+28-0llvm/test/Assembler/llvm.loop.align.ll
+27-0llvm/lib/IR/Verifier.cpp
+15-0llvm/docs/LangRef.md
+0-3llvm/lib/CodeGen/MachineBlockPlacement.cpp
+191-35 files

LLVM/project 3f3a4b3llvm/test/Verifier llvm.loop.align.ll

Address comments
DeltaFile
+14-9llvm/test/Verifier/llvm.loop.align.ll
+14-91 files