diff options
author | Chris Lattner <sabre@nondot.org> | 2002-10-28 05:30:46 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-10-28 05:30:46 +0000 |
commit | d0aa0cdbc6fee00f2b2019633a9b9d00d301ac68 (patch) | |
tree | f8540335fb213761b69aa8cd7f5a06b9f04954e8 /include/llvm/CodeGen/MachineFunction.h | |
parent | 07541a271152687dd8d443de48b563dc08a65cbd (diff) |
Change MachineBasicBlock's to not be Annotations, instead they are kept as
part of a linked list tracked by MachineFunction. MachineBasicBlock::get
is now linear time instead of constant time, and thus is deprecated!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4337 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/MachineFunction.h')
-rw-r--r-- | include/llvm/CodeGen/MachineFunction.h | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/MachineFunction.h b/include/llvm/CodeGen/MachineFunction.h index 131b0359f7..33f9efc281 100644 --- a/include/llvm/CodeGen/MachineFunction.h +++ b/include/llvm/CodeGen/MachineFunction.h @@ -10,6 +10,7 @@ #define LLVM_CODEGEN_MACHINEFUNCTION_H #include "llvm/CodeGen/MachineBasicBlock.h" +#include "llvm/Annotation.h" #include "Support/NonCopyable.h" #include "Support/HashExtras.h" #include "Support/hash_set" @@ -59,9 +60,38 @@ public: static MachineFunction& construct(const Function *method, const TargetMachine &target); static void destruct(const Function *F); - static MachineFunction& get(const Function* function); - + static MachineFunction& get(const Function *F); + + // Provide accessors for the MachineBasicBlock list... + typedef iplist<MachineBasicBlock> BasicBlockListType; + typedef BasicBlockListType::iterator iterator; + typedef BasicBlockListType::const_iterator const_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + + // Provide accessors for basic blocks... + const BasicBlockListType &getBasicBlockList() const { return BasicBlocks; } + BasicBlockListType &getBasicBlockList() { return BasicBlocks; } + + //===--------------------------------------------------------------------===// + // BasicBlock iterator forwarding functions + // + iterator begin() { return BasicBlocks.begin(); } + const_iterator begin() const { return BasicBlocks.begin(); } + iterator end () { return BasicBlocks.end(); } + const_iterator end () const { return BasicBlocks.end(); } + + reverse_iterator rbegin() { return BasicBlocks.rbegin(); } + const_reverse_iterator rbegin() const { return BasicBlocks.rbegin(); } + reverse_iterator rend () { return BasicBlocks.rend(); } + const_reverse_iterator rend () const { return BasicBlocks.rend(); } + unsigned size() const { return BasicBlocks.size(); } + bool empty() const { return BasicBlocks.empty(); } + const MachineBasicBlock &front() const { return BasicBlocks.front(); } + MachineBasicBlock &front() { return BasicBlocks.front(); } + const MachineBasicBlock &back() const { return BasicBlocks.back(); } + MachineBasicBlock &back() { return BasicBlocks.back(); } //===--------------------------------------------------------------------===// // |