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_CODEGEN_REGALLOCREGISTRY_H
     16 #define LLVM_CODEGEN_REGALLOCREGISTRY_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     Registry.Add(this);
     38   }
     39   ~RegisterRegAlloc() { Registry.Remove(this); }
     40 
     41   // Accessors.
     42   //
     43   RegisterRegAlloc *getNext() const {
     44     return (RegisterRegAlloc *)MachinePassRegistryNode::getNext();
     45   }
     46   static RegisterRegAlloc *getList() {
     47     return (RegisterRegAlloc *)Registry.getList();
     48   }
     49   static FunctionPassCtor getDefault() {
     50     return (FunctionPassCtor)Registry.getDefault();
     51   }
     52   static void setDefault(FunctionPassCtor C) {
     53     Registry.setDefault((MachinePassCtor)C);
     54   }
     55   static void setListener(MachinePassRegistryListener *L) {
     56     Registry.setListener(L);
     57   }
     58 };
     59 
     60 } // end namespace llvm
     61 
     62 
     63 #endif
     64