diff options
Diffstat (limited to 'lib/CodeGen/Mangle.cpp')
-rw-r--r-- | lib/CodeGen/Mangle.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/lib/CodeGen/Mangle.cpp b/lib/CodeGen/Mangle.cpp index cb27f5c931..a4b2fce7c1 100644 --- a/lib/CodeGen/Mangle.cpp +++ b/lib/CodeGen/Mangle.cpp @@ -169,18 +169,15 @@ bool CXXNameMangler::mangle(const NamedDecl *D) { if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) return mangleFunctionDecl(FD); - if (const VarDecl *VD = dyn_cast<VarDecl>(D)) { - if (!Context.getASTContext().getLangOptions().CPlusPlus || - isInCLinkageSpecification(D) || - D->getDeclContext()->isTranslationUnit()) - return false; - - Out << "_Z"; - mangleName(VD); - return true; - } + const VarDecl *VD = cast<VarDecl>(D); + if (!Context.getASTContext().getLangOptions().CPlusPlus || + isInCLinkageSpecification(D) || + D->getDeclContext()->isTranslationUnit()) + return false; - return false; + Out << "_Z"; + mangleName(VD); + return true; } void CXXNameMangler::mangleFunctionEncoding(const FunctionDecl *FD) { @@ -1298,10 +1295,10 @@ void CXXNameMangler::addSubstitution(uintptr_t Ptr) { /// name. bool MangleContext::mangleName(const NamedDecl *D, llvm::SmallVectorImpl<char> &Res) { - assert(!isa<CXXConstructorDecl>(D) && - "Use mangleCXXCtor for constructor decls!"); - assert(!isa<CXXDestructorDecl>(D) && - "Use mangleCXXDtor for destructor decls!"); + assert((isa<FunctionDecl>(D) || isa<VarDecl>(D)) && + "Invalid mangleName() call, argument is not a variable or function!"); + assert(!isa<CXXConstructorDecl>(D) && !isa<CXXDestructorDecl>(D) && + "Invalid mangleName() call on 'structor decl!"); PrettyStackTraceDecl CrashInfo(D, SourceLocation(), getASTContext().getSourceManager(), |