From 55091782c14286750eebe148cb9e5668b06812e0 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 4 Mar 2007 04:20:48 +0000 Subject: [PATCH] switch MarkAliveBlocks over to using SmallPtrSet instead of std::set, speeding up simplifycfg by 20% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34901 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/SimplifyCFG.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/Transforms/Scalar/SimplifyCFG.cpp b/lib/Transforms/Scalar/SimplifyCFG.cpp index 97ea9f4ce55..659f34f2ef9 100644 --- a/lib/Transforms/Scalar/SimplifyCFG.cpp +++ b/lib/Transforms/Scalar/SimplifyCFG.cpp @@ -27,8 +27,8 @@ #include "llvm/Support/CFG.h" #include "llvm/Support/Compiler.h" #include "llvm/Pass.h" +#include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/Statistic.h" -#include using namespace llvm; STATISTIC(NumSimpl, "Number of blocks simplified"); @@ -45,9 +45,9 @@ FunctionPass *llvm::createCFGSimplificationPass() { return new CFGSimplifyPass(); } -static bool MarkAliveBlocks(BasicBlock *BB, std::set &Reachable) { - if (Reachable.count(BB)) return false; - Reachable.insert(BB); +static bool MarkAliveBlocks(BasicBlock *BB, + SmallPtrSet &Reachable) { + if (!Reachable.insert(BB)) return false; // Do a quick scan of the basic block, turning any obviously unreachable // instructions into LLVM unreachable insts. The instruction combining pass @@ -85,7 +85,7 @@ static bool MarkAliveBlocks(BasicBlock *BB, std::set &Reachable) { // simplify the CFG. // bool CFGSimplifyPass::runOnFunction(Function &F) { - std::set Reachable; + SmallPtrSet Reachable; bool Changed = MarkAliveBlocks(F.begin(), Reachable); // If there are unreachable blocks in the CFG...