[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