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

    <tr>
        <th>Summary</th>
        <td>
            Merge 6b2fd7aed66d592738f26c76caa8fff95e168598 into 18.x
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    [MIPS] Use generic isBlockOnlyReachableByFallthrough (#80799)

FastISel may create a redundant BGTZ terminal which fallthroughes.
```
  BGTZ %2:gpr32, %bb.1, implicit-def $at

bb.1.bb1:
; predecessors: %bb.0
```

The `!I->isBarrier()` check in
MipsAsmPrinter::isBlockOnlyReachableByFallthrough
will incorrectly not print a label, leading to a `Undefined temporary
symbol `
error when we try assembling the output assembly file. See the updated
`Fast-ISel/pr40325.ll` and
https://github.com/rust-lang/rust/issues/108835

In addition, the `SwitchInst` condition is too conservative and prints
many unneeded labels (see the updated tests).

Just use the generic isBlockOnlyReachableByFallthrough, updated by
commit 1995b9fead62f2f6c0ad217bd00ce3184f741fdb for SPARC, which also
handles MIPS.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVF2P4yYU_TXk5SoWxp88-CHZaaqpNOpos_vSNzDXNl0MFuBJ_e8r4szurFS1lSICl8PhcA5YhKBHi9iR6kyqp4NY4-R8J71Q9CCd2tLEy_PrlVRP8DUgjGjR6x50OBvXf_vdmu0zin4S0uB5uwhj4uTdOk5AWEtY0dKGc8I4oU-Envb2IkJ8vqKBWWzQexQRQYBHtVolbITzr1_-gIh-1lYYuE26n2D4wYwhe7DV9PG7D2FfSFjFSHEaF18wwj6lsZRZnrp6XozudTwqHICwUsSPshIqkzInxaNAijMsHhX2GILzgRSnBxv9RwF7-2VCSCWWPx9J8YsOZ-G9Rn_3g5OaQj9h_w203fEvegmnML96bSP6tHlx-k9396U3bQxo2zvvsY9mA-siLIkIBBgh0aRTGxRK2xGiA5GUfbUKB21RQcR5cV74bacL2yydge_nQe-dh9uEFm4I0W8gQsBZmjvbhODWuKzxvbrBoA1mcEW8z66LEhHVd6tS7MeUO2GXxZe0YFVmTDJE2AdqinFJNhN2Iewy6jitMuvdTNjFryEejbDjo0_YRYewYiDsktO2LaqPITxbEErpqJ1NFsQ9k-tNx356tiHeY3B2R4AOEJ1LhYD-TUT9hknTbmXYGWdhN1itRVSodnNDuuPh59NCxBADYTz7KOe3NURYw478308oKX-nlY-MejfPOkLOeSX5gELVbGBD3VOhWN5IRWmPRd6WQ1Pmg5IwOA_X19PnT4lsf0rCBPewW1hlMEB64NlBdYXiBRcH7PKGNqykRcMPU1dKIfOK1axRspUFz3lTD7LivB5YqQQ96I5RVlJG67xhdc6ztkFaK5kj4wNSVpOS4iy0yYx5mzPnx8M9uq6lbdMcdi_fv0C-S6CjXMdASmp0iOHHsqijwe4F_YhQSzaoRqCqa1Vx1hTtwOq-qXsh2mEYeIV53Va8BW2jg7zN_jqs3nT_csXSNo-_4-Ldn9j_dMvuav8OAAD__54OoQk">