From: David Blaikie Date: Tue, 21 May 2013 18:29:40 +0000 (+0000) Subject: Debug Info: Simplify the code changed in r182403 to reduce indent & avoid a duplicate... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e2eb89a8fb8644bf9d89575f9cf2227699ed2fa7;p=clang Debug Info: Simplify the code changed in r182403 to reduce indent & avoid a duplicate lookup in the insertion case git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182404 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 726f7361fc..d1da81d259 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -1932,21 +1932,20 @@ llvm::DIType CGDebugInfo::getOrCreateType(QualType Ty, llvm::DIFile Unit) { // the ObjCInterfaceCache together with a checksum. Instead of // the (possibly) incomplete interface type, we return a forward // declaration that gets RAUW'd in CGDebugInfo::finalize(). - llvm::DenseMap > - ::iterator it = ObjCInterfaceCache.find(TyPtr); - if (it != ObjCInterfaceCache.end()) - TC = llvm::DIType(cast(it->second.first)); - else { - TC = DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, - Decl->getName(), TheCU, Unit, - getLineNumber(Decl->getLocation()), - TheCU.getLanguage()); - // Store the forward declaration in the cache. - ObjCInterfaceCache[TyPtr] = std::make_pair(TC, Checksum(Decl)); - - // Register the type for replacement in finalize(). - ReplaceMap.push_back(std::make_pair(TyPtr, static_cast(TC))); - } + std::pair &V = ObjCInterfaceCache[TyPtr]; + if (V.first) + return llvm::DIType(cast(V.first)); + TC = DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, + Decl->getName(), TheCU, Unit, + getLineNumber(Decl->getLocation()), + TheCU.getLanguage()); + // Store the forward declaration in the cache. + V.first = TC; + V.second = Checksum(Decl); + + // Register the type for replacement in finalize(). + ReplaceMap.push_back(std::make_pair(TyPtr, static_cast(TC))); + return TC; }