blob: 9f4ef1287803c43d13971f3762736b1c018a57cd [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
Jim Laskeyeb577ba2006-08-02 12:30:23 +000019
20/// Add - Adds a function pass to the registration list.
Jim Laskeyc6a0a112006-08-01 16:31:08 +000021///
Jim Laskeyeb577ba2006-08-02 12:30:23 +000022void MachinePassRegistry::Add(MachinePassRegistryNode *Node) {
23 Node->setNext(List);
24 List = Node;
25 if (Listener) Listener->NotifyAdd(Node->getName(),
26 Node->getCtor(),
27 Node->getDescription());
28}
Jim Laskeyc6a0a112006-08-01 16:31:08 +000029
30
Jim Laskeyeb577ba2006-08-02 12:30:23 +000031/// Remove - Removes a function pass from the registration list.
Jim Laskeyc6a0a112006-08-01 16:31:08 +000032///
Jim Laskeyeb577ba2006-08-02 12:30:23 +000033void MachinePassRegistry::Remove(MachinePassRegistryNode *Node) {
34 for (MachinePassRegistryNode **I = &List; *I; I = (*I)->getNextAddress()) {
35 if (*I == Node) {
36 if (Listener) Listener->NotifyRemove(Node->getName());
37 *I = (*I)->getNext();
38 break;
39 }
40 }
41}