<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/118137>118137</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
"Definition with same mangled name as another definition" error when compiling C++20 Modules
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
MikailBag
</td>
</tr>
</table>
<pre>
My code: https://gist.github.com/MikailBag/5803041040c052deda1d06893eae67e1
(Please note that is requires stdexec, which is AFAIK reference implementation of the C++26 `std::execution`)
When running `build.sh`, I get following error:
```
/tmp/build/vcpkg_installed/x64-linux-clang/include/exec/../stdexec/__detail/__transform_sender.hpp:103:9: error: definition with same mangled name '_ZNK7stdexec8__domain18__transform_senderclIS1_NS_14default_domainENS_7__sexprIXtlNS_12_GLOBAL__N_1UlvE8_EEENS5_6__anonEEEJNS_5__env9empty_envEEEEDcT0_OT1_DpRKT2_' as another definition
103 | operator()(_Domain __dom, _Sender&& __sndr, const _Env&... __env) const
| ^
/tmp/build/vcpkg_installed/x64-linux-clang/include/exec/../stdexec/__detail/__transform_sender.hpp:103:9: note: previous definition is here
```
I'm not an experienced modules user, so I can easily be wrong, but I don't see anything wrong in terms of linkage/ODR/etc. And based #53232 it seems, that this error is in fact internal to compiler.
Here is compiler version (it was installed from the LLVM APT repository):
```
$ clang++-19 --version
Ubuntu clang version 19.1.5 (++20241125105251+086d8e6bb5da-1~exp1~20241125105305.67)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVU1v4zYQ_TX0ZWBBpL4PPiiJ1aabZBebbFv0QtDi2GKXIlWScpzL_vaCspMG2wV6rSDYkvjImcf3Zii8VweDuCHFFSluVmIOg3Wbe_VVKH0lDqudlS-b-xforUSStTCEMHmStYR1hHUH5UNyUGGYd0lvR8K6t5mEdUWdZmlO0zzt04JJlILKtKybDAWWFVKStoTVnzQKj2BsQAiDCKA8OPxrVg49-CDxhD1h1_A8qH6Ig23X3n4Ah3t0aHoENU4aRzRBBGUN2D2EAeGasCvCrlgJpEx9kDHnrI2LzRFGypSwJmaQtr8NaMDNxihziOjdrLRM_LBgruEWDhhgb7W2zxGBzlkXl0vbiDjfkUoXxomwbplOWHfsp68HrowPQmuMX05lvtbKzKd1r4WJW6RMr2eJhHVnml2SENa9se44lxiE0stjcML4vXUj92gkumSYJpK1NM1I1jZRndfUQOJeGbXsx7MKA3gxIozCHDRKMPGFsIr_8fChusSqOZd2FMrQ-t-Ben37SPnDI6e5xL2YdbiAtw-PvOLc42lyt78HHSGM_3T38aq94_yB0y_6uK35drt9eCx4ybkw1my3218eHnnBOZpjg-MUXuLTdrvd3vRPKf_4RPnN9PnDE-OEVSA8CGPDgO4dK5K2ADTNgFTX8HrZCZ0I1hFWR21ZzW-WLGHhFqXkjwsfwkrCSuDcG-ni994aH4BvzZGwMkkSWHIjrDmPLNHiFaORYvs_UTuWTPyfHB6Vnf171ZWHAR1-79HlviWsGuNsEAbwNKFTsZAkjFbOGj3MHpdt8RZuoY8g4ZV-gR3Cs7ORyjXs5gC3IK0hrArgEUGYlzDEAlkwoAwEdKOPBamV-SoOkfjHm8-RfugTaI2EnfAogbCsyFjGQC0rjT4GWHpBGJQ_uzoyUgb2og-gTEBnhIZgobfjpDS65I3ez-gwol9H4IjOxz0hrFYBnkVc6CIT7J0dl35xd_frPbSfnsDhZL0K1r1EE_2gzHO46Bn7y5o2sF5fIpC0_bKbTZjPiLfAtEloUsDiy6UppSynlBU0LVhBCbtK61LWWO52hRRr-g1PE_32DpSlRVJW5371JNwBQ5T9VJe8zNdTf3HZwcxxfHAoFilRL-awXp2i6K-Ub9TSIQjrZu8I67TaxV99HNe0iYZW5j3lldxksskascINrTLW0DIrq9WwkdmO0oxlopYsl32eIS2LMi9yWcm62IuV2lwoNIxmDauStEpZzfYCmzLr8yYneYqjUDqJwRPrDivl_YwbSmuaVSstdqj968nkNkuKu_ngSZ5q5YP_Z15QQeOGMHbzn33vx-2EsYvLnuNZcHZOtPLrKZLC_bk2VrPTm-8PwXfnX0zpdTsnZ__EPsTCj7w8Yd2F2nHD_g4AAP__6wFhmg">