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

    <tr>
        <th>Summary</th>
        <td>
            [feature request] Provide diagnostic when immediate value too large for fixup
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            enhancement,
            mc
      </td>
    </tr>

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

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

<pre>
    When .set follows the use, the compiler emits a fixup slot and then never fills it. If the order is reversed, the code compiles properly with a movabs. This was intentionally allowed previously to for compatibility with other assemblers (see: https://bugs.llvm.org/show_bug.cgi?id=10583), however GAS now emits a diagnostic for this case. MASM still does not. Given that the emitted code doesn't match the assembly, and given that the fixup is never resolved, emitting an error here would make sense. There's currently an assertion to catch this behavior, but most users won't see it.
```
$ clang --version | head -n1
clang version 20.0.0git (git@github.com:llvm/llvm-project.git def22f4e718daa74c2d0c03a32e32d4913a46278)
$ cat test.s
.intel_syntax noprefix
.code64
test_case:
  mov rcx, EXAMPLE
.set EXAMPLE, (1ULL<<63ULL)
$ clang -c -o test.o test.s
$ llvm-objdump -d test.o

test.o: file format elf64-x86-64

Disassembly of section .text:

0000000000000000 <test_case>:
       0: 48 8b 0c 25 00 00 00 00       movq    0x0, %rcx
$
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsVMuu4jgQ_RqzKRE5dgJhwYKBpjXSvVJL3aOZ3ZUTVxL3ODbtcgL8_cgJ99UaCwU_yuVzTj0Ukekc4p6Vf7DytFJj7H3Y-zAEQ6va6_v-7x4dZIQRWm-tvxLEHmEkZOI4Txs_XIzFADiYSKCgNbfxAmR9BOV0snHgcMIArbGWwMQM_mznuz5oDGAIQjon1O9O9ZtngkvwFwz2DlcTe1Aw-EnVlMGP3hBcFYFxEV003ilr76ASTtRwCTgZP5K9Q_TQ-jB7VNHUxpr48OZjjwEUEQ61xUDAREWITB6gj_FCTB6YODNxrseOMmunIfOhY-JMvb--1GOXNZ1h8mw0k6ecl5VkYpdo9P46k_56-A7OX9_k0UZ1zlM0zQwpJg6NIszg-fD9GSgaa0F7JHA-ZvDVTOgg9irOwiQvEfUiULJyTGwjDCo2_WzwYHJPEJL83ef7S3AMPSISkLydFt1n18Z1oBxgCD5AjwHh6kerYVD_IhC6hPNH2mdiS9CMIaCLSXM3vxxSEJLazQOQIaixV5PxIb1RjxEGTzElUCC4-gU-Iaa0YPzE-IFt-OO3LEUBjVWug_U6JUl6gG2P0KPSsHb5YrVYvJ4LnvGMdyamaHYmsiIt-rHOGj8weUhhZOKc_taX4H9iE7NkrbEVoi1wm1daqW3RCM0bLpUUKIUudrlUxUZsqxTid3BJWqSY0bKXpWy0L3R3Ud3A-UvA1tweZylum2JZpEsvKfQpx-YdSKkNobklrb78c3j-9vTlcTFV4OuOOCZe-V9PT0wemTxuZJp-wrQI1sDaL9j8J4jJZCbv6596HC6w1g-zx_kbvsynSmiNxZStg4qAtt0U61u1Wb_yWL4nQ6-5B74FwmbOhSziLb4RXL78twFMHj-I8eWDHvPgCUNRQVUDb0CUwPn7bxmDn37Npje-yFMmFV_J_m9irfRe6p3cqRXu860UfFOUlVz1-7ospOa5bGRRFtWuLYuKt025VS3flhuxXZm94KLIc8F5ziWXWZ2raqeLTVGWXMu6ZgXHQRn71i9WhmjEfZ5vqt1uZVWNluamKwS6XrkGB3SRCcHEkQkxNGlanlZhP4cp9R5WcGsovvegVTTRzq27RRXHgBDw14gUWXmCb8FPJrWI925zTY3YDANqoyLCpOyIEL0Hq0I3h3fpDqsx2P3n3veheJaq-a14mDjPBImJ84PjtBf_BQAA___HjgTX">