Reproducer: https://alive2.llvm.org/ce/z/rSUfvo ``` define i1 @src(i32 noundef %Value) { entry: %cmp.not = icmp eq i32 %Value, 0 %0 = call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %Value) %cmp1 = icmp ult i32 %0, 2 %1 = select i1 %cmp.not, i1 false, i1 %cmp1 ret i1 %1 } define i1 @tgt(i32 noundef %Value) { entry: %0 = call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %Value) %1 = icmp eq i32 %0, 1 ret i1 %1 } ``` When `%Value == 0`, `@src` returns `false` but `@tgt` returns `poison`. This miscompilation was triggered after https://github.com/llvm/llvm-project/pull/111284 was landed.