LLVM/project 6ef30f1llvm/include/llvm/CodeGen/GlobalISel GIMatchTableExecutorImpl.h

[GlobalISel] Use getTypeFromIdx instead of direct table indexing in GIR_AddCImm (#222114)
DeltaFile
+1-1llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h
+1-11 files

LLVM/project bcbab5aclang/test/Driver fsanitize-undefined-offload.c

remove not
DeltaFile
+0-15clang/test/Driver/fsanitize-undefined-offload.c
+0-151 files

LLVM/project ec054dbclang/include/clang/Driver CommonArgs.h, clang/lib/Driver/ToolChains AMDGPU.cpp Clang.cpp

[Clang] Enable UBSan for AMDGPU device offload

Summary:
This enables the device UBSan runtime for AMDGPU decides. Primarily this
required modifications to the `addSanitizerRuntime` interface so we can
query the compilation's offload status. Also need to forward it through
the linker wrapper interface. Works on all AMDGPU offload, slight hacks
around the other targets as they do not advertise sanitizer
runtimes properly.

This is linked in via a new `-u __ubsan_device_initialize` hook to pull
in the side library. This is standard behavior and keeps the core logic
mostly unchanged and re-used.
DeltaFile
+50-0clang/test/Driver/fsanitize-undefined-device-offload.c
+32-3clang/lib/Driver/ToolChains/CommonArgs.cpp
+2-2clang/lib/Driver/ToolChains/Hexagon.cpp
+2-1clang/lib/Driver/ToolChains/Clang.cpp
+1-1clang/lib/Driver/ToolChains/AMDGPU.cpp
+1-1clang/include/clang/Driver/CommonArgs.h
+88-813 files not shown
+98-1819 files

LLVM/project d6de64eclang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver fsanitize-undefined-offload.c

Device only and -shared fix
DeltaFile
+26-0clang/test/Driver/fsanitize-undefined-offload.c
+15-9clang/lib/Driver/ToolChains/CommonArgs.cpp
+41-92 files

LLVM/project 038af69clang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver fsanitize-undefined-offload.c

[Clang] Honor -Xarch_gfx* when linking the UBSan offload runtime

Empty bound architecture misses per-GPU sanitizer flags, so inspect each
offload arch when deciding whether the host interceptor is required.
DeltaFile
+16-0clang/test/Driver/fsanitize-undefined-offload.c
+7-4clang/lib/Driver/ToolChains/CommonArgs.cpp
+23-42 files

LLVM/project 92431b3clang/lib/Driver/ToolChains CommonArgs.cpp, clang/test/Driver fsanitize-undefined-device-offload.c fsanitize-undefined-offload.c

[Clang] Link libclang_rt.ubsan_offload.a for device offload

Match the compiler-rt rename of the host interceptor and the
-u __ubsan_offload_init hook.
DeltaFile
+0-50clang/test/Driver/fsanitize-undefined-device-offload.c
+50-0clang/test/Driver/fsanitize-undefined-offload.c
+5-5clang/lib/Driver/ToolChains/CommonArgs.cpp
+0-0clang/test/Driver/Inputs/resource_dir_with_amdgpu_per_target_subdir/lib/x86_64-unknown-linux-gnu/libclang_rt.ubsan_device.a
+0-0clang/test/Driver/Inputs/resource_dir_with_amdgpu_per_target_subdir/lib/x86_64-unknown-linux-gnu/libclang_rt.ubsan_offload.a
+55-555 files

LLVM/project 7caac9bbolt/include/bolt/Core MCPlusBuilder.h, bolt/include/bolt/Passes LivenessAnalysis.h

[BOLT][RISCV] Implement register analysis hooks (#220581)

This patch implements the RISC-V register-analysis hooks in
`RISCVMCPlusBuilder` that previously fell back to the unimplemented
base-class methods.

The `MCPlusBuilder` unittests fixture is also extended to create a
RISC-V binary context. New tests cover the flags-register result,
zeroing-XOR recognition, ABI register masks, general-purpose register
masks, and non-scavengeable registers. These hooks provide the
target-specific register information required by BOLT analyses and
transformations on RISC-V.
BTW, this is split out as a prerequisite fo LongJump pass implement for
RISCV.
DeltaFile
+142-14bolt/unittests/Core/MCPlusBuilder.cpp
+49-0bolt/lib/Target/RISCV/RISCVMCPlusBuilder.cpp
+1-1bolt/lib/Target/X86/X86MCPlusBuilder.cpp
+1-1bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp
+1-1bolt/include/bolt/Passes/LivenessAnalysis.h
+1-1bolt/include/bolt/Core/MCPlusBuilder.h
+195-186 files

LLVM/project 1285feacompiler-rt/test/ubsan CMakeLists.txt

Remove CMake omp dep
DeltaFile
+0-13compiler-rt/test/ubsan/CMakeLists.txt
+0-131 files

LLVM/project 4b7a249clang/test/CodeGenOpenCL builtins-amdgcn-gfx1250-async-load-store-lds.cl, llvm/include/llvm/IR IntrinsicsAMDGPU.td

[AMDGPU] Add more attributes to some intrinsics to help with attribute propagation
DeltaFile
+34-25llvm/test/Transforms/FunctionAttrs/sendmsg-nocallback.ll
+15-13llvm/include/llvm/IR/IntrinsicsAMDGPU.td
+6-6clang/test/CodeGenOpenCL/builtins-amdgcn-gfx1250-async-load-store-lds.cl
+55-443 files

LLVM/project 5503fa5bolt/lib/Passes FixRISCVCallsPass.cpp, bolt/test/RISCV call-link-register.s relax.s

[BOLT][RISCV] Remove redundant AUIPCs when rewriting call pairs (#221965)

`FixRISCVCallsPass` replaces the AUIPC instruction with a Noop when
converting an AUIPC/JALR pair into a call or tail-call pseudo. Add the
`NOP` annotation so the existing RemoveNops pass can remove it, avoiding
an unnecessary instruction in the output.
DeltaFile
+1-2bolt/test/RISCV/relax.s
+0-2bolt/test/RISCV/call-link-register.s
+2-0bolt/lib/Passes/FixRISCVCallsPass.cpp
+3-43 files

LLVM/project cc53b26compiler-rt/lib/ubsan/device ubsan_device_rpc.cpp ubsan_device_report.cpp, compiler-rt/lib/ubsan/offload ubsan_offload_rpc.cpp ubsan_offload_report.cpp

[compiler-rt] Rename ubsan_device to ubsan_offload

The host interceptor and GPU handler library serve offload, not a
generic device sanitizer. Keep the Apple add_ubsan_device_testsuite name.
DeltaFile
+0-368compiler-rt/lib/ubsan/device/ubsan_device_hsa.cpp
+368-0compiler-rt/lib/ubsan/offload/ubsan_offload_hsa.cpp
+0-343compiler-rt/lib/ubsan/device/ubsan_device_report.cpp
+343-0compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp
+0-241compiler-rt/lib/ubsan/device/ubsan_device_rpc.cpp
+241-0compiler-rt/lib/ubsan/offload/ubsan_offload_rpc.cpp
+952-95227 files not shown
+1,948-1,94933 files

LLVM/project b311408compiler-rt/cmake/caches AMDGPU.cmake, compiler-rt/lib CMakeLists.txt

Comments, fix cache, fix failure with Die(), properly ignore i128 for now
DeltaFile
+82-18compiler-rt/lib/ubsan/device/ubsan_device_report.cpp
+21-0compiler-rt/test/ubsan/AMDGPU/overflow-i128.hip
+11-3compiler-rt/lib/ubsan/device/ubsan_device_rpc.cpp
+5-1compiler-rt/lib/ubsan/device/ubsan_device_hsa.cpp
+0-3compiler-rt/lib/CMakeLists.txt
+1-1compiler-rt/cmake/caches/AMDGPU.cmake
+120-266 files

LLVM/project 030725bcompiler-rt/lib/ubsan/device ubsan_device_symbolize.cpp hsa.h

[compiler-rt] Add AMDGPU Device UndefinedBehaviorSanitizer runtime

Summary:
This adds support for full UBSan on the AMDGPU target. The GPU build of
`compiler-rt` will now build `libclang_rt.ubsan_standalone.a` and the
host build will now provide `libclang_rt.ubsan_device.a` for the
host-side formatting.

The **core** approach is to simply gather arguments from the device and
replay them on the host. The RPC interface acts as the narrow shim to
pass data between the CPU and GPU.

The changes to the core runtime are kept minimal, only exposing a few
needed hooks to re-run and symbolize reports coming from an external
caller. The device archive is a side-library which will only be present
for GPU offloading builds.

Putting this in `compiler-rt` via interceptors avoids an ABI edge
between many consumers, (OpenMP, HIP, Pytorch, etc). The runtime code is

    [42 lines not shown]
DeltaFile
+364-0compiler-rt/lib/ubsan/device/ubsan_device_hsa.cpp
+279-0compiler-rt/lib/ubsan/device/ubsan_device_report.cpp
+233-0compiler-rt/lib/ubsan/device/ubsan_device_rpc.cpp
+199-0compiler-rt/lib/ubsan/device/ubsan_device_hsa_interceptors.cpp
+172-0compiler-rt/lib/ubsan/device/hsa.h
+148-0compiler-rt/lib/ubsan/device/ubsan_device_symbolize.cpp
+1,395-032 files not shown
+2,406-7938 files

LLVM/project 8649ac2llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

[VPlan] Remove (X && Y) | (X && !Y) -> X combine. NFC

We have smaller combines that can take care of this now that we process recipes in a worklist
DeltaFile
+1-8llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-81 files

LLVM/project bbea61bllvm/test/Transforms/LoopVectorize/RISCV tail-folding-complex-mask.ll

Precommit test
DeltaFile
+163-0llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-complex-mask.ll
+163-01 files

LLVM/project 8e8607dllvm/lib/Transforms/Vectorize LoopVectorizationPlanner.h VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/RISCV tail-folding-complex-mask.ll

[VPlan] Append recipes created via builder to worklist

The previous PR appended the top most created recipe to the worklist, and this PR extends it to any other nested recipes that were created, similar to InstCombine.

This removes the header mask in a good few more places on RISC-V as measured on SPEC CPU 2017, e.g. for the following loop:

```c
long f(const int *p, const int *q, long n) {
  long a = 0, b = 0;
  for (long i = 0;; i++) {
    if (p[i] && q[i]) { a += i; b += i; }
    if (i + 1 == n) break;
  }
  return a + b;
}
```

Before:


    [49 lines not shown]
DeltaFile
+26-8llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+11-4llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+5-7llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-complex-mask.ll
+42-193 files

LLVM/project 8872533llvm/test/Transforms/LoopVectorize blend-i1.ll

Precommit test
DeltaFile
+58-0llvm/test/Transforms/LoopVectorize/blend-i1.ll
+58-01 files

LLVM/project c242d15llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

No need to dyn_cast to singledef recipe anymore
DeltaFile
+1-3llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-31 files

LLVM/project ce2ddcdllvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Unindent loop
DeltaFile
+14-13llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+14-131 files

LLVM/project 8a31437llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Address review comments

- Limit to double initial worklist size
- Use VPSingleDefRecipe type
DeltaFile
+11-6llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+11-61 files

LLVM/project b0f0d54llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Use make_pointer_range
DeltaFile
+1-2llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-21 files

LLVM/project a4d9929llvm/test/Transforms/LoopVectorize blend-i1.ll

Make then branch non-dead
DeltaFile
+10-6llvm/test/Transforms/LoopVectorize/blend-i1.ll
+10-61 files

LLVM/project 1b1f057llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Switch to SmallVector with space on stack

SmallVector allows for much larger small sizes than SetVector, so use 256 to match InstructionWorklist.
We don't need to worry about duplicate worklist entries until we add users to the worklist.
DeltaFile
+4-4llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+4-41 files

LLVM/project df5e1b2llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize iv_outside_user.ll blend-i1.ll

[VPlan] Process simplifyRecipes in a worklist

This brings simplifyRecipes further in line with InstCombine, and asides from unlocking more simplifications it also helps avoid spurious test churn whenever passes are moved around simplifyRecipes.

For now just push the new recipe onto the worklist, not its users.
This uses a post order traversal so we maintain the same simplification order as before.

I've gone through and checked every simplification we do is a canonicalisation that converges, and I checked on llvm-test-suite + SPEC CPU 2017 in various configurations that we don't hit any cycles.
DeltaFile
+23-14llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+4-8llvm/test/Transforms/LoopVectorize/dont-fold-tail-for-divisible-TC.ll
+2-3llvm/test/Transforms/LoopVectorize/blend-i1.ll
+1-2llvm/test/Transforms/LoopVectorize/iv_outside_user.ll
+30-274 files

LLVM/project 8a0cc1fllvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Capitalize variable names in comments
DeltaFile
+21-21llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+21-211 files

LLVM/project 933bab1llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Update comment
DeltaFile
+2-2llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+2-21 files

LLVM/project f3e662fllvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Drop VPValue A
DeltaFile
+22-22llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+22-221 files

LLVM/project 5683232llvm/lib/Transforms/Vectorize LoopVectorize.cpp VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize vplan-print-before-after.ll

[VPlan] Split simplifyRecipes into simplifyRecipes and combineRecipes

Bringing it in line with InstSimplify and InstCombine, split up simplifyRecipe into a function that modifies and creates recipes (combineRecipe), and one that is analysis-only (simplifyRecipe).

This allows us to avoid adding simplficiation only folds to the worklist in #213899.

The funclet.ll test no longer erases the constant-folded intrinsic call because vputils::isDeadRecipe returns false.
DeltaFile
+231-216llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+9-6llvm/test/Transforms/LoopVectorize/X86/funclet.ll
+5-5llvm/test/Transforms/LoopVectorize/VPlan/vplan-print-before-after-all.ll
+4-4llvm/test/Transforms/LoopVectorize/vplan-print-before-after.ll
+4-4llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+1-1llvm/test/Transforms/LoopVectorize/VPlan/constant-fold.ll
+254-2361 files not shown
+255-2377 files

NetBSD/pkgsrc mnZcYIGdoc CHANGES-2026

   doc: Added textproc/libxo version 2.0.0
VersionDeltaFile
1.5953+2-1doc/CHANGES-2026
+2-11 files

NetBSD/pkgsrc RZMAuletextproc Makefile

   textproc/Makefile: + libxo
VersionDeltaFile
1.1601+2-1textproc/Makefile
+2-11 files