diff options
author | Eli Bendersky <eliben@google.com> | 2014-03-26 18:04:27 +0000 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2014-03-26 18:04:27 +0000 |
commit | cf2de5a9701057c16dcf62c52791a2a55cae1bbe (patch) | |
tree | 3796a9c3d946e7deee1e49625dc505ea2aeb3f63 /include/llvm/IR | |
parent | 489752ddb4ba90a9baf433b449fcc753eb6a23d7 (diff) | |
download | llvm-cf2de5a9701057c16dcf62c52791a2a55cae1bbe.tar.gz llvm-cf2de5a9701057c16dcf62c52791a2a55cae1bbe.tar.bz2 llvm-cf2de5a9701057c16dcf62c52791a2a55cae1bbe.tar.xz |
Add args() iteartor adapter to Function, for range-for loops.
This patch is in similar vein to what done earlier to Module::globals/aliases
etc. It allows to iterate over function arguments like this:
for (Argument Arg : F.args()) {
...
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204835 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/IR')
-rw-r--r-- | include/llvm/IR/Function.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/include/llvm/IR/Function.h b/include/llvm/IR/Function.h index 11208bb917..cb43bbaa93 100644 --- a/include/llvm/IR/Function.h +++ b/include/llvm/IR/Function.h @@ -18,6 +18,7 @@ #ifndef LLVM_IR_FUNCTION_H #define LLVM_IR_FUNCTION_H +#include "llvm/ADT/iterator_range.h" #include "llvm/IR/Argument.h" #include "llvm/IR/Attributes.h" #include "llvm/IR/BasicBlock.h" @@ -404,9 +405,9 @@ public: const BasicBlock &back() const { return BasicBlocks.back(); } BasicBlock &back() { return BasicBlocks.back(); } - //===--------------------------------------------------------------------===// - // Argument iterator forwarding functions - // +/// @name Function Argument Iteration +/// @{ + arg_iterator arg_begin() { CheckLazyArguments(); return ArgumentList.begin(); @@ -424,6 +425,16 @@ public: return ArgumentList.end(); } + iterator_range<arg_iterator> args() { + return iterator_range<arg_iterator>(arg_begin(), arg_end()); + } + + iterator_range<const_arg_iterator> args() const { + return iterator_range<const_arg_iterator>(arg_begin(), arg_end()); + } + +/// @} + size_t arg_size() const; bool arg_empty() const; |