Issue 153999
Summary Missed optimization: eliminate redundant null pointer check
Labels new issue
Assignees
Reporter zxt5
    ```
define i1 @src(ptr %arg0) {
  %v0 = getelementptr inbounds nuw i8, ptr %arg0, i64 24
  %v1 = load i32, ptr %v0, align 8
  %v2 = icmp eq i32 %v1, 14
  %v3 = icmp ne ptr %arg0, null
  %v4 = and i1 %v3, %v2
  ret i1 %v4
}

define i1 @tgt(ptr %arg0) {
  %v0 = getelementptr inbounds nuw i8, ptr %arg0, i64 24
  %v1 = load i32, ptr %v0, align 8
  %v2 = icmp eq i32 %v1, 14
  ret i1 %v2
}
```

Alive2: https://alive2.llvm.org/ce/z/-wS56j
Godbolt: https://godbolt.org/z/sbnj71bqa

Found the pattern in https://github.com/dtcxzyw/llvm-opt-benchmark/blob/main/bench/llvm/optimized/DAGISelMatcher.ll
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to