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

    <tr>
        <th>Summary</th>
        <td>
            [x64][win] Bad codegen with -import-call-optimization
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          SEt-t
      </td>
    </tr>
</table>

<pre>
    I was excited to see new optimization option for library calls, but currently (21.1.0-rc1) it produces broken code:
https://godbolt.org/z/TazjTxfdz

It does generate REX-CALL and NOP, but
1) CALL type is wrong (relative instead of indirect).
2) NOP is slightly different to the one generated by MSVC: 0F 1F 44 00 08 instead of 0F 1F 44 00 00. Not sure if this is important to system loader or not.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxckk9vnDAQxT-NuYxAtoHd5cBh8wcpUppETVT1avAATr32yh6y2f30lUnUpj2BNR6_92Z-KkYzOcSW1VesvsnUQrMP7fMt5ZT1Xp_bOzipCPg-GEIN5CEigsMT-COZg7koMt6tB-9g9AGs6YMKZxiUtZHJa-gXgmEJAR3ZMzC5k6IQBc_DIJhswBAcg9fLgBH64H-hg8FrZOWe8f1MdIzpV3ZMdpPXvbdU-DAx2V2Y7F7U5fXlfdQXxtP1OwLtMcKEDoMihO-3P_Pr_f09KKfh4fHp0w_j-1V7LdH5iGAinIJ3U_IX0CoybwjGRUKlwY9gnDYBB2KyKRjfy9T98PiU-qI105yiaTOOmGKmMdGM4B3-saKhP8O35x_XrNwD70B0UFXAOfDdV51_KryAB08Ql4BgRqDZxCRoDkcfSH3oxHMkPID1SmMAH8B5KjLdlropG5VhK7Z1yeVGbMpsbrccx5qPO6Ga3TBWSmxQl40YxG4oN40QmWkllzXfSi7qSlZlofQWm0rg0AxabKqSVRwPytjC2rdD2kRmYlywFVWzFVVmVY82rjhJmTBZq0zKRFdoU1PeL1NkFbcmUvz7DBmyK4fvm4rVN6y-OhnH6hu4UnolYkIHJ0Mz5B8DyBNh-VcMsyXY9j9kDM1LXwz-wGSXtD4_-TH413Wf3eowMtl9Rnhr5e8AAAD__0hE_k4">