llvm/llvm-project

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

Open

#174.064 geöffnet am 31. Dez. 2025

Auf GitHub ansehen
 (7 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C++ (10.782 Forks)batch import
ABIclang:moduleshelp wantedplatform:windows

Repository-Metriken

Stars
 (26.378 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 1T 2h) (1.000 gemergte PRs in 30 T)

Beschreibung

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

for

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

Clang in Windows ABI generates:

"?func@@YAHXZ"

but MSVC generates:

?func@@YAHXZ::<!a>

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