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