Line data Source code
1 : //===-- CodeGen/MachineInstr.cpp ------------------------------------------===//
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 machine function pass registry for register allocators
11 : // and instruction schedulers.
12 : //
13 : //===----------------------------------------------------------------------===//
14 :
15 : #include "llvm/CodeGen/MachinePassRegistry.h"
16 :
17 : using namespace llvm;
18 :
19 0 : void MachinePassRegistryListener::anchor() { }
20 :
21 : /// setDefault - Set the default constructor by name.
22 0 : void MachinePassRegistry::setDefault(StringRef Name) {
23 : MachinePassCtor Ctor = nullptr;
24 0 : for(MachinePassRegistryNode *R = getList(); R; R = R->getNext()) {
25 : if (R->getName() == Name) {
26 0 : Ctor = R->getCtor();
27 0 : break;
28 : }
29 : }
30 : assert(Ctor && "Unregistered pass name");
31 : setDefault(Ctor);
32 0 : }
33 :
34 : /// Add - Adds a function pass to the registration list.
35 : ///
36 2734464 : void MachinePassRegistry::Add(MachinePassRegistryNode *Node) {
37 2734464 : Node->setNext(List);
38 2734464 : List = Node;
39 2734464 : if (Listener) Listener->NotifyAdd(Node->getName(),
40 : Node->getCtor(),
41 1481168 : Node->getDescription());
42 2734464 : }
43 :
44 :
45 : /// Remove - Removes a function pass from the registration list.
46 : ///
47 2734464 : void MachinePassRegistry::Remove(MachinePassRegistryNode *Node) {
48 2734464 : for (MachinePassRegistryNode **I = &List; *I; I = (*I)->getNextAddress()) {
49 2734464 : if (*I == Node) {
50 2734464 : if (Listener) Listener->NotifyRemove(Node->getName());
51 2734464 : *I = (*I)->getNext();
52 2734464 : break;
53 : }
54 : }
55 2734464 : }
|