From 2747e22051450793c664425bf4f171a82ab871f5 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Tue, 9 Oct 2012 10:34:52 +0000 Subject: [PATCH] Fixup for r165490: Use DenseMap instead of std::map. Simplify the loop in CollectFunctionDIs. llvm-svn: 165498 --- .../lib/Transforms/IPO/DeadArgumentElimination.cpp | 29 ++++++++++++---------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp b/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp index 29053a0..b107669 100644 --- a/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp +++ b/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp @@ -32,6 +32,7 @@ #include "llvm/Support/CallSite.h" #include "llvm/Support/Debug.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/Statistic.h" #include "llvm/ADT/StringExtras.h" @@ -129,7 +130,7 @@ namespace { // As the code generation for module is finished (and DIBuilder is // finalized) we assume that subprogram descriptors won't be changed, and // they are stored in map for short duration anyway. - typedef std::map FunctionDIMap; + typedef DenseMap FunctionDIMap; FunctionDIMap FunctionDIs; protected: @@ -200,18 +201,20 @@ void DAE::CollectFunctionDIs(Module &M) { for (Module::named_metadata_iterator I = M.named_metadata_begin(), E = M.named_metadata_end(); I != E; ++I) { NamedMDNode &NMD = *I; - for (unsigned i = 0, n = NMD.getNumOperands(); i < n; ++i) { - MDNode *Node = NMD.getOperand(i); - if (DIDescriptor(Node).isCompileUnit()) { - DICompileUnit CU(Node); - const DIArray &SPs = CU.getSubprograms(); - for (unsigned i = 0, n = SPs.getNumElements(); i < n; ++i) { - DISubprogram SP(SPs.getElement(i)); - if (SP.Verify()) { - if (Function *F = SP.getFunction()) - FunctionDIs[F] = SP; - } - } + for (unsigned MDIndex = 0, MDNum = NMD.getNumOperands(); + MDIndex < MDNum; ++MDIndex) { + MDNode *Node = NMD.getOperand(MDIndex); + if (!DIDescriptor(Node).isCompileUnit()) + continue; + DICompileUnit CU(Node); + const DIArray &SPs = CU.getSubprograms(); + for (unsigned SPIndex = 0, SPNum = SPs.getNumElements(); + SPIndex < SPNum; ++SPIndex) { + DISubprogram SP(SPs.getElement(SPIndex)); + if (!SP.Verify()) + continue; + if (Function *F = SP.getFunction()) + FunctionDIs[F] = SP; } } } -- 2.7.4