diff options
-rw-r--r-- | clang/lib/CodeGen/Mangle.cpp | 3 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/mangle.cpp | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index 4d98deec3d3..fa42b638e07 100644 --- a/clang/lib/CodeGen/Mangle.cpp +++ b/clang/lib/CodeGen/Mangle.cpp @@ -1143,7 +1143,8 @@ void CXXNameMangler::mangleBareFunctionType(const FunctionType *T, if (MangleReturnType) mangleType(Proto->getResultType()); - if (Proto->getNumArgs() == 0) { + if (Proto->getNumArgs() == 0 && !Proto->isVariadic()) { + // <builtin-type> ::= v # void Out << 'v'; return; } diff --git a/clang/test/CodeGenCXX/mangle.cpp b/clang/test/CodeGenCXX/mangle.cpp index 8f3d3568488..9d153b59b01 100644 --- a/clang/test/CodeGenCXX/mangle.cpp +++ b/clang/test/CodeGenCXX/mangle.cpp @@ -477,3 +477,15 @@ namespace test10 { // CHECK: define weak_odr void @_ZN6test101fILc3EEEvNS_1SIXquLb0ELc97ET_EEE( template void f<(char) 3>(struct S<3>); } + +namespace test11 { + // CHECK: @_ZN6test111fEz + void f(...) { } + + struct A { + void f(...); + }; + + // CHECK: @_ZN6test111A1fEz + void A::f(...) { } +} |