Closed
Description
https://alive2.llvm.org/ce/z/N1RVAr
this:
define <4 x i32> @f(<4 x i32> %0) {
%2 = sub <4 x i32> zeroinitializer, %0
%3 = select <4 x i1> <i1 false, i1 true, i1 poison, i1 poison>, <4 x i32> %2, <4 x i32> %0
%4 = sub <4 x i32> zeroinitializer, %3
ret <4 x i32> %4
}
is being optimized to:
define <4 x i32> @f(<4 x i32> %0) {
ret <4 x i32> %0
}
here's Alive's work explaining why this is wrong:
ERROR: Value mismatch
Example:
<4 x i32> %#0 = < #x00000001 (1), poison, poison, poison >
Source:
<4 x i32> %#2 = < #xffffffff (4294967295, -1), poison, poison, poison >
<4 x i32> %#3 = < #x00000001 (1), poison, poison, poison >
<4 x i32> %#4 = < #xffffffff (4294967295, -1), poison, poison, poison >
Target:
Source value: < #xffffffff (4294967295, -1), poison, poison, poison >
Target value: < #x00000001 (1), poison, poison, poison >