llvm / llvm/llvm-project

[C++20] [Modules] Not properly mangling for entities in named modules for MSVC ABI

Open
#174,064 8 comments 0 reactions 0 assignees View on GitHub
ABI clang:modules help wanted platform:windows
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

Reproducer: https://godbolt.org/z/5oaM6Yjv5

for

```C++
export module a;
export int func() {
return 43;
}
```

Clang in Windows ABI generates:

```
"?func@@YAHXZ"
```

but MSVC generates:

```
?func@@YAHXZ::
```

This is a compatibility problem. And also this is a correctness problem. Since the design of C++20 Named Modules ask toolchains to treat the entity in different named modules as different entity at link time even they have the same name. So this is a missing feature at ABI level.

Estimated difficulty: medium

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.