<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/151329>151329</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[NVPTX] MIR optimizations incorrectly deleting return value register
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:NVPTX
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
AlexMaclean
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jhuber6
</td>
</tr>
</table>
<pre>
We are currently failing to build any of the NVPTX libc test suite. The following IR fails to validate with `ptxas` when run through the backend with optimizations https://godbolt.org/z/ahro9n3KE.
```llvm
target triple = "nvptx64-nvidia-cuda"
declare ptr @bar(i64)
declare i64 @baz()
define ptr @foo(i1 %cond) {
entry:
%call = call i64 @baz()
br i1 %cond, label %common.ret, label %bb
common.ret:
ret ptr null
bb:
%tmp = call ptr @bar(i64 %call)
br label %common.ret
}
```
```console
$ llc reduced.ll -mcpu=sm_89 -o reduced.s
$ ptxas -m64 -v --gpu-name sm_89 reduced.s -c
ptxas reduced.s, line 39; error : Illegal operand type to instruction 'ld'
ptxas reduced.s, line 39; error : Unknown symbol 'retval0'
```
If you look at the output PTX it just straight up deletes the `reval0` register without cleaning up its users. If you compile without optimizations the node is present, so it occurs due to some MIR optimization.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVE1v4zYQ_TX0ZSCDpmTJOuigNDUQFFsUi-3HraCoscSEIgVy6MT59QUl13G2eylgwAL55vHxcebJEPRgERu2f2BCtAbfvkhlUFomBNs_bmSk0fnmeYwd-nLTuf7S_IkgPYKK3qMlc4GT1EbbAchBF7XpQdoLuBPQiPDrH799-wuM7hQQBoIQNeEWvo0IJ2eMe02FT18XjpAYztLoXhLCq6YRWMlnepOBlRxeR7TgowUavYvDuPB3Ur2g7Ve0m0lP-l2SdjbASDQHlrdMHJk4Dq7vnKGt8wMTx3cmjnL0rrb5Lz9vGW9ZydefMeeJ8ZakH5CAvJ4NAssfgQlhzzO9lUVmz7rXMlOxl8kn3jLe9qhMsmUmD6zgnfRMHHRZMFF_BuiyWAHvTBzudk_a3qpPzqXqHTCxV872TNTAqgfGW7TkL-lSvIVlVxqzyFs-fsANnYd7op_AyA7NujBNzm490qflrlsl3W1fz_NIi0IbjVkxXXenhab5Q8r3Pvwr9qoqyfqREN6y6vH-Pe6_lbPBGUxLogBjFHjso8J-awxkk5ojyx_D9Pehhszd9sIVvzQSZFNZQHaGLBvmmFk5IawVNzhkivF2RX9wJIfSC-U1yx8AvXceWN7CkzE4SANuRi9tD3SZMfWxtoF8VKkVgYnK9ExU_4P2d_ti3auFcJk6l0yqPNJZGr7S3NvzdIKLi2CcewFJy1S4SHMkSKOnCZ5jGjzyUg8jQZyhR4OEYYGykntciEsOHgcdCP0yTi4SLFmQRjTOoClADOjDFq5HKjfN2uAN_Xn-Ert1PYIOMHsMaJc-Cy5pckpFH6CPi1nBTQhfnr5-Ythu-ibv67yWG2x21T4_HHa8rDdjI3t12HWVqiVWWPC-L7Auqn2xlyilLNVGN4KLPa9yvst3O15vZVUdMJdFdZCq3POKFRwnqc02jXvKhI0OIWKz2-9yUW-WzgzXVLxGDMvbJcyuyeibVJp1cQis4EYHCh9kpMksobpW7B__c7kA2irnPaqUoMuDJJs9UvQ2hWDE22tsojfNd2mmaYzdVrmJieMSWetfNnv3jIqYOC4XCkwcr3c6N-KfAAAA__9G4eaF">