Home | History | Annotate | Download | only in CodeGen
      1 //===-- llvm/CodeGen/RegAllocRegistry.h -------------------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file contains the implementation for register allocator function
     11 // pass registry (RegisterRegAlloc).
     12 //
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef LLVM_CODEGENREGALLOCREGISTRY_H
     16 #define LLVM_CODEGENREGALLOCREGISTRY_H
     17 
     18 #include "llvm/CodeGen/MachinePassRegistry.h"
     19 
     20 namespace llvm {
     21 
     22 //===----------------------------------------------------------------------===//
     23 ///
     24 /// RegisterRegAlloc class - Track the registration of register allocators.
     25 ///
     26 //===----------------------------------------------------------------------===//
     27 class RegisterRegAlloc : public MachinePassRegistryNode {
     28 
     29 public:
     30 
     31   typedef FunctionPass *(*FunctionPassCtor)();
     32 
     33   static MachinePassRegistry Registry;
     34 
     35   RegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C)
     36   : MachinePassRegistryNode(N, D, (MachinePassCtor)C)
     37   {
     38      Registry.Add(this);
     39   }
     40   ~RegisterRegAlloc() { Registry.Remove(this); }
     41 
     42 
     43   // Accessors.
     44   //
     45   RegisterRegAlloc *getNext() const {
     46     return (RegisterRegAlloc *)MachinePassRegistryNode::getNext();
     47   }
     48   static RegisterRegAlloc *getList() {
     49     return (RegisterRegAlloc *)Registry.getList();
     50   }
     51   static FunctionPassCtor getDefault() {
     52     return (FunctionPassCtor)Registry.getDefault();
     53   }
     54   static void setDefault(FunctionPassCtor C) {
     55     Registry.setDefault((MachinePassCtor)C);
     56   }
     57   static void setListener(MachinePassRegistryListener *L) {
     58     Registry.setListener(L);
     59   }
     60 
     61 };
     62 
     63 } // end namespace llvm
     64 
     65 
     66 #endif
     67