summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2017-10-13 21:16:05 +0000
committerQuentin Colombet <qcolombet@apple.com>2017-10-13 21:16:05 +0000
commit86220488b420cbe2e1a34b035714c950e7d5a0bc (patch)
tree6b387364d536128e2602ecb7fd626fbe1e2ae861 /llvm/lib/CodeGen
parent3e3dd1dbd7055e37614d693c2b0291cc8c97484d (diff)
downloadbcm5719-llvm-86220488b420cbe2e1a34b035714c950e7d5a0bc.tar.gz
bcm5719-llvm-86220488b420cbe2e1a34b035714c950e7d5a0bc.zip
[Legalizer] Only allocate the SetVectors once per function.
Prior to this patch we used to create SetVectors in temporaries that were created and destroyed for each instruction. Now, instead we create and destroyed them only once, but clear the content for each instruction. This speeds up the pass by ~25%. NFC. llvm-svn: 315756
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/Legalizer.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp b/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp
index 1c474b99846..a9847dea3ce 100644
--- a/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp
@@ -70,6 +70,9 @@ bool Legalizer::runOnMachineFunction(MachineFunction &MF) {
// convergence for performance reasons.
bool Changed = false;
MachineBasicBlock::iterator NextMI;
+ using VecType = SetVector<MachineInstr *, SmallVector<MachineInstr *, 8>>;
+ VecType WorkList;
+ VecType CombineList;
for (auto &MBB : MF) {
for (auto MI = MBB.begin(); MI != MBB.end(); MI = NextMI) {
// Get the next Instruction before we try to legalize, because there's a
@@ -81,9 +84,8 @@ bool Legalizer::runOnMachineFunction(MachineFunction &MF) {
if (!isPreISelGenericOpcode(MI->getOpcode()))
continue;
unsigned NumNewInsns = 0;
- using VecType = SetVector<MachineInstr *, SmallVector<MachineInstr *, 8>>;
- VecType WorkList;
- VecType CombineList;
+ WorkList.clear();
+ CombineList.clear();
Helper.MIRBuilder.recordInsertions([&](MachineInstr *MI) {
// Only legalize pre-isel generic instructions.
// Legalization process could generate Target specific pseudo
OpenPOWER on IntegriCloud