| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- //===-- llvm/CodeGen/RegAllocRegistry.h -------------------------*- C++ -*-===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- //
- // This file contains the implementation for register allocator function
- // pass registry (RegisterRegAlloc).
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CODEGEN_REGALLOCREGISTRY_H
- #define LLVM_CODEGEN_REGALLOCREGISTRY_H
- #include "llvm/CodeGen/MachinePassRegistry.h"
- namespace llvm {
- //===----------------------------------------------------------------------===//
- ///
- /// RegisterRegAlloc class - Track the registration of register allocators.
- ///
- // //
- ///////////////////////////////////////////////////////////////////////////////
- class RegisterRegAlloc : public MachinePassRegistryNode {
- public:
- typedef FunctionPass *(*FunctionPassCtor)();
- static MachinePassRegistry Registry;
- RegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C)
- : MachinePassRegistryNode(N, D, (MachinePassCtor)C)
- {
- Registry.Add(this);
- }
- ~RegisterRegAlloc() { Registry.Remove(this); }
-
- // Accessors.
- //
- RegisterRegAlloc *getNext() const {
- return (RegisterRegAlloc *)MachinePassRegistryNode::getNext();
- }
- static RegisterRegAlloc *getList() {
- return (RegisterRegAlloc *)Registry.getList();
- }
- static FunctionPassCtor getDefault() {
- return (FunctionPassCtor)Registry.getDefault();
- }
- static void setDefault(FunctionPassCtor C) {
- Registry.setDefault((MachinePassCtor)C);
- }
- static void setListener(MachinePassRegistryListener *L) {
- Registry.setListener(L);
- }
-
- };
- } // end namespace llvm
- #endif
|