[PATCH] D30873: Make PredIteratorCache size() logically const. Do not require copying predecessors to get size.
Phabricator via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 14 04:37:47 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL297733: Make PredIteratorCache size() logically const. Do not require copying… (authored by dannyb).
Changed prior to commit:
https://reviews.llvm.org/D30873?vs=91499&id=91700#toc
Repository:
rL LLVM
https://reviews.llvm.org/D30873
Files:
llvm/trunk/include/llvm/IR/PredIteratorCache.h
Index: llvm/trunk/include/llvm/IR/PredIteratorCache.h
===================================================================
--- llvm/trunk/include/llvm/IR/PredIteratorCache.h
+++ llvm/trunk/include/llvm/IR/PredIteratorCache.h
@@ -27,8 +27,8 @@
/// wants the predecessor list for the same blocks.
class PredIteratorCache {
/// BlockToPredsMap - Pointer to null-terminated list.
- DenseMap<BasicBlock *, BasicBlock **> BlockToPredsMap;
- DenseMap<BasicBlock *, unsigned> BlockToPredCountMap;
+ mutable DenseMap<BasicBlock *, BasicBlock **> BlockToPredsMap;
+ mutable DenseMap<BasicBlock *, unsigned> BlockToPredCountMap;
/// Memory - This is the space that holds cached preds.
BumpPtrAllocator Memory;
@@ -55,13 +55,15 @@
return Entry;
}
- unsigned GetNumPreds(BasicBlock *BB) {
- GetPreds(BB);
- return BlockToPredCountMap[BB];
+ unsigned GetNumPreds(BasicBlock *BB) const {
+ auto Result = BlockToPredCountMap.find(BB);
+ if (Result != BlockToPredCountMap.end())
+ return Result->second;
+ return BlockToPredCountMap[BB] = std::distance(pred_begin(BB), pred_end(BB));
}
public:
- size_t size(BasicBlock *BB) { return GetNumPreds(BB); }
+ size_t size(BasicBlock *BB) const { return GetNumPreds(BB); }
ArrayRef<BasicBlock *> get(BasicBlock *BB) {
return makeArrayRef(GetPreds(BB), GetNumPreds(BB));
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D30873.91700.patch
Type: text/x-patch
Size: 1365 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170314/8dd75470/attachment.bin>
More information about the llvm-commits
mailing list