[PATCH] standardize {pred,succ,use,user}_{size,empty} like in MBB
Ramkumar Ramachandra
artagnon at gmail.com
Mon Jan 12 17:43:06 PST 2015
Hi sanjoy, reames, hfinkel, atrick, majnemer,
MachineBasicBlock has {pred,succ}_{size,empty}, and it would be nice to
have a version that operated on BasicBlock. While at it, add
implementations for use_, user_.
http://reviews.llvm.org/D6944
Files:
include/llvm/IR/CFG.h
include/llvm/IR/Value.h
Index: include/llvm/IR/CFG.h
===================================================================
--- include/llvm/IR/CFG.h
+++ include/llvm/IR/CFG.h
@@ -93,6 +93,15 @@
inline const_pred_iterator pred_end(const BasicBlock *BB) {
return const_pred_iterator(BB, true);
}
+inline unsigned pred_size(const BasicBlock *BB) {
+ unsigned Count = 0;
+ for (auto I = pred_begin(BB), E = pred_end(BB); I != E; I++)
+ Count++;
+ return Count;
+}
+inline bool pred_empty(const BasicBlock *BB) {
+ return !pred_size(BB);
+}
@@ -257,6 +266,15 @@
inline succ_const_iterator succ_end(const BasicBlock *BB) {
return succ_const_iterator(BB->getTerminator(), true);
}
+inline unsigned succ_size(const BasicBlock *BB) {
+ unsigned Count = 0;
+ for (auto I = succ_begin(BB), E = succ_end(BB); I != E; I++)
+ Count++;
+ return Count;
+}
+inline bool succ_empty(const BasicBlock *BB) {
+ return !succ_size(BB);
+}
template <typename T, typename U> struct isPodLike<SuccIterator<T, U> > {
static const bool value = isPodLike<T>::value;
Index: include/llvm/IR/Value.h
===================================================================
--- include/llvm/IR/Value.h
+++ include/llvm/IR/Value.h
@@ -285,6 +285,14 @@
iterator_range<const_use_iterator> uses() const {
return iterator_range<const_use_iterator>(use_begin(), use_end());
}
+ unsigned use_size() const {
+ unsigned Count = 0;
+ for (auto I = use_begin(), E = use_end(); I != E; I++)
+ Count++;
+ return Count;
+ }
+
+ bool user_empty() const { return UseList == nullptr; }
typedef user_iterator_impl<User> user_iterator;
typedef user_iterator_impl<const User> const_user_iterator;
@@ -300,6 +308,12 @@
iterator_range<const_user_iterator> users() const {
return iterator_range<const_user_iterator>(user_begin(), user_end());
}
+ unsigned user_size() const {
+ unsigned Count = 0;
+ for (auto I = user_begin(), E = user_end(); I != E; I++)
+ Count++;
+ return Count;
+ }
/// \brief Return true if there is exactly one user of this value.
///
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D6944.18065.patch
Type: text/x-patch
Size: 2099 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150113/44294668/attachment.bin>
More information about the llvm-commits
mailing list