diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-06-14 12:48:26 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-06-14 12:48:26 +0000 |
commit | 7a07083c25074b560fea1198a86facf3a95af850 (patch) | |
tree | ddf97a6effc4461aa7c8fda040bdbeca49f1bc84 | |
parent | bfdbd00d9d290954bcc125bfadce3dfb0f447bfb (diff) | |
download | llvm-7a07083c25074b560fea1198a86facf3a95af850.tar.gz llvm-7a07083c25074b560fea1198a86facf3a95af850.tar.bz2 llvm-7a07083c25074b560fea1198a86facf3a95af850.tar.xz |
revert 132986 to see if the bots go green.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132988 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/BranchFolding.cpp | 26 | ||||
-rw-r--r-- | lib/CodeGen/BranchFolding.h | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/tail-threshold.ll | 41 |
3 files changed, 5 insertions, 64 deletions
diff --git a/lib/CodeGen/BranchFolding.cpp b/lib/CodeGen/BranchFolding.cpp index b43884ebf2..719cd264f6 100644 --- a/lib/CodeGen/BranchFolding.cpp +++ b/lib/CodeGen/BranchFolding.cpp @@ -799,22 +799,14 @@ bool BranchFolder::TailMergeBlocks(MachineFunction &MF) { // First find blocks with no successors. MergePotentials.clear(); - for (MachineFunction::iterator I = MF.begin(), E = MF.end(); - I != E && MergePotentials.size() < TailMergeThreshold; ++I) { - if (TriedMerging.count(I)) - continue; + for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I) { if (I->succ_empty()) MergePotentials.push_back(MergePotentialsElt(HashEndOfMBB(I), I)); } - // If this is a large problem, avoid visiting the same basic blocks - // multiple times. - if (MergePotentials.size() == TailMergeThreshold) - for (unsigned i = 0, e = MergePotentials.size(); i != e; ++i) - TriedMerging.insert(MergePotentials[i].getBlock()); - // See if we can do any tail merging on those. - if (MergePotentials.size() >= 2) + if (MergePotentials.size() < TailMergeThreshold && + MergePotentials.size() >= 2) MadeChange |= TryTailMergeBlocks(NULL, NULL); // Look at blocks (IBB) with multiple predecessors (PBB). @@ -838,17 +830,15 @@ bool BranchFolder::TailMergeBlocks(MachineFunction &MF) { for (MachineFunction::iterator I = llvm::next(MF.begin()), E = MF.end(); I != E; ++I) { - if (I->pred_size() >= 2) { + if (I->pred_size() >= 2 && I->pred_size() < TailMergeThreshold) { SmallPtrSet<MachineBasicBlock *, 8> UniquePreds; MachineBasicBlock *IBB = I; MachineBasicBlock *PredBB = prior(I); MergePotentials.clear(); for (MachineBasicBlock::pred_iterator P = I->pred_begin(), E2 = I->pred_end(); - P != E2 && MergePotentials.size() < TailMergeThreshold; ++P) { + P != E2; ++P) { MachineBasicBlock *PBB = *P; - if (TriedMerging.count(PBB)) - continue; // Skip blocks that loop to themselves, can't tail merge these. if (PBB == IBB) continue; @@ -901,12 +891,6 @@ bool BranchFolder::TailMergeBlocks(MachineFunction &MF) { MergePotentials.push_back(MergePotentialsElt(HashEndOfMBB(PBB), *P)); } } - // If this is a large problem, avoid visiting the same basic blocks - // multiple times. - if (MergePotentials.size() == TailMergeThreshold) - for (unsigned i = 0, e = MergePotentials.size(); i != e; ++i) - TriedMerging.insert(MergePotentials[i].getBlock()); - if (MergePotentials.size() >= 2) MadeChange |= TryTailMergeBlocks(IBB, PredBB); // Reinsert an unconditional branch if needed. diff --git a/lib/CodeGen/BranchFolding.h b/lib/CodeGen/BranchFolding.h index 4ed42c0346..4daf4ecfe5 100644 --- a/lib/CodeGen/BranchFolding.h +++ b/lib/CodeGen/BranchFolding.h @@ -10,7 +10,6 @@ #ifndef LLVM_CODEGEN_BRANCHFOLDING_HPP #define LLVM_CODEGEN_BRANCHFOLDING_HPP -#include "llvm/ADT/SmallPtrSet.h" #include "llvm/CodeGen/MachineBasicBlock.h" #include <vector> @@ -48,7 +47,6 @@ namespace llvm { }; typedef std::vector<MergePotentialsElt>::iterator MPIterator; std::vector<MergePotentialsElt> MergePotentials; - SmallPtrSet<const MachineBasicBlock*, 2> TriedMerging; class SameTailElt { MPIterator MPIter; diff --git a/test/CodeGen/X86/tail-threshold.ll b/test/CodeGen/X86/tail-threshold.ll deleted file mode 100644 index 17e22d9dd9..0000000000 --- a/test/CodeGen/X86/tail-threshold.ll +++ /dev/null @@ -1,41 +0,0 @@ -; RUN: llc %s -stats -tail-merge-threshold 2 -o /dev/null |& FileCheck %s - -; Test that we still do some merging if a block has more than -; tail-merge-threshold predecessors. - -; CHECK: 2 branchfolding - Number of block tails merged - -declare void @bar() - -define void @foo(i32 %xxx) { -entry: - switch i32 %xxx, label %bb4 [ - i32 0, label %bb0 - i32 1, label %bb1 - i32 2, label %bb2 - i32 3, label %bb3 - ] - -bb0: - call void @bar() - br label %bb5 - -bb1: - call void @bar() - br label %bb5 - -bb2: - call void @bar() - br label %bb5 - -bb3: - call void @bar() - br label %bb5 - -bb4: - call void @bar() - br label %bb5 - -bb5: - ret void -} |