-//===----------------------------------------------------------------------===//
-///
-/// RegisterRegAlloc class - Track the registration of register allocators.
-///
-//===----------------------------------------------------------------------===//
-class RegisterRegAlloc : public MachinePassRegistryNode<FunctionPass *(*)()> {
-
-public:
-
- typedef FunctionPass *(*FunctionPassCtor)();
-
- static MachinePassRegistry<FunctionPassCtor> Registry;
-
- RegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C)
- : MachinePassRegistryNode<FunctionPassCtor>(N, D, C)
- { Registry.Add(this); }
- ~RegisterRegAlloc() { Registry.Remove(this); }
-
-
- // Accessors.
- //
- RegisterRegAlloc *getNext() const {
- return (RegisterRegAlloc *)
- MachinePassRegistryNode<FunctionPassCtor>::getNext();
- }
- static RegisterRegAlloc *getList() {
- return (RegisterRegAlloc *)Registry.getList();
- }
- static FunctionPassCtor getDefault() {
- return Registry.getDefault();
- }
- static void setDefault(FunctionPassCtor C) {
- Registry.setDefault(C);
- }
- static void setListener(MachinePassRegistryListener *L) {
- Registry.setListener(L);
- }
-
-
- /// FirstCtor - Finds the first register allocator in registration
- /// list and returns its creator function, otherwise return NULL.
- static FunctionPassCtor FirstCtor() {
- MachinePassRegistryNode<FunctionPassCtor> *Node = Registry.getList();
- return Node ? Node->getCtor() : NULL;
- }
-
- /// FindCtor - Finds a register allocator in registration list and returns
- /// its creator function, otherwise return NULL.
- static FunctionPassCtor FindCtor(const char *N) {
- MachinePassRegistryNode<FunctionPassCtor> *Node = Registry.Find(N);
- return Node ? Node->getCtor() : NULL;
- }
-
-};
-
-
-//===----------------------------------------------------------------------===//
-///
-/// RegisterScheduler class - Track the registration of instruction schedulers.
-///
-//===----------------------------------------------------------------------===//
-
-class SelectionDAGISel;
-class ScheduleDAG;
-class SelectionDAG;
-class MachineBasicBlock;
-
-class RegisterScheduler : public
- MachinePassRegistryNode<
- ScheduleDAG *(*)(SelectionDAGISel*, SelectionDAG*, MachineBasicBlock*)> {
-
-public:
-
- typedef ScheduleDAG *(*FunctionPassCtor)(SelectionDAGISel*, SelectionDAG*,
- MachineBasicBlock*);
-
- static MachinePassRegistry<FunctionPassCtor> Registry;
-
- RegisterScheduler(const char *N, const char *D, FunctionPassCtor C)
- : MachinePassRegistryNode<FunctionPassCtor>(N, D, C)
- { Registry.Add(this); }
- ~RegisterScheduler() { Registry.Remove(this); }
-
-
- // Accessors.
- //
- RegisterScheduler *getNext() const {
- return (RegisterScheduler *)
- MachinePassRegistryNode<FunctionPassCtor>::getNext();
- }
- static RegisterScheduler *getList() {
- return (RegisterScheduler *)Registry.getList();
- }
- static FunctionPassCtor getDefault() {
- return Registry.getDefault();
- }
- static void setDefault(FunctionPassCtor C) {
- Registry.setDefault(C);
- }
- static void setListener(MachinePassRegistryListener *L) {
- Registry.setListener(L);
- }
-
-
- /// FirstCtor - Finds the first instruction scheduler in registration
- /// list and returns its creator function, otherwise return NULL.
- static FunctionPassCtor FirstCtor() {
- MachinePassRegistryNode<FunctionPassCtor> *Node = Registry.getList();
- return Node ? Node->getCtor() : NULL;
- }
-
-
- /// FindCtor - Finds a instruction scheduler in registration list and returns
- /// its creator function, otherwise return NULL.
- static FunctionPassCtor FindCtor(const char *N) {
- MachinePassRegistryNode<FunctionPassCtor> *Node = Registry.Find(N);
- return Node ? Node->getCtor() : NULL;
- }
-
-};
-
-