| Issue |
170020
|
| Summary |
Missed Optimization: Fold `(x < 2^32) & (trunc(x to i32) == 0)` into `x == 0`
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
xuhongxu96
|
```llvm
define i1 @src(ptr %lpo_arg0) {
%v0 = getelementptr inbounds nuw i8, ptr %lpo_arg0, i64 16
%v1 = load i64, ptr %v0, align 8
%v2 = trunc i64 %v1 to i32
%v3 = icmp eq i32 %v2, 0
%v4 = icmp ult i64 %v1, 4294967296
%v5 = and i1 %v4, %v3
ret i1 %v5
}
define i1 @tgt(ptr %lpo_arg0) {
%v0 = getelementptr inbounds nuw i8, ptr %lpo_arg0, i64 16
%v1 = load i64, ptr %v0, align 8
%v2 = icmp eq i64 %v1, 0
ret i1 %v2
}
```
Alive2: https://alive2.llvm.org/ce/z/ZhcMa8
godbolt: https://godbolt.org/z/W4cPh53f6
sources: https://github.com/dtcxzyw/llvm-opt-benchmark/blob/267350b51cf66396de863f30859a2d91d72defcf/bench/z3/optimized/dl_costs.ll#L179
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs