[llvm] r202835 - [Modules] Move the PredIteratorCache into the IR library -- it is

Chandler Carruth chandlerc at gmail.com
Tue Mar 4 04:09:19 PST 2014


Author: chandlerc
Date: Tue Mar  4 06:09:19 2014
New Revision: 202835

URL: http://llvm.org/viewvc/llvm-project?rev=202835&view=rev
Log:
[Modules] Move the PredIteratorCache into the IR library -- it is
hardcoded to use IR BasicBlocks.

Added:
    llvm/trunk/include/llvm/IR/PredIteratorCache.h
      - copied, changed from r202834, llvm/trunk/include/llvm/Support/PredIteratorCache.h
Removed:
    llvm/trunk/include/llvm/Support/PredIteratorCache.h
Modified:
    llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
    llvm/trunk/lib/Transforms/Scalar/LICM.cpp
    llvm/trunk/lib/Transforms/Utils/LCSSA.cpp

Copied: llvm/trunk/include/llvm/IR/PredIteratorCache.h (from r202834, llvm/trunk/include/llvm/Support/PredIteratorCache.h)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/PredIteratorCache.h?p2=llvm/trunk/include/llvm/IR/PredIteratorCache.h&p1=llvm/trunk/include/llvm/Support/PredIteratorCache.h&r1=202834&r2=202835&rev=202835&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/PredIteratorCache.h (original)
+++ llvm/trunk/include/llvm/IR/PredIteratorCache.h Tue Mar  4 06:09:19 2014
@@ -1,4 +1,4 @@
-//===- llvm/Support/PredIteratorCache.h - pred_iterator Cache ---*- C++ -*-===//
+//===- PredIteratorCache.h - pred_iterator Cache ----------------*- C++ -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -16,8 +16,8 @@
 #include "llvm/IR/CFG.h"
 #include "llvm/Support/Allocator.h"
 
-#ifndef LLVM_SUPPORT_PREDITERATORCACHE_H
-#define LLVM_SUPPORT_PREDITERATORCACHE_H
+#ifndef LLVM_IR_PREDITERATORCACHE_H
+#define LLVM_IR_PREDITERATORCACHE_H
 
 namespace llvm {
 

Removed: llvm/trunk/include/llvm/Support/PredIteratorCache.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/PredIteratorCache.h?rev=202834&view=auto
==============================================================================
--- llvm/trunk/include/llvm/Support/PredIteratorCache.h (original)
+++ llvm/trunk/include/llvm/Support/PredIteratorCache.h (removed)
@@ -1,70 +0,0 @@
-//===- llvm/Support/PredIteratorCache.h - pred_iterator Cache ---*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the PredIteratorCache class.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/IR/CFG.h"
-#include "llvm/Support/Allocator.h"
-
-#ifndef LLVM_SUPPORT_PREDITERATORCACHE_H
-#define LLVM_SUPPORT_PREDITERATORCACHE_H
-
-namespace llvm {
-
-  /// PredIteratorCache - This class is an extremely trivial cache for
-  /// predecessor iterator queries.  This is useful for code that repeatedly
-  /// wants the predecessor list for the same blocks.
-  class PredIteratorCache {
-    /// BlockToPredsMap - Pointer to null-terminated list.
-    DenseMap<BasicBlock*, BasicBlock**> BlockToPredsMap;
-    DenseMap<BasicBlock*, unsigned> BlockToPredCountMap;
-
-    /// Memory - This is the space that holds cached preds.
-    BumpPtrAllocator Memory;
-  public:
-
-    /// GetPreds - Get a cached list for the null-terminated predecessor list of
-    /// the specified block.  This can be used in a loop like this:
-    ///   for (BasicBlock **PI = PredCache->GetPreds(BB); *PI; ++PI)
-    ///      use(*PI);
-    /// instead of:
-    /// for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI)
-    BasicBlock **GetPreds(BasicBlock *BB) {
-      BasicBlock **&Entry = BlockToPredsMap[BB];
-      if (Entry) return Entry;
-
-      SmallVector<BasicBlock*, 32> PredCache(pred_begin(BB), pred_end(BB));
-      PredCache.push_back(0); // null terminator.
-      
-      BlockToPredCountMap[BB] = PredCache.size()-1;
-
-      Entry = Memory.Allocate<BasicBlock*>(PredCache.size());
-      std::copy(PredCache.begin(), PredCache.end(), Entry);
-      return Entry;
-    }
-    
-    unsigned GetNumPreds(BasicBlock *BB) {
-      GetPreds(BB);
-      return BlockToPredCountMap[BB];
-    }
-
-    /// clear - Remove all information.
-    void clear() {
-      BlockToPredsMap.clear();
-      BlockToPredCountMap.clear();
-      Memory.Reset();
-    }
-  };
-} // end namespace llvm
-
-#endif

Modified: llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp?rev=202835&r1=202834&r2=202835&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp (original)
+++ llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp Tue Mar  4 06:09:19 2014
@@ -29,8 +29,8 @@
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/IntrinsicInst.h"
 #include "llvm/IR/LLVMContext.h"
+#include "llvm/IR/PredIteratorCache.h"
 #include "llvm/Support/Debug.h"
-#include "llvm/Support/PredIteratorCache.h"
 using namespace llvm;
 
 STATISTIC(NumCacheNonLocal, "Number of fully cached non-local responses");

Modified: llvm/trunk/lib/Transforms/Scalar/LICM.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LICM.cpp?rev=202835&r1=202834&r2=202835&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LICM.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LICM.cpp Tue Mar  4 06:09:19 2014
@@ -49,9 +49,9 @@
 #include "llvm/IR/IntrinsicInst.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Metadata.h"
+#include "llvm/IR/PredIteratorCache.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
-#include "llvm/Support/PredIteratorCache.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Target/TargetLibraryInfo.h"
 #include "llvm/Transforms/Utils/Local.h"

Modified: llvm/trunk/lib/Transforms/Utils/LCSSA.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/LCSSA.cpp?rev=202835&r1=202834&r2=202835&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/LCSSA.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/LCSSA.cpp Tue Mar  4 06:09:19 2014
@@ -38,8 +38,8 @@
 #include "llvm/IR/Dominators.h"
 #include "llvm/IR/Function.h"
 #include "llvm/IR/Instructions.h"
+#include "llvm/IR/PredIteratorCache.h"
 #include "llvm/Pass.h"
-#include "llvm/Support/PredIteratorCache.h"
 #include "llvm/Transforms/Utils/LoopUtils.h"
 #include "llvm/Transforms/Utils/SSAUpdater.h"
 using namespace llvm;





More information about the llvm-commits mailing list