From 8e7ae9860bd1f29c95e4e10fe151a22aaafafef9 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 28 Oct 2002 02:08:43 +0000 Subject: [PATCH] Add BasicBlock list to MchineFunction that will eventually be the only way to access MachineBasicBlocks. For now, it is never filled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4324 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/MachineBasicBlock.h | 10 ++++++++++ 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 2b1064dca57..aa32a811098 100644 --- a/include/llvm/CodeGen/MachineBasicBlock.h +++ b/include/llvm/CodeGen/MachineBasicBlock.h @@ -11,11 +11,13 @@ #include class BasicBlock; class MachineInstr; +template struct ilist_traits; extern AnnotationID MCFBB_AID; class MachineBasicBlock : public Annotation { std::vector 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 *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 64cd4b56618..131b0359f76 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 +#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 constantsForConstPool; - hash_map offsets; - const Function* method; + const Function *method; + + // List of machine basic blocks in function + iplist BasicBlocks; // FIXME: State should be held elsewhere... + hash_set constantsForConstPool; + hash_map offsets; unsigned staticStackSize; unsigned automaticVarsSize; unsigned regSpillsSize; -- 2.34.1