[llvm] [SROA] Pre-split overlapping move slices within a partition (PR #210061)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 27 11:15:38 PDT 2026


nikic wrote:

Looks like this introduces an assertion failure (https://llvm.godbolt.org/z/MYd86YY15):
```llvm
define i64 @f(i64 %x, float %f) {
  %a = alloca [16 x i8], align 8
  store i64 %x, ptr %a, align 8
  %p6 = getelementptr i8, ptr %a, i64 6
  store float %f, ptr %p6, align 2
  %p2 = getelementptr i8, ptr %a, i64 2
  %v = load i64, ptr %a, align 8
  store i64 %v, ptr %p2, align 2
  %r = load i64, ptr %p2, align 2
  ret i64 %r
}
```
> opt: /root/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:5163: bool {anonymous}::SROA::presplitLoadsAndStores(llvm::AllocaInst&, {anonymous}::AllocaSlices&): Assertion `Offsets.Splits.back() == P.beginOffset() - Offsets.S->beginOffset() && "Previous split does not end where this one begins!"' failed.


AI generated test case.

https://github.com/llvm/llvm-project/pull/210061


More information about the llvm-commits mailing list