зеркало из https://github.com/microsoft/clang-1.git
Ignore extern "C++" { } when mangling.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82146 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
501d8a600e
Коммит
d58d6f778d
|
@ -249,14 +249,20 @@ void CXXNameMangler::mangleName(const NamedDecl *ND) {
|
|||
// ::= <unscoped-template-name> <template-args>
|
||||
// ::= <local-name>
|
||||
//
|
||||
if (ND->getDeclContext()->isTranslationUnit() ||
|
||||
isStdNamespace(ND->getDeclContext())) {
|
||||
const DeclContext *DC = ND->getDeclContext();
|
||||
while (isa<LinkageSpecDecl>(DC)) {
|
||||
assert(cast<LinkageSpecDecl>(DC)->getLanguage() ==
|
||||
LinkageSpecDecl::lang_cxx && "Unexpected linkage decl!");
|
||||
DC = DC->getParent();
|
||||
}
|
||||
|
||||
if (DC->isTranslationUnit() || isStdNamespace(DC)) {
|
||||
const FunctionDecl *FD = dyn_cast<FunctionDecl>(ND);
|
||||
if (FD && FD->getPrimaryTemplate())
|
||||
mangleUnscopedTemplateName(FD);
|
||||
else
|
||||
mangleUnscopedName(ND);
|
||||
} else if (isa<FunctionDecl>(ND->getDeclContext()))
|
||||
} else if (isa<FunctionDecl>(DC))
|
||||
mangleLocalName(ND);
|
||||
else
|
||||
mangleNestedName(ND);
|
||||
|
|
|
@ -99,3 +99,8 @@ void g() {
|
|||
// CHECK: @_Z3ft2IcEvT_PFvS0_ES2_
|
||||
ft2<char>(1, 0, 0);
|
||||
}
|
||||
|
||||
extern "C++" {
|
||||
// CHECK: @_Z1hv
|
||||
void h() { }
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче