<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97447>97447</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Linker errors relating to vftable with C++20 modules on Windows
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kamrann
</td>
</tr>
</table>
<pre>
The following simple repro will generate multiple definition linker errors on Windows (regardless of link.exe or lld-link.exe, so appears the issue is with clang emitting symbols for every TU importing the module in question).
```
// mod.mxx
export module mod;
export struct poly
{
virtual ~poly() = default;
};
```
```
// a.cxx
import mod;
poly p1;
```
```
// b.cxx
import mod;
poly p2;
int main() { return 0; }
```
Tested with multiple build systems (CMake and build2), on
- trunk (c44e9ff691a10cd900b93d9ff4e0ada355ca82d7)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU82SmzwQfBpxmTIlBBg4cPi8Lp--3DaVs0ADViwkoh__XPLsKQHezab2kFS5xoie6ekRPdw5OWrElpQHUh4THvzZ2PbCJ8u1TjojHu3rGWEwSpmb1CM4Oc0KweJsDdykUjCiRss9whSUlxEUOEgtvTQalNQXtIDWGuvAaPgmtTA3B4TVFkduhULnwAxLZop3BGNBKbF7ngl7AWeAzzNy68CfEaRzIUa4SX-GXnE9Ak7S-0XgY-qMcjAYC3hF-4DXryCn2dgFjvWTEUEhSA0_Arqok7AmJfRI6H9b3NPttx7ZibBTrEun-319h_dI-eSajCD54QPivA29h9mox8ZSbQkAV2l94Ap-LiirCWuA5Md4czwo_0ZFquP78x-aPpXI0_4pcJ35g7LYDebs3yi7v6Bk75RrovYwcamfo1UHsOiD1UBJfoA41qcdl_iKzqNYP-6bp7oglQD3cB6nxT0vX_gFgWuxQoywJlrF6JVkB94GfYmZfVFgMwz7JuMZ7UVDadfkohmGAikXPC_LntdMVJFhqU1Em4smb3iCbVZlTVNkWVkm57aqq6zZF5T2gtKsw6zDri7yfj8URSf6LJEto6ygFWVZxcqyTKs8jy1wX7Maa16QguLEpUqVuk6psWOymLltqqKoEsU7VG5ZRsY03lanE8bibto21uy6MDpSUCWdd-8sXnqF7f8fts2i4qvnDVwHzzuF66W-EHYg7MDo5t7fFzMJVrVn72dH8s0Bo_Tn0KW9mQg7xY7b32625jv2nrDTotMRdlrnuLbsVwAAAP__7xJVJg">