Issue |
89669
|
Summary |
miscompile of vector double-negation + select by InstCombine
|
Labels |
miscompilation,
llvm:instcombine
|
Assignees |
|
Reporter |
regehr
|
https://alive2.llvm.org/ce/z/N1RVAr
this:
```llvm
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:
```llvm
define <4 x i32> @f(<4 x i32> %0) {
ret <4 x i32> %0
}
```
here's Alive's work about what 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 >
```
cc @nunoplopes @hatsunespica
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs