[llvm] [InstCombine] Merge one-use GEP offsets during expansion (PR #147263)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 7 03:21:23 PDT 2025


nikic wrote:

Crashes:
```llvm
declare void @use(ptr)

define i64 @test(ptr %p, i64 %idx1, i64 %idx2, i64 %idx3) {
  %gep1 = getelementptr i8, ptr %p, i64 %idx1
  %gep2 = getelementptr i8, ptr %p, i64 8
  call void @use(ptr %gep2)
  %gep3 = getelementptr i8, ptr %gep2, i64 %idx2
  %gep4 = getelementptr i8, ptr %gep3, i64 %idx3
  call void @use(ptr %gep4)
  %gep1.int = ptrtoint ptr %gep1 to i64
  %gep4.int = ptrtoint ptr %gep4 to i64
  %sub = sub i64 %gep1.int, %gep4.int 
  ret i64 %sub
}
```

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


More information about the llvm-commits mailing list