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

    <tr>
        <th>Summary</th>
        <td>
            `push OFFSET symbol` generates wrong code for Intel syntax on i686
        </td>
    </tr>

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

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

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

<pre>
    https://godbolt.org/z/vfE68E3c9
```asm
; .att_syntax
; pushl $_foo

.intel_syntax noprefix
push OFFSET _foo
```

This generates a 16-bit push for i686-pc-linux and causes an error for i686-w64-mingw32:

> \<source\>:5:1: error: unsupported relocation type
> push OFFSET _foo

Expected behavior is that it should generate a 32-bit push that references `_foo` as an absolute address.

x86-64 is not affected.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0U02P4yoQ_DX4ghJhICQ--JCZiaV3eoc39xGGts0TBouPfOyvX-HxbqKVVrIwandVdbXKMkYzOoAWHd7Q4aOSOU0-tHaafY5Q9V4_2imlJSJ2RrRDtBu97r1Nex9GRLsfiHbX4SJOF6YaRD4QOSNBvh8Z563C3vBepvQVHy7J-7O45DhZjCj_Grzfyuu5Ny6B3fqx80uAwWzAAsL_dt1_l0_8gvul-krzOZmIR3AQZIKIJa7Frjdp1cWDD9iIk9gtameNy3csncZK5lhaHYYQfHh23QTfzcaNN0bLLl5UELtgdHhH7D36HBSs9wti5wNi5xqx8zdVuWQX87L4kEDjANYrmYx3OD0WeHL9xeB6Xu4LqILuYZJXU4aLOE0yYZNwnHy2-rdhLDGjT79rV4ABAjgFESNBVnZBsFwNyz56mwtO6wAx7l-F7yexE7yoOZ-wHIZ1jK2l0i3TDWtkBW19ZORIGtHwamqp4j07asaJOg66B00J0_owCElVfdLHyrSUUF7XhJMTrxnf15IJ0EKfFG96qiTiBGZp7N7a61xCV5kYM7R1zY-HprKyBxvX9FLq4IbXr4jSEubQFtCuz2NEnFgTU3zSJJMstEiQ13XHx9x7W1byTM0teDdi5TWsYfinJBNvyfRuDUeVg_3zNzFpyv1e-RnRrohur90S_P-gEqLdOmpEtNu8XFv6MwAA___n8Rur">