diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/Support/PredIteratorCache.h | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/llvm/include/llvm/Support/PredIteratorCache.h b/llvm/include/llvm/Support/PredIteratorCache.h index cef9de0b272..bb66a8ed58b 100644 --- a/llvm/include/llvm/Support/PredIteratorCache.h +++ b/llvm/include/llvm/Support/PredIteratorCache.h @@ -27,6 +27,7 @@ namespace llvm {    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; @@ -44,15 +45,23 @@ namespace llvm {        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();      }    }; | 

