1
//===-- llvm/CodeGen/RegAllocRegistry.h -------------------------*- C++ -*-===//
3
// The LLVM Compiler Infrastructure
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
8
//===----------------------------------------------------------------------===//
10
// This file contains the implementation for register allocator function
11
// pass registry (RegisterRegAlloc).
13
//===----------------------------------------------------------------------===//
15
#ifndef LLVM_CODEGENREGALLOCREGISTRY_H
16
#define LLVM_CODEGENREGALLOCREGISTRY_H
18
#include "llvm/CodeGen/MachinePassRegistry.h"
22
//===----------------------------------------------------------------------===//
24
/// RegisterRegAlloc class - Track the registration of register allocators.
26
//===----------------------------------------------------------------------===//
27
class RegisterRegAlloc : public MachinePassRegistryNode {
31
typedef FunctionPass *(*FunctionPassCtor)();
33
static MachinePassRegistry Registry;
35
RegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C)
36
: MachinePassRegistryNode(N, D, (MachinePassCtor)C)
40
~RegisterRegAlloc() { Registry.Remove(this); }
45
RegisterRegAlloc *getNext() const {
46
return (RegisterRegAlloc *)MachinePassRegistryNode::getNext();
48
static RegisterRegAlloc *getList() {
49
return (RegisterRegAlloc *)Registry.getList();
51
static FunctionPassCtor getDefault() {
52
return (FunctionPassCtor)Registry.getDefault();
54
static void setDefault(FunctionPassCtor C) {
55
Registry.setDefault((MachinePassCtor)C);
57
static void setListener(MachinePassRegistryListener *L) {
58
Registry.setListener(L);
63
} // end namespace llvm