Line data Source code
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_CODEGEN_REGALLOCREGISTRY_H
16 : #define LLVM_CODEGEN_REGALLOCREGISTRY_H
17 :
18 : #include "llvm/CodeGen/MachinePassRegistry.h"
19 :
20 : namespace llvm {
21 :
22 : class FunctionPass;
23 :
24 : //===----------------------------------------------------------------------===//
25 : ///
26 : /// RegisterRegAlloc class - Track the registration of register allocators.
27 : ///
28 : //===----------------------------------------------------------------------===//
29 : class RegisterRegAlloc : public MachinePassRegistryNode {
30 : public:
31 : using FunctionPassCtor = FunctionPass *(*)();
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 : }
39 :
40 569680 : ~RegisterRegAlloc() { Registry.Remove(this); }
41 :
42 : // Accessors.
43 : RegisterRegAlloc *getNext() const {
44 455744 : return (RegisterRegAlloc *)MachinePassRegistryNode::getNext();
45 : }
46 :
47 : static RegisterRegAlloc *getList() {
48 113936 : return (RegisterRegAlloc *)Registry.getList();
49 : }
50 :
51 : static FunctionPassCtor getDefault() {
52 54582 : return (FunctionPassCtor)Registry.getDefault();
53 : }
54 :
55 : static void setDefault(FunctionPassCtor C) {
56 : Registry.setDefault((MachinePassCtor)C);
57 : }
58 :
59 : static void setListener(MachinePassRegistryListener *L) {
60 : Registry.setListener(L);
61 : }
62 : };
63 :
64 : } // end namespace llvm
65 :
66 : #endif // LLVM_CODEGEN_REGALLOCREGISTRY_H
|