diff options
-rw-r--r-- | include/llvm/CodeGen/MachineBasicBlock.h | 10 | ||||
-rw-r--r-- | include/llvm/CodeGen/MachineFunction.h | 13 |
2 files changed, 19 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/MachineBasicBlock.h b/include/llvm/CodeGen/MachineBasicBlock.h index 2b1064dca5..aa32a81109 100644 --- a/include/llvm/CodeGen/MachineBasicBlock.h +++ b/include/llvm/CodeGen/MachineBasicBlock.h @@ -11,11 +11,13 @@ #include <vector> class BasicBlock; class MachineInstr; +template <typename T> struct ilist_traits; extern AnnotationID MCFBB_AID; class MachineBasicBlock : public Annotation { std::vector<MachineInstr*> Insts; + MachineBasicBlock *Prev, *Next; public: MachineBasicBlock() : Annotation(MCFBB_AID) {} ~MachineBasicBlock() {} @@ -70,6 +72,14 @@ public: Insts.pop_back(); return R; } + +private: // Methods used to maintain doubly linked list of blocks... + friend class ilist_traits<MachineBasicBlock>; + + MachineBasicBlock *getPrev() const { return Prev; } + MachineBasicBlock *getNext() const { return Next; } + void setPrev(MachineBasicBlock *P) { Prev = P; } + void setNext(MachineBasicBlock *N) { Next = N; } }; diff --git a/include/llvm/CodeGen/MachineFunction.h b/include/llvm/CodeGen/MachineFunction.h index 64cd4b5661..131b0359f7 100644 --- a/include/llvm/CodeGen/MachineFunction.h +++ b/include/llvm/CodeGen/MachineFunction.h @@ -12,7 +12,9 @@ #include "llvm/CodeGen/MachineBasicBlock.h" #include "Support/NonCopyable.h" #include "Support/HashExtras.h" -#include <Support/hash_set> +#include "Support/hash_set" +#include "Support/ilist" + class Value; class Function; class Constant; @@ -24,11 +26,14 @@ Pass *createMachineCodeConstructionPass(TargetMachine &Target); Pass *createMachineCodeDestructionPass(); class MachineFunction : private Annotation { - hash_set<const Constant*> constantsForConstPool; - hash_map<const Value*, int> offsets; - const Function* method; + const Function *method; + + // List of machine basic blocks in function + iplist<MachineBasicBlock> BasicBlocks; // FIXME: State should be held elsewhere... + hash_set<const Constant*> constantsForConstPool; + hash_map<const Value*, int> offsets; unsigned staticStackSize; unsigned automaticVarsSize; unsigned regSpillsSize; |