diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-09-02 15:50:38 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-09-02 15:50:38 +0000 |
commit | b33cd908d4f873e2a2bc22121bbf1f3d07e25e5b (patch) | |
tree | 31696d2338ccec68394a6a16757aa7be93c90eb6 /clang/test/CodeGenCXX/mangle-ms-cxx11.cpp | |
parent | fbcd189f8aab34ac2573ddf8d9ace2921b87e703 (diff) | |
download | bcm5719-llvm-b33cd908d4f873e2a2bc22121bbf1f3d07e25e5b.tar.gz bcm5719-llvm-b33cd908d4f873e2a2bc22121bbf1f3d07e25e5b.zip |
[MS ABI] Number unnamed TagDecls which aren't externally visible
TagDecls (structs, enums, etc.) may have the same name for linkage
purposes of one another; to disambiguate, we add a number to the mangled
named. However, we didn't do this if the TagDecl has a pseudo-name for
linkage purposes (it was defined alongside a DeclaratorDecl or a
TypeNameDecl).
This fixes PR24651.
llvm-svn: 246659
Diffstat (limited to 'clang/test/CodeGenCXX/mangle-ms-cxx11.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/mangle-ms-cxx11.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp b/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp index 7cb09704de0..0a4c602df62 100644 --- a/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp +++ b/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp @@ -261,3 +261,19 @@ struct B { void f(decltype(B<int>::e)) {} // CHECK-DAG: @"\01?f@UnnamedType@@YAXPAW4<unnamed-type-e>@?$B@H@1@@Z } + +namespace PR24651 { +template <typename T> +void f(T) {} + +void g() { + enum {} E; + f(E); + { + enum {} E; + f(E); + } +} +// CHECK-DAG: @"\01??$f@W4<unnamed-type-E>@?1??g@PR24651@@YAXXZ@@PR24651@@YAXW4<unnamed-type-E>@?1??g@0@YAXXZ@@Z" +// CHECK-DAG: @"\01??$f@W4<unnamed-type-E>@?2??g@PR24651@@YAXXZ@@PR24651@@YAXW4<unnamed-type-E>@?2??g@0@YAXXZ@@Z" +} |