RegAllocRegistry.h revision 193323
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 20namespace llvm { 21 22//===----------------------------------------------------------------------===// 23/// 24/// RegisterRegAlloc class - Track the registration of register allocators. 25/// 26//===----------------------------------------------------------------------===// 27class RegisterRegAlloc : public MachinePassRegistryNode { 28 29public: 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 ~RegisterRegAlloc() { Registry.Remove(this); } 39 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 61} // end namespace llvm 62 63 64#endif 65