From: Nuno Lopes Date: Thu, 7 Jan 2010 09:36:51 +0000 (+0000) Subject: fix PR5869: mangle static symbols like gcc does to make it easier to diff symbol... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a9efbf009468f36df0bb66551677339055757d51;p=clang fix PR5869: mangle static symbols like gcc does to make it easier to diff symbol tables git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92911 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index 10fd1f57f6..d873cfec1b 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -199,10 +199,13 @@ void CXXNameMangler::mangle(const NamedDecl *D, llvm::StringRef Prefix) { return; } - // ::= _Z + // ::= _Z [L] // ::= // ::= Out << Prefix; + if (D->getLinkage() == NamedDecl::InternalLinkage) // match gcc behavior + Out << 'L'; + if (const FunctionDecl *FD = dyn_cast(D)) mangleFunctionEncoding(FD); else diff --git a/test/CodeGenCXX/mangle.cpp b/test/CodeGenCXX/mangle.cpp index e8770dfec3..5947587eec 100644 --- a/test/CodeGenCXX/mangle.cpp +++ b/test/CodeGenCXX/mangle.cpp @@ -308,4 +308,9 @@ template class Alloc; } // CHECK: define void @_Z1fU13block_pointerFiiiE -void f(int (^)(int, int)) { } \ No newline at end of file +void f(int (^)(int, int)) { } + +// PR5869 +// CHECK: define internal void @_ZL2f2v +static void f2() {} +void f3() { f2(); }