[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