[llvm] [InstCombine] Add cast support in simplifyUsingControlFlow (PR #142263)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 1 08:06:19 PDT 2025
https://github.com/dtcxzyw requested changes to this pull request.
Miscompilation reproducer: https://alive2.llvm.org/ce/z/jEQKTt
```
define i32 @src(i32 %0, i32 %1) {
entry:
%tobool265.not.i.i.i330.i = icmp eq i32 %0, 0
br i1 %tobool265.not.i.i.i330.i, label %if.else351.i.i.i356.i, label %cleanup748.i.i.i.i
if.else351.i.i.i356.i: ; preds = %entry
%tobool380.not.not.i.i.i357.i = icmp eq i32 %1, 0
br i1 %tobool380.not.not.i.i.i357.i, label %cleanup748.loopexit.i.i.i.i, label %cleanup748.i.i.i.i
cleanup748.loopexit.i.i.i.i: ; preds = %if.else351.i.i.i356.i
br label %cleanup748.i.i.i.i
cleanup748.i.i.i.i: ; preds = %cleanup748.loopexit.i.i.i.i, %if.else351.i.i.i356.i, %entry
%2 = phi i32 [ 1, %cleanup748.loopexit.i.i.i.i ], [ 0, %entry ], [ -1, %if.else351.i.i.i356.i ]
ret i32 %2
}
define i32 @tgt(i32 %0, i32 %1) {
entry:
%tobool265.not.i.i.i330.i = icmp eq i32 %0, 0
br i1 %tobool265.not.i.i.i330.i, label %if.else351.i.i.i356.i, label %cleanup748.i.i.i.i
if.else351.i.i.i356.i: ; preds = %entry
%tobool380.not.not.i.i.i357.i = icmp eq i32 %1, 0
br i1 %tobool380.not.not.i.i.i357.i, label %cleanup748.loopexit.i.i.i.i, label %cleanup748.i.i.i.i
cleanup748.loopexit.i.i.i.i: ; preds = %if.else351.i.i.i356.i
br label %cleanup748.i.i.i.i
cleanup748.i.i.i.i: ; preds = %cleanup748.loopexit.i.i.i.i, %if.else351.i.i.i356.i, %entry
%2 = sext i1 %tobool265.not.i.i.i330.i to i32
ret i32 %2
}
```
https://github.com/llvm/llvm-project/pull/142263
More information about the llvm-commits
mailing list