From: Cameron Zwarich Date: Tue, 4 Jan 2011 06:42:27 +0000 (+0000) Subject: Eliminate repeated allocation of a per-BB DenseMap for a 4.6% reduction of time X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=645b1d2f12e6637840d3b118231f60b3a587073a;p=oota-llvm.git Eliminate repeated allocation of a per-BB DenseMap for a 4.6% reduction of time spent in StrongPHIElimination on 403.gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122803 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/StrongPHIElimination.cpp b/lib/CodeGen/StrongPHIElimination.cpp index 91ec13df643..54c6647f059 100644 --- a/lib/CodeGen/StrongPHIElimination.cpp +++ b/lib/CodeGen/StrongPHIElimination.cpp @@ -144,6 +144,10 @@ namespace { // sources. DenseMap > PHISrcDefs; + // Maps a color to a pair of a MachineInstr* and a virtual register, which + // is the operand of that PHI corresponding to the current basic block. + DenseMap > CurrentPHIForColor; + // FIXME: Can these two data structures be combined? Would a std::multimap // be any better? @@ -567,12 +571,7 @@ StrongPHIElimination::SplitInterferencesForBasicBlock( // the predecessor block. The def of a PHI's destination register is processed // along with the other defs in a basic block. - // The map CurrentPHIForColor maps a color to a pair of a MachineInstr* and a - // virtual register, which is the operand of that PHI corresponding to the - // current basic block. - // FIXME: This should use a container that doesn't always perform heap - // allocation. - DenseMap > CurrentPHIForColor; + CurrentPHIForColor.clear(); for (MachineBasicBlock::succ_iterator SI = MBB.succ_begin(), SE = MBB.succ_end(); SI != SE; ++SI) {