From 8abf69374e9c34068ddc970817738c0eb24ece2b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 10 May 2004 19:17:36 +0000 Subject: [PATCH] Switch this from using an std::map to using a DenseMap. This speeds up phi-elimination from 0.6 to 0.54s on kc++. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13454 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/PHIElimination.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/CodeGen/PHIElimination.cpp b/lib/CodeGen/PHIElimination.cpp index 5457dedbf26..ba0c977aeba 100644 --- a/lib/CodeGen/PHIElimination.cpp +++ b/lib/CodeGen/PHIElimination.cpp @@ -20,6 +20,7 @@ #include "llvm/CodeGen/LiveVariables.h" #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetMachine.h" +#include "Support/DenseMap.h" #include "Support/STLExtras.h" using namespace llvm; @@ -70,7 +71,8 @@ bool PNE::EliminatePHINodes(MachineFunction &MF, MachineBasicBlock &MBB) { // VRegPHIUseCount - Keep track of the number of times each virtual register // is used by PHI nodes in this block. - std::map VRegPHIUseCount; + DenseMap VRegPHIUseCount; + VRegPHIUseCount.grow(MF.getSSARegMap()->getLastVirtReg()); // Get an iterator to the first instruction after the last PHI node (this may // allso be the end of the basic block). While we are scanning the PHIs, @@ -231,11 +233,8 @@ bool PNE::EliminatePHINodes(MachineFunction &MF, MachineBasicBlock &MBB) { } // Is it used by any PHI instructions in this block? - if (!ValueIsLive) { - std::map::iterator I = - VRegPHIUseCount.find(SrcReg); - ValueIsLive = I != VRegPHIUseCount.end() && I->second; - } + if (!ValueIsLive) + ValueIsLive = VRegPHIUseCount[SrcReg] != 0; } // Okay, if we now know that the value is not live out of the block, -- 2.34.1