From: Evgeniy Stepanov Date: Fri, 16 Aug 2013 10:35:31 +0000 (+0000) Subject: Revert r188498. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=045a9f6762a567ccf6ba5aa8a534fed3d0fe518b;p=clang Revert r188498. This change broke release+asserts build with compiler-rt. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188539 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 0c6f549e21..fd6ce47474 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -2997,25 +2997,19 @@ void CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(const CGBlockInfo &block, DbgDecl->setDebugLoc(llvm::DebugLoc::get(line, column, scope)); } -/// If D is an out-of-class definition of a static data member of a class, find -/// its corresponding in-class declaration. -llvm::DIDerivedType -CGDebugInfo::getStaticDataMemberDeclarationOrNull(const VarDecl *D) { - if (!D->isStaticDataMember()) - return llvm::DIDerivedType(); - return getStaticDataMemberDeclaration(D); -} - -llvm::DIDerivedType -CGDebugInfo::getStaticDataMemberDeclaration(const VarDecl *D) { - llvm::DenseMap::iterator - MI = StaticDataMemberCache.find(D->getCanonicalDecl()); - if (MI != StaticDataMemberCache.end()) - // Verify the info still exists. - if (llvm::Value *V = MI->second) - return llvm::DIDerivedType(cast(V)); - llvm_unreachable( - "A static data member declaration should be available at this point"); +/// getStaticDataMemberDeclaration - If D is an out-of-class definition of +/// a static data member of a class, find its corresponding in-class +/// declaration. +llvm::DIDerivedType CGDebugInfo::getStaticDataMemberDeclaration(const VarDecl *D) { + if (D->isStaticDataMember()) { + llvm::DenseMap::iterator + MI = StaticDataMemberCache.find(D->getCanonicalDecl()); + if (MI != StaticDataMemberCache.end()) + // Verify the info still exists. + if (llvm::Value *V = MI->second) + return llvm::DIDerivedType(cast(V)); + } + return llvm::DIDerivedType(); } /// EmitGlobalVariable - Emit information about a global variable. @@ -3047,9 +3041,11 @@ void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *Var, LinkageName = StringRef(); llvm::DIDescriptor DContext = getContextDescriptor(dyn_cast(D->getDeclContext())); - llvm::DIGlobalVariable GV = DBuilder.createStaticVariable( - DContext, DeclName, LinkageName, Unit, LineNo, getOrCreateType(T, Unit), - Var->hasInternalLinkage(), Var, getStaticDataMemberDeclarationOrNull(D)); + llvm::DIGlobalVariable GV = + DBuilder.createStaticVariable(DContext, DeclName, LinkageName, Unit, + LineNo, getOrCreateType(T, Unit), + Var->hasInternalLinkage(), Var, + getStaticDataMemberDeclaration(D)); DeclCache.insert(std::make_pair(D->getCanonicalDecl(), llvm::WeakVH(GV))); } @@ -3097,7 +3093,7 @@ void CGDebugInfo::EmitGlobalVariable(const ValueDecl *VD, return; llvm::DIGlobalVariable GV = DBuilder.createStaticVariable( Unit, Name, Name, Unit, getLineNumber(VD->getLocation()), Ty, true, Init, - getStaticDataMemberDeclarationOrNull(cast(VD))); + getStaticDataMemberDeclaration(cast(VD))); DeclCache.insert(std::make_pair(VD->getCanonicalDecl(), llvm::WeakVH(GV))); } diff --git a/lib/CodeGen/CGDebugInfo.h b/lib/CodeGen/CGDebugInfo.h index c3d2834234..041fe492ab 100644 --- a/lib/CodeGen/CGDebugInfo.h +++ b/lib/CodeGen/CGDebugInfo.h @@ -356,7 +356,6 @@ private: /// getStaticDataMemberDeclaration - Return debug info descriptor to /// describe in-class static data member declaration for the given /// out-of-class definition. - llvm::DIDerivedType getStaticDataMemberDeclarationOrNull(const VarDecl *D); llvm::DIDerivedType getStaticDataMemberDeclaration(const VarDecl *D); /// getFunctionName - Get function name for the given FunctionDecl. If the