LLVM/project 092be5d — compiler-rt/lib/csan csan.cpp, compiler-rt/test/csan access-sizes.cpp

Use unaligned loads when snapshotting watched values
DeltaFile
+22-0compiler-rt/test/csan/access-sizes.cpp
+3-3compiler-rt/lib/csan/csan.cpp
+25-32 files

LLVM/project 62383e3 — compiler-rt/cmake config-ix.cmake, compiler-rt/cmake/Modules AllSupportedArchDefs.cmake

comments
DeltaFile
+13-9compiler-rt/lib/csan/csan_gpu.cpp
+3-3compiler-rt/cmake/config-ix.cmake
+2-2compiler-rt/lib/csan/CMakeLists.txt
+1-1compiler-rt/test/csan/CMakeLists.txt
+1-1compiler-rt/lib/csan/offload/CMakeLists.txt
+1-0compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
+21-166 files

LLVM/project 7449d39 — compiler-rt/lib/csan csan_gpu.cpp csan.cpp, compiler-rt/test/csan volatile.cpp

Remove separate volatile entry points
DeltaFile
+49-0compiler-rt/test/csan/volatile.cpp
+22-0compiler-rt/test/csan/AMDGPU/volatile.hip
+0-4compiler-rt/lib/csan/csan_gpu.cpp
+0-4compiler-rt/lib/csan/csan.cpp
+71-84 files

LLVM/project ae169f6 — compiler-rt/lib/csan CMakeLists.txt, compiler-rt/lib/csan/offload csan_offload_preinit.cpp CMakeLists.txt

[compiler-rt] Remove dlsym interceptor and support `-shared-libsan` for CSan

Summary:
Follow the UBSan offload runtime. Offload now resolves HSA through the
global scope, so the `dlsym` interceptor is no longer needed. The real
HSA entry points are still taken from the loaded HSA library rather than
`RTLD_NEXT`, since every DSO with a static runtime exports the same
wrappers and they would otherwise chain back into each other.

Build `libclang_rt.csan.so` with the offload objects folded in. The
exported HSA wrappers report failure when HSA is absent and warn when HSA
was loaded ahead of the runtime. The preinit hook moves to a separate
`csan_offload-preinit` archive for executables.
DeltaFile
+34-98compiler-rt/lib/csan/offload/csan_offload_hsa_interceptors.cpp
+84-9compiler-rt/lib/csan/CMakeLists.txt
+35-0compiler-rt/test/csan/hsa-load-order.cpp
+22-4compiler-rt/lib/csan/offload/CMakeLists.txt
+24-0compiler-rt/test/csan/hsa-missing.cpp
+22-0compiler-rt/lib/csan/offload/csan_offload_preinit.cpp
+221-1115 files not shown
+241-11111 files

LLVM/project 6ad29a0 — compiler-rt/lib/csan csan_watch.h csan_report.cpp, compiler-rt/lib/csan/offload csan_offload_report.cpp csan_offload_hsa_interceptors.cpp

[compiler-rt] Add 'csan' library for the concurrency sanitizer

Summary:
Adds the runtime for the concurrency sanitizer, both CPU and GPU.
Fundamentally, this works using the following pseudocode:

