Issue 64238
Summary [InstCombine] Missed optimization for icmp(constants[x]) when the range of x is implied
Labels llvm:optimizations, llvm:instcombine, missed-optimization
Assignees XChy
Reporter XChy
    ```llvm
@constant = constant [4 x i32] [i32 1, i32 2, i32 3, i32 4]

define i32 @src(i64 %x) local_unnamed_addr #0 {
entry:
    %cond = icmp ult i64 %x, 2
 br i1 %cond, label %case1, label %case2

case2:
    ret i32 789

case1:
    %isOK_ptr = getelementptr inbounds i32, ptr @constant, i64 %x
    %isOK = load i32, ptr %isOK_ptr, align 1
 %cond_inferred = icmp ult i32 %isOK, 5
    br i1 %cond_inferred, label %caseOK, label %caseErr

caseOK:
    ret i32 456

caseErr:
 ret i32 123
}
```
Here %cond_inferred should be always true.
[Missed example](https://godbolt.org/z/GPaoEcYT7)
[alive-tv](https://alive2.llvm.org/ce/z/ofxtZW)
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to