diff options
| author | Nuno Lopes <nunoplopes@sapo.pt> | 2010-01-07 09:36:51 +0000 |
|---|---|---|
| committer | Nuno Lopes <nunoplopes@sapo.pt> | 2010-01-07 09:36:51 +0000 |
| commit | 950d5b2cd32a597830d1cf424f7ff85b34404b59 (patch) | |
| tree | 8b0bd9aa31be33113f6a80ebc2db1d3d241dc1c9 | |
| parent | 1949de7b817805fedd0c701b34539622cf3129a3 (diff) | |
| download | bcm5719-llvm-950d5b2cd32a597830d1cf424f7ff85b34404b59.tar.gz bcm5719-llvm-950d5b2cd32a597830d1cf424f7ff85b34404b59.zip | |
fix PR5869: mangle static symbols like gcc does to make it easier to diff symbol tables
llvm-svn: 92911
| -rw-r--r-- | clang/lib/CodeGen/Mangle.cpp | 5 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/mangle.cpp | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index 10fd1f57f6b..d873cfec1bd 100644 --- a/clang/lib/CodeGen/Mangle.cpp +++ b/clang/lib/CodeGen/Mangle.cpp @@ -199,10 +199,13 @@ void CXXNameMangler::mangle(const NamedDecl *D, llvm::StringRef Prefix) { return; } - // <mangled-name> ::= _Z <encoding> + // <mangled-name> ::= _Z [L] <encoding> // ::= <data name> // ::= <special-name> Out << Prefix; + if (D->getLinkage() == NamedDecl::InternalLinkage) // match gcc behavior + Out << 'L'; + if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) mangleFunctionEncoding(FD); else diff --git a/clang/test/CodeGenCXX/mangle.cpp b/clang/test/CodeGenCXX/mangle.cpp index e8770dfec3e..5947587eec3 100644 --- a/clang/test/CodeGenCXX/mangle.cpp +++ b/clang/test/CodeGenCXX/mangle.cpp @@ -308,4 +308,9 @@ template class Alloc<char>; } // 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(); } |

