llvm/llvm-project
Ver no GitHubMissed optimization: (%1 <= ~%0) && (%0 > ~%1) ==> false
Open
#141.479 aberto em 26 de mai. de 2025
good first issuellvm:instcombinemissed-optimization
Métricas do repositório
- Stars
- (26.378 stars)
- Métricas de merge de PR
- (Mesclagem média 1d 2h) (1.000 fundiu PRs em 30d)
Description
The following reduced IR is derived from https://github.com/Cisco-Talos/clamav/blob/6c508107355bca613ffe7b0d2a4deb7636940a87/libclamav/pe.c#L2765
Godbolt: https://godbolt.org/z/d441Gcjdr alive2 proof: https://alive2.llvm.org/ce/z/7BfGRs
define i1 @src(i32 %0, i32 %1) local_unnamed_addr #0 {
common.ret:
%2 = xor i32 %0, -1
%3 = icmp ule i32 %1, %2
%4 = xor i32 %1, -1
%5 = icmp ugt i32 %0, %4
%common.ret.op = and i1 %3, %5
ret i1 %common.ret.op
}
expected:
define noundef i1 @tgt(i32 %0, i32 %1) local_unnamed_addr #0 {
common.ret:
ret i1 false
}
opt-trunk -O3 generates:
define i1 @src(i32 %0, i32 %1) local_unnamed_addr #0 {
common.ret:
%2 = xor i32 %0, -1
%3 = icmp ule i32 %1, %2
%4 = xor i32 %1, -1
%5 = icmp ugt i32 %0, %4
%common.ret.op = and i1 %3, %5
ret i1 %common.ret.op
}