[llvm] [InstCombine] Offset both sides of an equality icmp (PR #134086)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 28 22:59:02 PDT 2025
dtcxzyw wrote:
> 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...)
Fixed.
https://github.com/llvm/llvm-project/pull/134086
More information about the llvm-commits
mailing list