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

    <tr>
        <th>Summary</th>
        <td>
            MIPS assembler cannot resolve local label arithmetic in immediate expression (GNU `as` parity issue)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          bravely-beep
      </td>
    </tr>
</table>

<pre>
    When assembling [this file](https://github.com/DragonMinded/libdragon/blob/5024b45b219c1ac283a9d5d4726fb384a5200e40/boot/boot_trampoline.S), `llvm-mc` throws an error that it is unable to handle the immediate value at line 39:

```
$ llvm-mc --arch=mips64 --filetype=obj libdragon/boot/boot_trampoline.S
libdragon/boot/boot_trampoline.S:39:23: error: expected an immediate
    addiu   $t2, $t3, .Lend-.Lstart-4
 ^
libdragon/boot/boot_trampoline.S:39:29: error: expected an immediate
    addiu   $t2, $t3, .Lend-.Lstart-4
```

GNU `as` is able to determine that both of the labels in this expression are local to the current file, and correctly resolves the difference between them at assembly time. LLVM's MIPS assembler fails to do this.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0VF-L7CYU_zTm5ZBgTkxm8pCHuXc6pbBbCpe2j0XjycSL0aBm9s63L2Znu91CS_tQCCjxePz9UxmjuTqigbWfWHsu5JZmHwYV5I3svVREa6G8vg-_zuRAxkiLssZdgbWf0mwiTMYSa88Mj3NKa2TNieGF4eVq0rypavQLw8s5yKt3z8Zp0gwv1ii9_2F4UdYrhpeWo1CiVVj3Yy1HPDay160WB-wm1RyFbJFzEjzv8D49ht9SkMvqrXFUfWHYM_wMrOPW3pZyGVnHIc3Bv0SQDigEHyDNMoFJYCJsTipLkDzM0uk8mwnMspA2MhHcpN0IZILcHZo-M-P71_HHx08MBTxOg7KUYZxZc17MGjsBZZm1SfeVWHP26it8oP13JPjpX5U1px0RNqw5vVLbJ99WGhPpzPcPJoyfAACk1mYDAIYi4S4UitTkSfVETpfVU0wypFLketZ-91-R9P8Lkg9i89P3P_6cDZYxe2sivDmoKVFYslG7wcqnGfy0O2qlIhvBONjzSt_WQDEa70AGAutHaXOHXDpuIZBLr5nGzyCdhtGHQGOydwgUvb1R3Eu1mSYK5EYCRemFKLenJeflcUnukMxCFTw9_fLM8BDh-YefvrwtUoBJGht37H5HVhV6aHTf9LKgoT40PfK6E20xD7yrJ9KqEW0vuVKd0CjpiMeppoM8TKIwA3JsOda8bhvBm0roWo1td2wFr3EUiglOizS2ylmtfLgWJsaNhhq7tqmLV4n2JwDR0Qvsqwwxvwhh2AOutmtkglsTU3xvk0yyNPyF2Sid8-lNr4fE-xkgg0nzQsmM2ZD3y_YnVxgeP7i85j33N0h9sQU7_MNTk6E9hnIN_iuNObb77sjw8mB8G_D3AAAA__8o2ptR">