[llvm] [InstCombine] Offset both sides of an equality icmp (PR #134086)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 28 06:03:23 PDT 2025


https://github.com/nikic commented:

One of the common diffs on llvm-opt-benchmark is something like this:
```llvm
@g = external global i8

define i1 @src(ptr %p) {
  %i = ptrtoint ptr %p to i64
  %sub = sub i64 %i, ptrtoint (ptr @g to i64)
  %cmp = icmp eq i64 %sub, -1
  ret i1 %cmp
}

define i1 @tgt(ptr %p) {
  %cmp = icmp eq ptr %p, inttoptr (i64 add (i64 ptrtoint (ptr @g to i64), i64 -1) to ptr)
  ret i1 %cmp
}
```

I think we probably don't want to transform that case. It doesn't really simplify anything, just shift something from an instruction into a constant expression. (And may break pointer subtraction optimizations...)

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


More information about the llvm-commits mailing list