<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/65188>65188</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AMDGPU] Assertion `MF && "function must have been generated already"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            good first issue,
            backend:AMDGPU
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jdoerfert
      </td>
    </tr>
</table>

<pre>
    This is a reproducer for the #65077 `-O0` issue resulting in the assertion:
```
llvm-project/llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.cpp:154: virtual bool llvm::AMDGPUResourceUsageAnalysis::runOnModule(llvm::Module&): Assertion `MF && "function must have been generated already"' failed.
```

`llc -O0 reducer.ll`

with reducer.ll:
```
target datalayout = "e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32-p7:160:256:256:32-p8:128:128-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7:8"
target triple = "amdgcn-amd-amdhsa"

define internal void @_omp_reduction_list_to_global_reduce_func() {
  ret void
}
```

Seems the pass is not happy if unused functions are not emitted into MIR, which should be easy to handle, e.g., by allowing missing machine functions (`MF`).

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVEuP4ygQ_jXkUnKEcXDsgw-ejjLaQ6tX8zhH2FRsZjFYgN3Kv19BHp1d7fZppIRyUVUfUI9PeK8Gg9gQ_oXww0YsYbSu-SUtujO6sOmsvDQ_RuVBeRDgcHZWLj06OFsHYUQgrCg53e-BlDR7o6SkoLxfEBz6RQdlBlAmeQrv0QVlDSlaQg-EtqSkt19StV6nbHb2F_aBsGNUo1AdYccfwg0Yd9vXw9c_fz4-vqG3i-vxpxcDtkboi1d-288zKdqc70jRwqpcWISGzloNCbRoSdF-En91cIt5M69WLhoJqz4C71slYXXEb-_viil4PUKylEAYOy-mT4Zp8QFGsSJ0iAYGNOhEQAlCOxTyQhgjbA9noTTK7X8m57GpdQ_ZGwWHqRBbrf_l867C-Gz9n2yHlFGQIggtLnYJQIpDvDVmMXnlLi3ZnD8rjBRtcV2yuXhWds9u_NlSPiv7WJeSkqJlvHys0VJFC7utmbpjrXmZQrKV7a6e6x1s3VU3n7q8ha15za6o2fo4IFt5Hnd5zrI1pwknimxlNEFEkZkEW-6y7wXLWp59zTOjSNHGG1exQM9ZC07NGu8ZE5McepOJScb_6MXD_bpKPCuDoExAZ4SG1SoJZEdPdppPqVKxS05a-XAK9jRo2wl9NeApNhFhFWE1kP2XKyCAw5BgbsfsD580zXfEyacRnIVPk2xsbMd5voA6w2IWjxLuzepBOEweOKkQm1SZYOH1j2-EvcD7qPoR_GgXLaFDQOEvECyMwsg4FC-A22EbZXcBobV9jwwwKe-TFP0YM_FxVnxZnJp4ZVbfWn8jm0LWRS022ORlXZSU1VW-GZtS9JJX2OeF3HeiqwtJc96Lrj9zsa8F26iGUVbQmuYsz0uWb7u-q0XFeVXlPK85JTuKk1B6G-d5a92wSWzVlDyvqo0WHWqf2JCxwVoJZ-V8uDJaGtIXwlgn-r_QyAeHRAM_bFyTCKxbBk92NBbTf5wSVNCJZm8h_PCbeGOzON2MIcyJtdiRsOOgwrh0295OTyz6T25ND_KEHdO7_w4AAP__gsHItQ">