mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-22 15:39:28 +00:00
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
This commit is contained in:
parent
95bb00414e
commit
645b1d2f12
@ -144,6 +144,10 @@ namespace {
|
||||
// sources.
|
||||
DenseMap<MachineBasicBlock*, std::vector<MachineInstr*> > 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<unsigned, std::pair<MachineInstr*, unsigned> > 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<unsigned, std::pair<MachineInstr*, unsigned> > CurrentPHIForColor;
|
||||
CurrentPHIForColor.clear();
|
||||
|
||||
for (MachineBasicBlock::succ_iterator SI = MBB.succ_begin(),
|
||||
SE = MBB.succ_end(); SI != SE; ++SI) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user