<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">