blob: 58e067bcb9b26704680489a7b84c0d03387dd56c [file] [log] [blame]
Jim Laskey9ff542f2006-08-01 18:29:48 +00001//===-- CodeGen/MachineInstr.cpp ------------------------------------------===//
Jim Laskeyc6a0a112006-08-01 16:31:08 +00002//
3// The LLVM Compiler Infrastructure
4//
Chris Lattner4ee451d2007-12-29 20:36:04 +00005// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
Jim Laskeyc6a0a112006-08-01 16:31:08 +00007//
8//===----------------------------------------------------------------------===//
Jim Laskey9ff542f2006-08-01 18:29:48 +00009//
10// This file contains the machine function pass registry for register allocators
11// and instruction schedulers.
12//
13//===----------------------------------------------------------------------===//
Jim Laskeyc6a0a112006-08-01 16:31:08 +000014
15#include "llvm/CodeGen/MachinePassRegistry.h"
Jim Laskeyc6a0a112006-08-01 16:31:08 +000016
17using namespace llvm;
18
David Blaikie2d24e2a2011-12-20 02:50:00 +000019void MachinePassRegistryListener::anchor() { }
Jim Laskeyeb577ba2006-08-02 12:30:23 +000020
21/// Add - Adds a function pass to the registration list.
Jim Laskeyc6a0a112006-08-01 16:31:08 +000022///
Jim Laskeyeb577ba2006-08-02 12:30:23 +000023void MachinePassRegistry::Add(MachinePassRegistryNode *Node) {
24 Node->setNext(List);
25 List = Node;
26 if (Listener) Listener->NotifyAdd(Node->getName(),
27 Node->getCtor(),
28 Node->getDescription());
29}
Jim Laskeyc6a0a112006-08-01 16:31:08 +000030
31
Jim Laskeyeb577ba2006-08-02 12:30:23 +000032/// Remove - Removes a function pass from the registration list.
Jim Laskeyc6a0a112006-08-01 16:31:08 +000033///
Jim Laskeyeb577ba2006-08-02 12:30:23 +000034void MachinePassRegistry::Remove(MachinePassRegistryNode *Node) {
35 for (MachinePassRegistryNode **I = &List; *I; I = (*I)->getNextAddress()) {
36 if (*I == Node) {
37 if (Listener) Listener->NotifyRemove(Node->getName());
38 *I = (*I)->getNext();
39 break;
40 }
41 }
42}