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

    <tr>
        <th>Summary</th>
        <td>
            `registerImplicitTypeID` conflicts with dynlib on `x86_64-pc-windows-gnullvm`
        </td>
    </tr>

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

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

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

<pre>
    https://github.com/llvm/llvm-project/blob/9b7fd0099e79b0f5b824027cbae8a25356486ac9/mlir/include/mlir/Support/TypeID.h#L167

Consider `libX` being a DLL built with MLIR.
Binary `A` links against both MLIR's libraries and  `libX`.

With `x86_64-pc-windows-gnullvm` this leads to duplicated symbols even when `libX` is compiled with visibility hidden as `registerImplicitTypeID` is forcibly marked as exported.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUkk9vnDAQxT-NuViLjAEDBw6bRkiRtpemUqteKv-ZhWmMjWyzG759xW6q5NSqJ0v2zJt5Pz8ZI44OoCf1A6kfM7mmyYf-WU_BG3QjhB_Tmilvtn5KaYmkPBI-ED6MmKZV5drPhA_WXv4chyX4X6AT4YOyXhE-dKo5G8a6DppOsXOtWl4x3mgloZW8LmtRtULqjvBhthgIH9Bpuxp4v3hel8WHXfPrtsDTYz4RXp4K0RB2JOz4ybuIBgIlgllU34lgVAG6kUr6eDpRtaJN9Ippop9PT19ywo4P6GTY9objXm3RvUQqR4kuJqr8WyXhTaQWVZABIVLpDP0wI79P_7brEsFeW_FTVIdFH67ojL_Gw-jWGxnBaJowUgvSRJo8NetiUcsEhsZtVt5GChdw9DqB-2gCI9V-XtCCua9_wYgKLaaNTmgMOCrj3hBgxJggPM27MKY7pjeJsw8ald3oLMMLmL0FXneeYPLM9KXpyk5m0BeNKOuuLMo2m3qmal4UbVNKo7moJBdM1OZsdFlAIQXLsOeM10VRdJzXbd3moBsjK1kWknWFLltSMZgl2nxnkPswZhjjCn0h2qZjmZUKbLzljnMHV3p7JZzvMQz9LUtqHSOpmMWY4rtMwmSh_6tr7d3Zok7xjs1szqKi3v3rn7I12P8P-m3zSPjwZu3S898BAAD__8ubFUE">