<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61814>61814</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[GVN] missed load elimination when multiple stores contribute to a single value
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Colton1skees
</td>
</tr>
</table>
<pre>
[Compiler explorer link](https://godbolt.org/z/rErrjfzoW)
Description:
Both GVN and NewGVN fail to perform load elimination in cases where multiple stores contribute to a single constant value.
```
; Function Attrs: nofree norecurse nosync nounwind
define i16 @SampleFunc() local_unnamed_addr #0 {
entry:
%0 = load ptr, ptr @memory, align 8
%foo = getelementptr inbounds i8, ptr %0, i64 0
%foo1 = getelementptr inbounds i8, ptr %0, i64 1
store i8 7, ptr %foo, align 1
store i8 -53, ptr %foo1, align 1
%load158490 = load i16, ptr %foo, align 1
ret i16 %load158490
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU0tvozwU_TVmc9XImPeCRdN8dNfNJ3WWlcGXxK3xRbZpJv31I5M-0mmlmZEQvtjnHN8HR3qv9xaxZcWWFbtELuFArr0hE8im_gnRJz2pUzy_oWnWBh3gz9mQQwdG2ydW7JioDyHMnmXXTHRMdHtSPZmwIbdnonthonP_Ofc4vtAPJhrGd4xfn9879IPTc9BkI_viZEvhALf3dyCtgjs8xnCU2kAgmNGN5CYwJBWg0ZO2MkqAtjBIjx6OB3QI02KCng2CD-TQw0A2ON0vAaOKBK_t3mDc9kHaAM_SLLgBuMyDlfz1OX9mW-gWO6zXXYfgYtVgaXSIYMnhsDgfI3-yA1ha7FFbdeYqHLVF0GkJLOf_y2k2GLWYqJlowNAgzcNirZxQPUilHDCRcWDV9sxHG9zpvU0ATBQcWLY792EOjombuET1CSdyp7ghjd5bqC9II9FK22NAgxPaEEna9rRY5UHX7zqi4DHWZQ78s0D67wrpm8I6DdA1VBewkegj26_QqyL7DE6_QTNRxFakRZ03F53RafnHixyG82AuJV5HXu2-_RUS1WaqyRqZYJuWNU9FlpZlcmj7KivGUfIhl0WfqqwR1ZjLLK9GLjBvMNGt4CLjmWgEL0RebopeVViUddmU2GAlWM5xktpsjHmeoo0S7f2CbZnWaZ4Y2aPxb5Z1bQRd9cves5wb7YP_oAUdzGru2_s7Vuxg0t6j-mqc4wHt39pldUmyONP-5nodDku_GWhioosZvC5Xs6NHHAIT3VqFZ6JbC_kVAAD__w4RYRc">