<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/112467>112467</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[InstCombine] `samesign` flag should be dropped in `foldAndOrOfICmpsWithConstEq`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
miscompilation,
llvm:instcombine
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
dtcxzyw
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dtcxzyw
</td>
</tr>
</table>
<pre>
Reproducer:
```
; bin/opt -passes=instcombine test.ll -S
define i1 @src(i8 %x, i8 %y) {
%cmp = icmp sgt i8 %x, %y
%cmpeq = icmp samesign ne i8 %x, 0
%r = select i1 %cmp, i1 true, i1 %cmpeq
ret i1 %r
}
```
```
define i1 @tgt(i8 %x, i8 %y) {
%cmpeq = icmp samesign ne i8 %x, 0
%1 = icmp slt i8 %y, 0
%r = or i1 %cmpeq, %1
ret i1 %r
}
```
```
----------------------------------------
define i1 @src(i8 %x, i8 %y) {
#0:
%cmp = icmp sgt i8 %x, %y
%cmpeq = icmp samesign ne i8 %x, 0
%r = select i1 %cmp, i1 1, i1 %cmpeq
ret i1 %r
}
=>
define i1 @tgt(i8 %x, i8 %y) {
#0:
%cmpeq = icmp samesign ne i8 %x, 0
%#1 = icmp slt i8 %y, 0
%r = or i1 %cmpeq, %#1
ret i1 %r
}
Transformation doesn't verify!
ERROR: Target is more poisonous than source
Example:
i8 %x = #x81 (129, -127)
i8 %y = #x80 (128, -128)
Source:
i1 %cmp = #x1 (1)
i1 %cmpeq = poison
i1 %r = #x1 (1)
Target:
i1 %cmpeq = poison
i1 %#1 = #x1 (1)
i1 %r = poison
Source value: #x1 (1)
Target value: poison
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVU2P4jgQ_TWViwWyy5CPQw40NNKcWmJG2nM-nOCVE2dsh4X99SsnAcIOrZ3uPixCieO8V1XvuaLKrJV1K0QK6xdALF1x_vvyFyDCehdkvTtqk06bQa7LS3oQndFlXwgDfAN0B3QDIZ3-4yN_IblsAfe6c2TRZdYKC3wnW-sK3eSyFcQJ65ZKkcX3kVOKym9LRmBFrSkAYxkTwPUZcEvG5QUwIRC9jAy_UzQdAb4j0i9s7ciMMxBG5AQVP2fgrBFeOPFJ7yQ6Y5gBbYUShRsKG4IM5TDiTC-m5TX4lWrEFW4mP6Ldc58eHx8scLX7DQs-J4zN0MrdIz-Tr82DxNFX9lWpi9_8fbY3ADm9dSf5fzuFfbxN-A7462eb4qn2DwoC5F9uEh_jv7X-MFlrK22azEndklIL2wJGjpyEkdUFcIoxXl8Ph7cD8A35kZnax7Sk0UaQTkurW91b4o5ZS6zuTSEeiOes6ZS4-TLpHqoH5OfYFxczTHzxC4YRYDJHXu5IOiLjCRnfkOP1-5j7lojNu88HGDPd47PHIxqlzN-Z96iTg4MVvyZ8N97tcN-txvzCHFWRU6Z6r-0ZdTqSG2RO_9fnH5QpLxOeZIFIWYQJXSWrJA6OKcWY8phSESZryhK-roqCx1FYFhFiFFaBTJHiilEWUs4Zj5echutKUJGFnOZVzmFFRZNJtVTq1Cy1qQNpbS9SxnAVRoHKcqHsNOsaaQvddFINvedHHm4B0TOBb2bTapqGJvWvFnlfW1hRJa2z9zROOjUM0W-tdduJt94RCOn1g4OQkkplNbFH3auS5IKURnedKIlsPbDSqty05Zt5q75tm87-Id1xq1vrXn9CSIPeqPToXGf9YeMecF9Ld-zzZaEbwP1Q93hbdEb_KQoHuB_kW8D95MApxX8CAAD__90qIX4">