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