1193323Sed//===-- llvm/CodeGen/RegAllocRegistry.h -------------------------*- C++ -*-===// 2193323Sed// 3193323Sed// The LLVM Compiler Infrastructure 4193323Sed// 5193323Sed// This file is distributed under the University of Illinois Open Source 6193323Sed// License. See LICENSE.TXT for details. 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed// 10193323Sed// This file contains the implementation for register allocator function 11193323Sed// pass registry (RegisterRegAlloc). 12193323Sed// 13193323Sed//===----------------------------------------------------------------------===// 14193323Sed 15249423Sdim#ifndef LLVM_CODEGEN_REGALLOCREGISTRY_H 16249423Sdim#define LLVM_CODEGEN_REGALLOCREGISTRY_H 17193323Sed 18193323Sed#include "llvm/CodeGen/MachinePassRegistry.h" 19193323Sed 20193323Sednamespace llvm { 21193323Sed 22193323Sed//===----------------------------------------------------------------------===// 23193323Sed/// 24193323Sed/// RegisterRegAlloc class - Track the registration of register allocators. 25193323Sed/// 26193323Sed//===----------------------------------------------------------------------===// 27193323Sedclass RegisterRegAlloc : public MachinePassRegistryNode { 28193323Sed 29193323Sedpublic: 30193323Sed 31193323Sed typedef FunctionPass *(*FunctionPassCtor)(); 32193323Sed 33193323Sed static MachinePassRegistry Registry; 34193323Sed 35193323Sed RegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C) 36193323Sed : MachinePassRegistryNode(N, D, (MachinePassCtor)C) 37198090Srdivacky { 38198090Srdivacky Registry.Add(this); 39198090Srdivacky } 40193323Sed ~RegisterRegAlloc() { Registry.Remove(this); } 41193323Sed 42193323Sed 43193323Sed // Accessors. 44193323Sed // 45193323Sed RegisterRegAlloc *getNext() const { 46193323Sed return (RegisterRegAlloc *)MachinePassRegistryNode::getNext(); 47193323Sed } 48193323Sed static RegisterRegAlloc *getList() { 49193323Sed return (RegisterRegAlloc *)Registry.getList(); 50193323Sed } 51193323Sed static FunctionPassCtor getDefault() { 52193323Sed return (FunctionPassCtor)Registry.getDefault(); 53193323Sed } 54193323Sed static void setDefault(FunctionPassCtor C) { 55193323Sed Registry.setDefault((MachinePassCtor)C); 56193323Sed } 57193323Sed static void setListener(MachinePassRegistryListener *L) { 58193323Sed Registry.setListener(L); 59193323Sed } 60193323Sed 61193323Sed}; 62193323Sed 63193323Sed} // end namespace llvm 64193323Sed 65193323Sed 66193323Sed#endif 67