OSDN Git Service

Use efficient container SmallPtrSet
authorDevang Patel <dpatel@apple.com>
Mon, 26 Feb 2007 20:22:50 +0000 (20:22 +0000)
committerDevang Patel <dpatel@apple.com>
Mon, 26 Feb 2007 20:22:50 +0000 (20:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34640 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopUnswitch.cpp

index cd8d82b..861e97c 100644 (file)
@@ -38,6 +38,7 @@
 #include "llvm/Transforms/Utils/Local.h"
 #include "llvm/Transforms/Utils/BasicBlockUtils.h"
 #include "llvm/ADT/Statistic.h"
+#include "llvm/ADT/SmallPtrSet.h"
 #include "llvm/ADT/PostOrderIterator.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Compiler.h"
@@ -62,7 +63,7 @@ namespace {
 
     // LoopProcessWorklist - List of loops we need to process.
     std::vector<Loop*> LoopProcessWorklist;
-    std::set<Value *> UnswitchedVals;
+    SmallPtrSet<Value *,8> UnswitchedVals;
 
   public:
     virtual bool runOnFunction(Function &F);
@@ -129,6 +130,7 @@ bool LoopUnswitch::runOnFunction(Function &F) {
     Changed |= visitLoop(L);
   }
 
+  UnswitchedVals.clear();
   return Changed;
 }
 
@@ -189,9 +191,8 @@ bool LoopUnswitch::visitLoop(Loop *L) {
         // FIXME: this should chose the most expensive case!
         Constant *UnswitchVal = SI->getCaseValue(1);
         // Do not process same value again and again.
-        if (UnswitchedVals.count(UnswitchVal) != 0)
+        if (!UnswitchedVals.insert(UnswitchVal))
           continue;
-        UnswitchedVals.insert(UnswitchVal);
 
         if (UnswitchIfProfitable(LoopCond, UnswitchVal, L)) {
           ++NumSwitches;