```c
static u64 watchpoints[N]; // Hash-indexed, zero is empty.

// Emitted before the access, so we never trip on our own write.
void check_access(volatile void *addr, u32 size, u32 type) {
    // Every access probes. A read conflicts only with a watched write, a
    // write conflicts with either.
    if (u64 *wp = find_watchpoint(addr, size, type))
        consume(wp, this_pc()); // Hand our location to the owner.

    if (!should_sample()) // Wave-uniform, 1-in-N chance.
        return;


    [17 lines not shown]
DeltaFile
+456-0compiler-rt/lib/csan/csan_gpu.cpp
+370-0compiler-rt/lib/csan/offload/csan_offload_hsa_interceptors.cpp
+334-0compiler-rt/lib/csan/csan.cpp
+279-0compiler-rt/lib/csan/csan_report.cpp
+184-0compiler-rt/lib/csan/offload/csan_offload_report.cpp
+163-0compiler-rt/lib/csan/csan_watch.h
+1,786-044 files not shown
+2,940-250 files

LLVM/project cc1b3fd — clang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver fsanitize.c fsanitize-concurrency-offload.c

[Clang] Support `-shared-libsan` for offload CSan

Summary:
Follow the UBSan handling. The shared runtime embeds the HSA
interceptors, so `csan_offload` is only linked with static runtimes and
executables pull in `csan_offload-preinit` to initialize early.
DeltaFile
+38-0clang/test/Driver/fsanitize-concurrency-offload.c
+9-4clang/lib/Driver/ToolChains/CommonArgs.cpp
+3-1clang/test/Driver/fsanitize.c
+50-53 files

LLVM/project b7bbcd4 — clang/lib/Driver SanitizerArgs.cpp, clang/lib/Driver/ToolChains AMDGPU.cpp CommonArgs.cpp

Comments
DeltaFile
+48-0clang/test/Driver/fsanitize-concurrency-offload.c
+27-0clang/test/Driver/fsanitize.c
+16-7clang/lib/Driver/ToolChains/Clang.cpp
+11-4clang/lib/Driver/SanitizerArgs.cpp
+5-6clang/lib/Driver/ToolChains/CommonArgs.cpp
+3-2clang/lib/Driver/ToolChains/AMDGPU.cpp
+110-195 files not shown
+112-2111 files

LLVM/project ca0a50d — clang/test/CodeGen sanitize-concurrency.c, clang/test/CodeGen/Inputs sanitize-concurrency-ignorelist.txt

ignore
DeltaFile
+29-0clang/test/CodeGen/sanitize-concurrency.c
+2-0clang/test/CodeGen/Inputs/sanitize-concurrency-ignorelist.txt
+31-02 files

LLVM/project cd831ad — clang/docs ConcurrencySanitizer.md, clang/lib/CodeGen CodeGenFunction.cpp

[Clang] Add support for the `-fsanitize=concurrency` runtime

Summary:
Add the frontend sanitizer kind, function attributes, pass pipeline
integration, predefined macro, driver handling, and documentation for
ConcurrencySanitizer.
DeltaFile
+207-0clang/docs/ConcurrencySanitizer.md
+73-0clang/test/CodeGen/sanitize-concurrency.c
+32-8clang/lib/Driver/ToolChains/CommonArgs.cpp
+15-0clang/test/Driver/fsanitize.c
+10-4clang/lib/Driver/SanitizerArgs.cpp
+10-3clang/lib/CodeGen/CodeGenFunction.cpp
+347-1510 files not shown
+375-1616 files

LLVM/project b527dd0 — llvm/lib/Transforms/Instrumentation ConcurrencySanitizer.cpp, llvm/test/Instrumentation/ConcurrencySanitizer selection.ll

comments
DeltaFile
+38-0llvm/test/Instrumentation/ConcurrencySanitizer/selection.ll
+7-5llvm/lib/Transforms/Instrumentation/ConcurrencySanitizer.cpp
+45-52 files

LLVM/project a506683 — llvm/test/CodeGen/LoongArch/lasx vselect.ll, llvm/test/CodeGen/LoongArch/lsx vselect.ll

update after rebase
DeltaFile
+23-19llvm/test/CodeGen/LoongArch/lsx/vselect.ll
+4-8llvm/test/CodeGen/LoongArch/lasx/vselect.ll
+27-272 files

LLVM/project e633c7d — clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/CodeGen CIRGenCoroutine.cpp

[ClangIR] Support bool-returning await_suspend (#227527)

Support bool-returning `await_suspend` in ClangIR:

- Add an optional boolean condition operand to `cir.coro.suspend_point`
to signal whether suspension takes effect or is vetoed.
- In CIRGen, evaluate the `await_suspend` expression as boolean when
`SuspendReturnType::SuspendBool` and pass the condition to
`cir.coro.suspend_point`.
- Update control flow and successor regions for `cir.await` accordingly.
- Add MLIR and CodeGen test coverage.

Closes #227404
DeltaFile
+44-0clang/test/CIR/CodeGenCoroutines/coro-await-suspend-bool.cpp
+37-0clang/test/CIR/IR/await.cir
+17-9clang/lib/CIR/CodeGen/CIRGenCoroutine.cpp
+17-2clang/include/clang/CIR/Dialect/IR/CIROps.td
+9-2clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+124-135 files

LLVM/project 8612284 — llvm/lib/Target/LoongArch LoongArchISelLowering.cpp

fix typo
DeltaFile
+1-1llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+1-11 files

LLVM/project 93bceeb — llvm/lib/Target/LoongArch LoongArchISelLowering.h LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch/lasx vselect.ll

[LoongArch] Custom legalize vselect to vector_shuffle for most constant condition cases
DeltaFile
+48-36llvm/test/CodeGen/LoongArch/lasx/vselect.ll
+44-34llvm/test/CodeGen/LoongArch/lsx/vselect.ll
+49-2llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+1-0llvm/lib/Target/LoongArch/LoongArchISelLowering.h
+142-724 files

LLVM/project 80fd3e8 — llvm/include/llvm/CodeGen MachineScheduler.h, llvm/lib/CodeGen MachineScheduler.cpp

Address comments

Created using spr 1.3.6-beta.1
DeltaFile
+15-27llvm/lib/CodeGen/MachineScheduler.cpp
+12-2llvm/include/llvm/CodeGen/MachineScheduler.h
+2-2llvm/test/CodeGen/RISCV/postmisched-antidep-region.mir
+29-313 files

LLVM/project a5f1fba — .github/workflows libcxx-lnt-pipeline-libstdcxx.yml libcxx-lnt-pipeline.yml

[libc++] Extract running the benchmarks into reusable workflows (#232168)

This patch moves the jobs that actually run the benchmarks into their
own workflows and defines the full "benchmarking pipeline" in a
dedicated workflow as well. This allows seeing the full set of steps in
the pipeline in a concise way, and removes most of the remaining
duplication of logic.
DeltaFile
+0-183.github/workflows/libcxx-benchmark-commit.yml
+153-0.github/workflows/libcxx-run-benchmarks.yml
+0-145.github/workflows/libcxx-benchmark-libstdcxx.yml
+115-0.github/workflows/libcxx-run-libstdcxx-benchmarks.yml
+75-0.github/workflows/libcxx-lnt-pipeline.yml
+73-0.github/workflows/libcxx-lnt-pipeline-libstdcxx.yml
+416-3283 files not shown
+422-3349 files

LLVM/project 8ec2b01 — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/X86 mask-beforefirst.ll

[DAG] Handle widened step vectors in expandGetActiveLaneMask

On AVX512 getLegalMaskAndStepVector will need to widen the step vector type. Handle this in expandGetActiveLaneMask, so we don't crash on AVX512 which widens e.g. v8i1 -> v16i1. We don't actually use Mask, it's just a dummy poison value to work out what type the final mask result should be.
DeltaFile
+69-2llvm/test/CodeGen/X86/mask-beforefirst.ll
+6-3llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+75-52 files

LLVM/project 6f33990 — 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 63e1060 — llvm/test/CodeGen/X86 alias_mask.ll mask-beforefirst.ll

Use mask-beforefirst to test expansion
DeltaFile
+301-9llvm/test/CodeGen/X86/mask-beforefirst.ll
+0-26llvm/test/CodeGen/X86/alias_mask.ll
+301-352 files

LLVM/project 5e24884 — mlir/lib/Dialect/Bufferization/Transforms OneShotAnalysis.cpp

[mlir][bufferization] Skip read collection when no writes exist (#231771)

Collect aliasing writes before reads in the One-Shot Bufferization RaW
interference check. When there are no in-place writes, return without
collecting aliasing reads.

This avoids unnecessary read scans during pre-bufferization checks and
other cases without writes.
DeltaFile
+11-5mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp
+11-51 files

LLVM/project 7c2235b — llvm/test/CodeGen/LoongArch/lasx vec-reduce-or.ll vec-reduce-and.ll, llvm/test/CodeGen/LoongArch/lasx/ir-instruction extractelement.ll

[LoongArch] Add patterns for `[X]VSTELM_W` to adapt to LA32
DeltaFile
+27-58llvm/test/CodeGen/LoongArch/lasx/vec-trunc-combine.ll
+15-28llvm/test/CodeGen/LoongArch/lasx/ir-instruction/extractelement.ll
+9-32llvm/test/CodeGen/LoongArch/lsx/vec-trunc.ll
+16-22llvm/test/CodeGen/LoongArch/lasx/xvexth.ll
+11-24llvm/test/CodeGen/LoongArch/lasx/vec-reduce-or.ll
+11-24llvm/test/CodeGen/LoongArch/lasx/vec-reduce-and.ll
+89-18822 files not shown
+251-51628 files

LLVM/project 35b7694 — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/X86 alias_mask.ll

[DAG] Explicitly truncate splat operand in get_active_lane_mask expansion

x86 can't handle the implicit truncation of build_vector operands so the whilewr_8 test case crashes after expanding get_active_lane_mask (stemming from llvm.loop.dependence.war.mask). Fix it by explicitly truncating it.
DeltaFile
+26-0llvm/test/CodeGen/X86/alias_mask.ll
+1-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+27-02 files

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

[DAG] Use getLegalMaskAndStepVector in expandGetActiveLaneMask

Currently we will either use the mask vector type if it's big enough to fit the elements, or promote the element width to the scalar operand type.

In the latter case we will end up with a vector element type larger than strictly necessary, which means a v32i1 mask will get promoted to v32i64 on RISC-V, which isn't a legal type, and expansion fails.

We can use a legal vector type that's just small enough via getLegalMaskAndStepVector, which is already used by expandVectorFindLastActive, expandCttzElts etc. This fixes crashes on RISC-V and also uses a more compact step vector. It also means we can handle scalable vectors.

We need to move the function into TargetLowering.cpp to use the getLegalMaskAndStepVector, but this brings it inline with the other expansions.
DeltaFile
+1-43llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
+21-17llvm/test/CodeGen/AArch64/neon-get-active-lane-mask.ll
+30-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+4-5llvm/test/CodeGen/AArch64/mask-beforefirst.ll
+5-0llvm/include/llvm/CodeGen/TargetLowering.h
+61-655 files

LLVM/project efd4965 — orc-rt/lib/bedrock CMakeLists.txt, orc-rt/lib/connect CMakeLists.txt

[orc-rt] Merge split target_link_libraries calls. NFC. (#232166)

Each shipped library set its PUBLIC and PRIVATE link libraries in
separate target_link_libraries calls. Use one call per library.
DeltaFile
+1-3orc-rt/lib/connect-tcp/CMakeLists.txt
+1-3orc-rt/lib/connect-socket/CMakeLists.txt
+1-2orc-rt/lib/connect/CMakeLists.txt
+1-2orc-rt/lib/bedrock/CMakeLists.txt
+4-104 files

LLVM/project e94aead — llvm/test/CodeGen/LoongArch expandmemcmp-optsize.ll expandmemcmp.ll

update tests
DeltaFile
+670-297llvm/test/CodeGen/LoongArch/expandmemcmp.ll
+612-155llvm/test/CodeGen/LoongArch/expandmemcmp-optsize.ll
+1,282-4522 files

LLVM/project 995bf18 — llvm/lib/Target/LoongArch LoongArchTargetTransformInfo.cpp LoongArchISelLowering.cpp

[LoongArch] Support memcmp expansion for vectors and combine for i128/i256 setcc

This commit enables memcmp expansion for lsx/lasx. After doing
this, i128 and i256 loads which are illegal types on LoongArch
will be generated. Without process, they will be splited to
legal scalar type.

So this commit also enable combination for `setcc` to bitcast
i128/i256 types to vector types before type legalization and
generate vector instructions.

Inspired by x86 and riscv.
DeltaFile
+119-13llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+8-3llvm/lib/Target/LoongArch/LoongArchTargetTransformInfo.cpp
+127-162 files

LLVM/project 2772f92 — clang/lib/CIR/CodeGen CIRGenFunction.cpp, clang/test/CIR/CodeGen pointer-to-data-member.cpp fixed-point-arith.cpp

[CIR] Lay out allocas in the order classic codegen does (#231974)

At -O0 the order of a function's entry-block allocas is its stack frame
layout. CIR now creates the return value's alloca before the
parameters', and keeps hoisted block-scope allocas after the function's
own, matching classic codegen.

CIRGen creates `__retval` before the parameters, as classic's
StartFunction does, and the implicit `return 0` store for `main` moves
into emitFunctionProlog, where classic emits it. HoistAllocas places
each hoisted alloca after the allocas already at the start of the
destination block instead of in front of them.

Assisted-by: Cursor / claude-opus-5.5

---------

Co-authored-by: Andy Kaylor <akaylor at nvidia.com>
DeltaFile
+205-0clang/test/CIR/CodeGen/alloca-order.cpp
+80-80clang/test/CIR/CodeGen/unary.cpp
+68-34clang/test/CIR/CodeGen/fixed-point-arith.cpp
+29-35clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+51-0clang/test/CIR/Transforms/hoist-allocas.cir
+18-18clang/test/CIR/CodeGen/pointer-to-data-member.cpp
+451-16764 files not shown
+726-40070 files

LLVM/project ec78c03 — .github/workflows libcxx-pr-benchmark.yml libcxx-benchmark-libstdcxx.yml

[libc++] Make usage of python3 work as intended on macOS benchmark runners (#232151)

Homebrew stops providing unversionned commands like `python3` in their
versionned formulae (`python at 3.14`) whenever it stops being the default.
As a result, the `python3` symlink moved from `<...>/bin` to
`<...>/libexec/bin` when the Python 3.15 formula was introduced,
displacing Python 3.14.

As a result, the macOS jobs started falling back to the system Python
3.9. Since llvm-lnt does not support Python 3.9 (which is EOL'd), that
failed the macOS benchmarking jobs (see for example [1]).

Fix this by adding <...>/libexec/bin to the path instead of just <...>/bin.

[1]: https://github.com/llvm/llvm-project/actions/runs/38039547247/job/114176935620
DeltaFile
+1-1.github/workflows/libcxx-pr-benchmark.yml
+1-1.github/workflows/libcxx-benchmark-libstdcxx.yml
+1-1.github/workflows/libcxx-benchmark-commit.yml
+3-33 files

LLVM/project 108d5c6 — llvm/test/CodeGen/LoongArch expandmemcmp-optsize.ll expandmemcmp.ll

[LoongArch][NFC] Add lsx/lasx checks for memcmp expansion tests

Add checks for lsx/lasx and check-prefixes to reduce the duplication.
DeltaFile
+1,801-193llvm/test/CodeGen/LoongArch/expandmemcmp.ll
+1,023-197llvm/test/CodeGen/LoongArch/expandmemcmp-optsize.ll
+2,824-3902 files

LLVM/project 266d08a — clang/test/CodeGen lower-mass-end-to-end.c, llvm/lib/Target/PowerPC PPCTargetTransformInfo.cpp PPCInstrInfo.cpp

[PowerPC] Prefix option names with ppc-, turn disable- to positive options (#230393)

Rename the PowerPC CodeGen options so that they start with ppc-, and
turn the -disable-* options into positive options with the default
flipped. -enable-ppc-gen-scalar-mass becomes -ppc-scalar-mass and
-disable-ppc-ctrloops becomes -ppc-ctr-loops, since -ppc-gen-scalar-mass
and -ppc-ctrloops are pass names.

Preparatory for migrating to LibraryOptions.

Aided by Opus 5.5
DeltaFile
+44-34llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+32-30llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
+18-13llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
+12-12clang/test/CodeGen/lower-mass-end-to-end.c
+11-9llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
+7-7llvm/test/CodeGen/PowerPC/vsx-fma-m-early.ll
+124-10556 files not shown
+257-23862 files